From f3801f2bac0a9342eae97c03b09953b2d6d94f2a Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Sat, 21 Feb 2026 14:29:41 +0530 Subject: [PATCH 01/21] "arb contracts" --- packages/arbitrum-contracts/.env.example | 9 + packages/arbitrum-contracts/.gitignore | 29 + packages/arbitrum-contracts/README.md | 135 +++ .../contracts/core/AttestationRegistry.sol | 77 ++ .../contracts/core/ComplianceModule.sol | 53 ++ .../contracts/core/IdentityRegistry.sol | 75 ++ .../contracts/core/PrivateAssetToken.sol | 195 ++++ .../contracts/core/RWAToken.sol | 63 ++ .../contracts/core/SeniorPool.sol | 324 +++++++ .../contracts/core/SolvencyVault.sol | 840 ++++++++++++++++++ .../contracts/core/StARBLeverageVault.sol | 631 +++++++++++++ .../contracts/core/TokenFactory.sol | 188 ++++ .../contracts/core/TrustedIssuersRegistry.sol | 33 + .../contracts/core/YieldVault.sol | 235 +++++ .../integrations/ArbitrumSwapIntegration.sol | 247 +++++ .../contracts/integrations/OAID.sol | 542 +++++++++++ .../contracts/libraries/MerkleProof.sol | 6 + .../libraries/SignatureVerification.sol | 6 + .../contracts/marketplace/PrimaryMarket.sol | 244 +++++ .../contracts/marketplace/SecondaryMarket.sol | 259 ++++++ .../contracts/test/MockArbitrumDEX.sol | 252 ++++++ .../contracts/test/MockStARB.sol | 55 ++ .../contracts/test/MockUSDC.sol | 30 + .../deployed_contracts_arbitrum.json | 21 + packages/arbitrum-contracts/hardhat.config.ts | 32 + packages/arbitrum-contracts/package.json | 39 + .../scripts/deploy/deploy_arbitrum.ts | 228 +++++ packages/arbitrum-contracts/tsconfig.json | 17 + 28 files changed, 4865 insertions(+) create mode 100644 packages/arbitrum-contracts/.env.example create mode 100644 packages/arbitrum-contracts/.gitignore create mode 100644 packages/arbitrum-contracts/README.md create mode 100644 packages/arbitrum-contracts/contracts/core/AttestationRegistry.sol create mode 100644 packages/arbitrum-contracts/contracts/core/ComplianceModule.sol create mode 100644 packages/arbitrum-contracts/contracts/core/IdentityRegistry.sol create mode 100644 packages/arbitrum-contracts/contracts/core/PrivateAssetToken.sol create mode 100644 packages/arbitrum-contracts/contracts/core/RWAToken.sol create mode 100644 packages/arbitrum-contracts/contracts/core/SeniorPool.sol create mode 100644 packages/arbitrum-contracts/contracts/core/SolvencyVault.sol create mode 100644 packages/arbitrum-contracts/contracts/core/StARBLeverageVault.sol create mode 100644 packages/arbitrum-contracts/contracts/core/TokenFactory.sol create mode 100644 packages/arbitrum-contracts/contracts/core/TrustedIssuersRegistry.sol create mode 100644 packages/arbitrum-contracts/contracts/core/YieldVault.sol create mode 100644 packages/arbitrum-contracts/contracts/integrations/ArbitrumSwapIntegration.sol create mode 100644 packages/arbitrum-contracts/contracts/integrations/OAID.sol create mode 100644 packages/arbitrum-contracts/contracts/libraries/MerkleProof.sol create mode 100644 packages/arbitrum-contracts/contracts/libraries/SignatureVerification.sol create mode 100644 packages/arbitrum-contracts/contracts/marketplace/PrimaryMarket.sol create mode 100644 packages/arbitrum-contracts/contracts/marketplace/SecondaryMarket.sol create mode 100644 packages/arbitrum-contracts/contracts/test/MockArbitrumDEX.sol create mode 100644 packages/arbitrum-contracts/contracts/test/MockStARB.sol create mode 100644 packages/arbitrum-contracts/contracts/test/MockUSDC.sol create mode 100644 packages/arbitrum-contracts/deployed_contracts_arbitrum.json create mode 100644 packages/arbitrum-contracts/hardhat.config.ts create mode 100644 packages/arbitrum-contracts/package.json create mode 100644 packages/arbitrum-contracts/scripts/deploy/deploy_arbitrum.ts create mode 100644 packages/arbitrum-contracts/tsconfig.json diff --git a/packages/arbitrum-contracts/.env.example b/packages/arbitrum-contracts/.env.example new file mode 100644 index 00000000..5c64d5cd --- /dev/null +++ b/packages/arbitrum-contracts/.env.example @@ -0,0 +1,9 @@ +# Admin wallet private key for deployments +ADMIN_PRIVATE_KEY=your_private_key_here + +# RPC URLs (optional - defaults are in hardhat.config.ts) +ARBITRUM_SEPOLIA_RPC=https://sepolia-rollup.arbitrum.io/rpc +ARBITRUM_MAINNET_RPC=https://arb1.arbitrum.io/rpc + +# Etherscan API key for verification +ARBISCAN_API_KEY=your_arbiscan_api_key_here diff --git a/packages/arbitrum-contracts/.gitignore b/packages/arbitrum-contracts/.gitignore new file mode 100644 index 00000000..e3511ef2 --- /dev/null +++ b/packages/arbitrum-contracts/.gitignore @@ -0,0 +1,29 @@ +node_modules +.env +artifacts +cache +typechain-types +coverage +coverage.json +dist + +# Hardhat files +cache +artifacts + +# TypeChain +typechain +typechain-types + +# solidity-coverage +coverage +coverage.json +.coverage_artifacts +.coverage_cache +.coverage_contracts + +# Hardhat Ignition +ignition/deployments/chain-* + +# VS Code +.vscode diff --git a/packages/arbitrum-contracts/README.md b/packages/arbitrum-contracts/README.md new file mode 100644 index 00000000..faf2c622 --- /dev/null +++ b/packages/arbitrum-contracts/README.md @@ -0,0 +1,135 @@ +# Arbitrum Contracts + +This package contains the Arbitrum-specific smart contracts for the Open Assets RWA platform, featuring stARB-based leverage functionality. + +## Overview + +The Arbitrum contracts package is a parallel implementation of the leverage system using **stARB** (Staked ARB) as collateral instead of mETH. The architecture mirrors the Mantle implementation exactly, with only token names and chain-specific configurations changed. + +### Key Contracts + +#### Arbitrum-Specific Contracts + +- **MockStARB.sol** - Simulated liquid staked ARB token for demo/testing +- **MockArbitrumDEX.sol** - Mock AMM for stARB ↔ USDC swaps +- **ArbitrumSwapIntegration.sol** - Slippage-protected swap wrapper +- **StARBLeverageVault.sol** - Core leverage vault using stARB collateral + +#### Shared Platform Contracts + +- **SeniorPool.sol** - USDC lending pool (chain-agnostic) +- **AttestationRegistry.sol** - Asset attestation system +- **IdentityRegistry.sol** - On-chain KYC/identity management +- **TokenFactory.sol** - RWA token deployment +- **YieldVault.sol** - Yield distribution system +- **PrimaryMarket.sol** - Initial token offerings +- **SecondaryMarket.sol** - P2P trading +- **OAID.sol** - On-chain identity credentials + +## Architecture + +### stARB Leverage System Flow + +1. **Collateral Deposit**: User deposits stARB (150% LTV requirement) +2. **Borrowing**: Vault borrows USDC from SeniorPool +3. **RWA Purchase**: USDC used to buy RWA tokens +4. **Yield Harvesting**: stARB appreciation is periodically harvested and swapped to USDC to pay loan interest +5. **Settlement**: Upon RWA asset maturity or liquidation, waterfall distribution occurs + +### Health Monitoring + +- **Liquidation Threshold**: 115% collateral ratio +- **Initial LTV**: 150% over-collateralization +- **Liquidation Fee**: 10% on excess after debt repayment + +## Development + +### Prerequisites + +```bash +# Install dependencies +bun install +``` + +### Compile Contracts + +```bash +bun run generate:types +``` + +### Deploy to Arbitrum Sepolia + +```bash +# Set environment variables in .env +ADMIN_PRIVATE_KEY=your_private_key + +# Deploy +bun hardhat run scripts/deploy/deploy_arbitrum.ts --network arbitrumSepolia +``` + +### Deploy to Arbitrum Mainnet + +```bash +bun hardhat run scripts/deploy/deploy_arbitrum.ts --network arbitrum +``` + +## Network Configuration + +### Arbitrum Sepolia Testnet + +- **Chain ID**: 421614 +- **RPC URL**: https://sepolia-rollup.arbitrum.io/rpc +- **Block Explorer**: https://sepolia.arbiscan.io + +### Arbitrum One Mainnet + +- **Chain ID**: 42161 +- **RPC URL**: https://arb1.arbitrum.io/rpc +- **Block Explorer**: https://arbiscan.io + +## Contract Addresses + +After deployment, all contract addresses are saved to `deployed_contracts_arbitrum.json`. + +## Key Differences from Mantle + +| Aspect | Mantle | Arbitrum | +|--------|--------|----------| +| Collateral Token | mETH | stARB | +| Yield Source | Mantle staking rewards | ARB sequencer fee distribution | +| Expected APY | ~4-6% | ~8% | +| DEX Contract | MockFluxionDEX | MockArbitrumDEX | +| Integration | FluxionIntegration | ArbitrumSwapIntegration | +| Vault Contract | LeverageVault | StARBLeverageVault | + +## Testing + +The contracts use the same testing patterns as the Mantle implementation. Mock tokens allow easy testing without real asset acquisition. + +### Test Flow + +1. Mint MockStARB tokens +2. Create leverage position +3. Simulate price movements +4. Execute harvest +5. Test liquidation scenarios + +## Security Considerations + +- All price data comes from backend (off-chain oracle) +- 3% maximum slippage protection on swaps +- Emergency pause functionality on swap integrations +- Non-reentrant modifiers on all state-changing functions +- 150% over-collateralization requirement + +## Integration with Backend + +The backend's `BlockchainModule` conditionally loads Arbitrum providers when `NETWORK_TYPE=arbitrum`: + +- `StArbPriceService` - Historical ARB/USD price tracking +- `ArbitrumDEXService` - DEX interaction layer +- `LeverageBlockchainService` - Position management (network-agnostic) + +## License + +MIT diff --git a/packages/arbitrum-contracts/contracts/core/AttestationRegistry.sol b/packages/arbitrum-contracts/contracts/core/AttestationRegistry.sol new file mode 100644 index 00000000..2648f63f --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/AttestationRegistry.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; + +contract AttestationRegistry { + using ECDSA for bytes32; + + struct AssetRecord { + bytes32 assetId; + bytes32 attestationHash; + bytes32 blobId; + address attestor; + uint48 timestamp; + bool revoked; + } + + mapping(bytes32 => AssetRecord) public assets; + mapping(address => bool) public trustedAttestors; + address public owner; + + event AssetRegistered(bytes32 indexed assetId, bytes32 blobId, bytes32 attestationHash, address attestor); + event AssetRevoked(bytes32 indexed assetId, string reason, uint256 timestamp); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor() { + owner = msg.sender; + trustedAttestors[msg.sender] = true; + } + + function addTrustedAttestor(address attestor) external onlyOwner { + trustedAttestors[attestor] = true; + } + + function registerAsset( + bytes32 assetId, + bytes32 attestationHash, + bytes32 blobId, + bytes calldata payload, + bytes calldata signature + ) external { + require(assets[assetId].timestamp == 0, "Asset already registered"); + require(keccak256(payload) == attestationHash, "Payload hash mismatch"); + + // Recover signer from hash + bytes32 ethSignedHash = MessageHashUtils.toEthSignedMessageHash(attestationHash); + address recovered = ECDSA.recover(ethSignedHash, signature); + + require(trustedAttestors[recovered], "Invalid attestor signature"); + + assets[assetId] = AssetRecord({ + assetId: assetId, + attestationHash: attestationHash, + blobId: blobId, + attestor: recovered, + timestamp: uint48(block.timestamp), + revoked: false + }); + + emit AssetRegistered(assetId, blobId, attestationHash, recovered); + } + + function revokeAsset(bytes32 assetId, string calldata reason) external onlyOwner { + require(assets[assetId].timestamp > 0, "Asset not found"); + assets[assetId].revoked = true; + emit AssetRevoked(assetId, reason, block.timestamp); + } + + function isAssetValid(bytes32 assetId) external view returns (bool) { + return assets[assetId].timestamp > 0 && !assets[assetId].revoked; + } +} diff --git a/packages/arbitrum-contracts/contracts/core/ComplianceModule.sol b/packages/arbitrum-contracts/contracts/core/ComplianceModule.sol new file mode 100644 index 00000000..6e133c33 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/ComplianceModule.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./IdentityRegistry.sol"; +import "./AttestationRegistry.sol"; + +contract ComplianceModule { + IdentityRegistry public identityRegistry; + AttestationRegistry public attestationRegistry; + bytes32 public assetId; + address public owner; + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor( + address _identityRegistry, + address _attestationRegistry, + bytes32 _assetId + ) { + owner = msg.sender; + identityRegistry = IdentityRegistry(_identityRegistry); + attestationRegistry = AttestationRegistry(_attestationRegistry); + assetId = _assetId; + } + + function canTransfer(address from, address to, uint256 /* amount */) external view returns (bool) { + // 1. Check Sender KYC (unless minting/burning) + if (from != address(0)) { + if (!identityRegistry.isVerified(from)) return false; + } + + // 2. Check Receiver KYC (unless burning) + if (to != address(0)) { + if (!identityRegistry.isVerified(to)) return false; + } + + // 3. Check Asset Validity + if (!attestationRegistry.isAssetValid(assetId)) return false; + + return true; + } + + function setIdentityRegistry(address _identityRegistry) external onlyOwner { + identityRegistry = IdentityRegistry(_identityRegistry); + } + + function setAttestationRegistry(address _attestationRegistry) external onlyOwner { + attestationRegistry = AttestationRegistry(_attestationRegistry); + } +} diff --git a/packages/arbitrum-contracts/contracts/core/IdentityRegistry.sol b/packages/arbitrum-contracts/contracts/core/IdentityRegistry.sol new file mode 100644 index 00000000..d103d350 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/IdentityRegistry.sol @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./TrustedIssuersRegistry.sol"; + +contract IdentityRegistry { + struct Identity { + bool exists; + bool isVerified; + uint256 kycTimestamp; + address wallet; + } + + mapping(address => Identity) public identities; + TrustedIssuersRegistry public trustedIssuersRegistry; + address public owner; + + event IdentityRegistered(address indexed wallet, uint256 timestamp); + event IdentityRemoved(address indexed wallet, uint256 timestamp); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + modifier onlyTrustedIssuer() { + require(trustedIssuersRegistry.isTrustedIssuer(msg.sender) || msg.sender == owner, "Only trusted issuer"); + _; + } + + constructor(address _trustedIssuersRegistry) { + owner = msg.sender; + trustedIssuersRegistry = TrustedIssuersRegistry(_trustedIssuersRegistry); + } + + function updateTrustedIssuersRegistry(address _newRegistry) external onlyOwner { + trustedIssuersRegistry = TrustedIssuersRegistry(_newRegistry); + } + + function registerIdentity(address wallet) external onlyTrustedIssuer { + identities[wallet] = Identity({ + exists: true, + isVerified: true, + kycTimestamp: block.timestamp, + wallet: wallet + }); + emit IdentityRegistered(wallet, block.timestamp); + } + + function removeIdentity(address wallet) external onlyTrustedIssuer { + require(identities[wallet].exists, "Identity does not exist"); + identities[wallet].isVerified = false; + emit IdentityRemoved(wallet, block.timestamp); + } + + function batchRegisterIdentity(address[] calldata wallets) external onlyTrustedIssuer { + for (uint256 i = 0; i < wallets.length; i++) { + identities[wallets[i]] = Identity({ + exists: true, + isVerified: true, + kycTimestamp: block.timestamp, + wallet: wallets[i] + }); + emit IdentityRegistered(wallets[i], block.timestamp); + } + } + + function isVerified(address wallet) external view returns (bool) { + return identities[wallet].isVerified; + } + + function getIdentity(address wallet) external view returns (Identity memory) { + return identities[wallet]; + } +} diff --git a/packages/arbitrum-contracts/contracts/core/PrivateAssetToken.sol b/packages/arbitrum-contracts/contracts/core/PrivateAssetToken.sol new file mode 100644 index 00000000..0f25e4d6 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/PrivateAssetToken.sol @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./RWAToken.sol"; + +/** + * @title PrivateAssetToken + * @notice ERC-20 token representing physical/private assets (deeds, bonds, invoices, equipment) + * @dev Extends RWAToken with additional metadata for private asset tracking + * + * Features: + * - Inherits compliance and KYC from RWAToken + * - Additional metadata: asset type, location, valuation, documents + * - Platform mints 1 token = 1 physical asset + * - Admin can update valuation with timestamp + * - Document hash for off-chain verification (IPFS) + */ +contract PrivateAssetToken is RWAToken { + // Asset metadata + struct AssetMetadata { + string assetType; // "DEED", "BOND", "INVOICE", "EQUIPMENT", etc. + string location; // Physical location/jurisdiction + uint256 valuation; // USD value (6 decimals, e.g., 50000000000 = $50k) + uint256 valuationDate; // Timestamp of last valuation + string documentHash; // IPFS hash for legal documents + bool isActive; // Asset status + } + + AssetMetadata public metadata; + + // Valuation history + struct ValuationRecord { + uint256 valuation; + uint256 timestamp; + address updatedBy; + } + + ValuationRecord[] public valuationHistory; + + // Events + event MetadataUpdated( + string assetType, + string location, + string documentHash + ); + event ValuationUpdated( + uint256 oldValuation, + uint256 newValuation, + uint256 timestamp, + address updatedBy + ); + event AssetStatusChanged(bool isActive); + + /** + * @notice Deploy PrivateAssetToken + * @param _assetId Unique asset identifier (bytes32) + * @param _compliance ComplianceModule address + * @param _identityRegistry IdentityRegistry address + * @param _totalSupply Total token supply (usually 1e18 for whole asset) + * @param _platformCustody Platform custody address + * @param _name Token name (e.g., "Property Deed #123") + * @param _symbol Token symbol (e.g., "DEED123") + * @param _issuer Issuer address + * @param _assetType Asset type string + * @param _location Physical location + * @param _valuation Initial USD valuation (6 decimals) + * @param _documentHash IPFS hash + */ + constructor( + bytes32 _assetId, + address _compliance, + address _identityRegistry, + uint256 _totalSupply, + address _platformCustody, + string memory _name, + string memory _symbol, + address _issuer, + string memory _assetType, + string memory _location, + uint256 _valuation, + string memory _documentHash + ) RWAToken( + _assetId, + _compliance, + _identityRegistry, + _totalSupply, + _platformCustody, + _name, + _symbol, + _issuer + ) { + require(_valuation > 0, "Valuation must be > 0"); + + metadata = AssetMetadata({ + assetType: _assetType, + location: _location, + valuation: _valuation, + valuationDate: block.timestamp, + documentHash: _documentHash, + isActive: true + }); + + // Record initial valuation + valuationHistory.push(ValuationRecord({ + valuation: _valuation, + timestamp: block.timestamp, + updatedBy: msg.sender + })); + + emit MetadataUpdated(_assetType, _location, _documentHash); + emit ValuationUpdated(0, _valuation, block.timestamp, msg.sender); + } + + /** + * @notice Update asset metadata + * @param _assetType New asset type + * @param _location New location + * @param _documentHash New document hash + */ + function updateMetadata( + string memory _assetType, + string memory _location, + string memory _documentHash + ) external onlyOwner { + metadata.assetType = _assetType; + metadata.location = _location; + metadata.documentHash = _documentHash; + + emit MetadataUpdated(_assetType, _location, _documentHash); + } + + /** + * @notice Update asset valuation + * @param _newValuation New USD valuation (6 decimals) + */ + function updateValuation(uint256 _newValuation) external onlyOwner { + require(_newValuation > 0, "Valuation must be > 0"); + + uint256 oldValuation = metadata.valuation; + metadata.valuation = _newValuation; + metadata.valuationDate = block.timestamp; + + // Record in history + valuationHistory.push(ValuationRecord({ + valuation: _newValuation, + timestamp: block.timestamp, + updatedBy: msg.sender + })); + + emit ValuationUpdated(oldValuation, _newValuation, block.timestamp, msg.sender); + } + + /** + * @notice Set asset active status + * @param _isActive New status + */ + function setActive(bool _isActive) external onlyOwner { + metadata.isActive = _isActive; + emit AssetStatusChanged(_isActive); + } + + /** + * @notice Get current valuation + * @return Valuation in USD (6 decimals) + */ + function getValuation() external view returns (uint256) { + return metadata.valuation; + } + + /** + * @notice Get valuation history count + * @return Number of valuation updates + */ + function getValuationHistoryCount() external view returns (uint256) { + return valuationHistory.length; + } + + /** + * @notice Get valuation record by index + * @param index History index + * @return ValuationRecord struct + */ + function getValuationRecord(uint256 index) external view returns (ValuationRecord memory) { + require(index < valuationHistory.length, "Index out of bounds"); + return valuationHistory[index]; + } + + /** + * @notice Get complete asset metadata + * @return AssetMetadata struct + */ + function getMetadata() external view returns (AssetMetadata memory) { + return metadata; + } +} diff --git a/packages/arbitrum-contracts/contracts/core/RWAToken.sol b/packages/arbitrum-contracts/contracts/core/RWAToken.sol new file mode 100644 index 00000000..9f5585c7 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/RWAToken.sol @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; +import "./ComplianceModule.sol"; + +contract RWAToken is ERC20, ERC20Burnable { + bytes32 public assetId; + ComplianceModule public compliance; + address public identityRegistry; + address public issuer; + address public owner; + bool public paused; + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + modifier whenNotPaused() { + require(!paused, "Token paused"); + _; + } + + constructor( + bytes32 _assetId, + address _compliance, + address _identityRegistry, + uint256 _totalSupply, + address _platformCustody, + string memory _name, + string memory _symbol, + address _issuer + ) ERC20(_name, _symbol) { + owner = msg.sender; + assetId = _assetId; + compliance = ComplianceModule(_compliance); + identityRegistry = _identityRegistry; + issuer = _issuer; + + _mint(_platformCustody, _totalSupply); + } + + function _update(address from, address to, uint256 amount) internal virtual override { + if (!paused && from != address(0) && to != address(0)) { + require(compliance.canTransfer(from, to, amount), "Compliance check failed"); + } + super._update(from, to, amount); + } + + function forcedTransfer(address from, address to, uint256 amount) external onlyOwner { + _transfer(from, to, amount); + } + + function setPaused(bool _paused) external onlyOwner { + paused = _paused; + } + + function setCompliance(address _compliance) external onlyOwner { + compliance = ComplianceModule(_compliance); + } +} diff --git a/packages/arbitrum-contracts/contracts/core/SeniorPool.sol b/packages/arbitrum-contracts/contracts/core/SeniorPool.sol new file mode 100644 index 00000000..89edeb75 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/SeniorPool.sol @@ -0,0 +1,324 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +/** + * @title SeniorPool + * @notice USDC lending pool for leverage positions at 5% APR + * @dev Provides USDC loans to LeverageVault for investor leverage purchases + * + * Features: + * - USDC deposits from liquidity providers + * - Loans with 5% APR interest accrual + * - Liquidity reserve requirements (20-30%) + * - Debt ceiling per position ($100k max) + * - Interest compounding for demo mode + */ +contract SeniorPool is Ownable, ReentrancyGuard { + IERC20 public usdc; + address public leverageVault; + address public solvencyVault; + + // Pool parameters + uint256 public constant APR = 500; // 5% APR (basis points) + uint256 public constant BASIS_POINTS = 10000; + uint256 public constant DEBT_CEILING = 100_000 * 1e6; // $100k per position (USDC 6 decimals) + uint256 public constant RESERVE_RATIO = 2000; // 20% reserve requirement (basis points) + + // Pool state + uint256 public totalLiquidity; // Total USDC deposited + uint256 public totalBorrowed; // Total USDC currently borrowed + uint256 public totalInterestEarned; // Cumulative interest earned + + // Loan tracking + struct Loan { + uint256 principal; // Original loan amount + uint256 interestAccrued; // Accumulated interest + uint256 lastUpdateTime; // Last interest calculation timestamp + bool active; // Loan status + } + + mapping(uint256 => Loan) public loans; // positionId => Loan + + // Demo mode for accelerated time + bool public demoMode; + uint256 public timeMultiplier; // e.g., 360 for 360x acceleration + + // Events + event LiquidityDeposited(address indexed depositor, uint256 amount); + event LiquidityWithdrawn(address indexed withdrawer, uint256 amount); + event LoanIssued(uint256 indexed positionId, uint256 amount); + event LoanRepaid(uint256 indexed positionId, uint256 principal, uint256 interest); + event InterestAccrued(uint256 indexed positionId, uint256 interest); + event DemoModeUpdated(bool enabled, uint256 multiplier); + + modifier onlyAuthorizedVault() { + require( + msg.sender == leverageVault || msg.sender == solvencyVault, + "Only authorized vault" + ); + _; + } + + /** + * @notice Initialize Senior Pool + * @param _usdc USDC token address + */ + constructor(address _usdc) Ownable(msg.sender) { + usdc = IERC20(_usdc); + demoMode = false; + timeMultiplier = 1; + } + + /** + * @notice Set LeverageVault address (one-time) + * @param _leverageVault LeverageVault contract address + */ + function setLeverageVault(address _leverageVault) external onlyOwner { + require(leverageVault == address(0), "LeverageVault already set"); + require(_leverageVault != address(0), "Invalid address"); + leverageVault = _leverageVault; + } + + /** + * @notice Set SolvencyVault address (one-time) + * @param _solvencyVault SolvencyVault contract address + */ + function setSolvencyVault(address _solvencyVault) external onlyOwner { + require(solvencyVault == address(0), "SolvencyVault already set"); + require(_solvencyVault != address(0), "Invalid address"); + solvencyVault = _solvencyVault; + } + + /** + * @notice Enable/disable demo mode for time acceleration + * @param _enabled Enable demo mode + * @param _multiplier Time multiplier (e.g., 360 for 360x) + */ + function setDemoMode(bool _enabled, uint256 _multiplier) external onlyOwner { + require(_multiplier > 0, "Multiplier must be > 0"); + demoMode = _enabled; + timeMultiplier = _multiplier; + emit DemoModeUpdated(_enabled, _multiplier); + } + + /** + * @notice Deposit USDC liquidity into pool + * @param amount Amount of USDC to deposit (6 decimals) + */ + function depositLiquidity(uint256 amount) external nonReentrant { + require(amount > 0, "Amount must be > 0"); + + require( + usdc.transferFrom(msg.sender, address(this), amount), + "USDC transfer failed" + ); + + totalLiquidity += amount; + emit LiquidityDeposited(msg.sender, amount); + } + + /** + * @notice Withdraw USDC liquidity from pool + * @param amount Amount of USDC to withdraw (6 decimals) + */ + function withdrawLiquidity(uint256 amount) external onlyOwner nonReentrant { + require(amount > 0, "Amount must be > 0"); + require(amount <= getAvailableLiquidity(), "Insufficient available liquidity"); + + totalLiquidity -= amount; + require(usdc.transfer(msg.sender, amount), "USDC transfer failed"); + + emit LiquidityWithdrawn(msg.sender, amount); + } + + /** + * @notice Borrow USDC for leverage position + * @param positionId Unique position identifier + * @param amount Amount to borrow (6 decimals) + */ + function borrow(uint256 positionId, uint256 amount) external onlyAuthorizedVault nonReentrant { + require(amount > 0, "Amount must be > 0"); + require(amount <= DEBT_CEILING, "Exceeds debt ceiling"); + // Removed restriction: Users can open multiple positions + // require(!loans[positionId].active, "Loan already exists"); + require(amount <= getAvailableLiquidity(), "Insufficient liquidity"); + + // Create loan (or overwrite if exists - each position should have unique ID anyway) + loans[positionId] = Loan({ + principal: amount, + interestAccrued: 0, + lastUpdateTime: block.timestamp, + active: true + }); + + totalBorrowed += amount; + + // Transfer USDC to calling vault + require(usdc.transfer(msg.sender, amount), "USDC transfer failed"); + + emit LoanIssued(positionId, amount); + } + + /** + * @notice Repay loan (principal + interest) + * @param positionId Position identifier + * @param amount Amount to repay (6 decimals) + * @return principal Principal repaid + * @return interest Interest repaid + */ + function repay( + uint256 positionId, + uint256 amount + ) external onlyAuthorizedVault nonReentrant returns (uint256 principal, uint256 interest) { + require(loans[positionId].active, "Loan not active"); + + // Update interest before repayment + Loan storage loan = loans[positionId]; + uint256 totalOwed = loan.principal + loan.interestAccrued; + require(amount <= totalOwed, "Amount exceeds debt"); + + + // Calculate principal and interest portions + if (amount <= loan.interestAccrued) { + // Repaying only interest + interest = amount; + principal = 0; + loan.interestAccrued -= interest; + } else { + // Repaying interest + principal + interest = loan.interestAccrued; + principal = amount - interest; + loan.interestAccrued = 0; + loan.principal -= principal; + } + + // Update pool state + totalBorrowed -= principal; + totalInterestEarned += interest; + totalLiquidity += interest; // Interest stays in pool + + // Transfer USDC from calling vault + require( + usdc.transferFrom(msg.sender, address(this), amount), + "USDC transfer failed" + ); + + // Close loan if fully repaid + if (loan.principal == 0) { + loan.active = false; + } + + _accrueInterest(positionId); + + emit LoanRepaid(positionId, principal, interest); + } + + /** + * @notice Get outstanding debt for position (principal + accrued interest) + * @param positionId Position identifier + * @return Outstanding debt amount + */ + function getOutstandingDebt(uint256 positionId) external view returns (uint256) { + if (!loans[positionId].active) return 0; + + Loan memory loan = loans[positionId]; + uint256 pendingInterest = _calculateInterest(positionId); + return loan.principal + loan.interestAccrued + pendingInterest; + } + + /** + * @notice Get accrued interest for position + * @param positionId Position identifier + * @return Accrued interest amount + */ + function getAccruedInterest(uint256 positionId) external view returns (uint256) { + if (!loans[positionId].active) return 0; + + Loan memory loan = loans[positionId]; + uint256 pendingInterest = _calculateInterest(positionId); + return loan.interestAccrued + pendingInterest; + } + + /** + * @notice Get available liquidity for lending + * @return Available USDC amount + */ + function getAvailableLiquidity() public view returns (uint256) { + // Ensure reserve requirement is met + uint256 requiredReserve = (totalBorrowed * RESERVE_RATIO) / BASIS_POINTS; + uint256 available = totalLiquidity > totalBorrowed + ? totalLiquidity - totalBorrowed + : 0; + + return available > requiredReserve ? available - requiredReserve : 0; + } + + /** + * @notice Accrue interest for a loan + * @param positionId Position identifier + */ + function accrueInterest(uint256 positionId) external { + require(loans[positionId].active, "Loan not active"); + _accrueInterest(positionId); + } + + /** + * @notice Internal: Accrue interest for a loan + * @param positionId Position identifier + */ + function _accrueInterest(uint256 positionId) internal { + Loan storage loan = loans[positionId]; + uint256 interest = _calculateInterest(positionId); + + if (interest > 0) { + loan.interestAccrued += interest; + loan.lastUpdateTime = block.timestamp; + emit InterestAccrued(positionId, interest); + } + } + + /** + * @notice Internal: Calculate pending interest + * @param positionId Position identifier + * @return Pending interest amount + */ + function _calculateInterest(uint256 positionId) internal view returns (uint256) { + Loan memory loan = loans[positionId]; + if (!loan.active || loan.principal == 0) return 0; + + uint256 timeElapsed = block.timestamp - loan.lastUpdateTime; + + // Apply time multiplier for demo mode + if (demoMode) { + timeElapsed = timeElapsed * timeMultiplier; + } + + // Interest = (principal * APR * timeElapsed) / (BASIS_POINTS * SECONDS_PER_YEAR) + // APR is in basis points (500 = 5%) + uint256 interest = (loan.principal * APR * timeElapsed) / + (BASIS_POINTS * 365 days); + + return interest; + } + + /** + * @notice Get pool statistics + * @return Total liquidity, total borrowed, available liquidity, total interest earned + */ + function getPoolStats() + external + view + returns (uint256, uint256, uint256, uint256) + { + return ( + totalLiquidity, + totalBorrowed, + getAvailableLiquidity(), + totalInterestEarned + ); + } +} diff --git a/packages/arbitrum-contracts/contracts/core/SolvencyVault.sol b/packages/arbitrum-contracts/contracts/core/SolvencyVault.sol new file mode 100644 index 00000000..94e814db --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/SolvencyVault.sol @@ -0,0 +1,840 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +// SeniorPool interface +interface ISeniorPool { + function borrow(uint256 positionId, uint256 amount) external; + + function repay( + uint256 positionId, + uint256 amount + ) external returns (uint256 principal, uint256 interest); + + function getOutstandingDebt(uint256 positionId) external view returns (uint256); + + function getAccruedInterest(uint256 positionId) external view returns (uint256); +} + +// PrimaryMarket interface for liquidation listings +interface IPrimaryMarket { + enum ListingType { STATIC, AUCTION } + + function createListing( + bytes32 assetId, + address tokenAddress, + ListingType listingType, + uint256 priceOrReserve, + uint256 duration, + uint256 totalSupply, + uint256 minInvestment + ) external; +} + +// OAID interface +interface IOAID { + function issueCreditLine( + address user, + address collateralToken, + uint256 collateralAmount, + uint256 valueUSD, + uint256 solvencyPositionId + ) external returns (uint256 creditLineId); + + function revokeCreditLine( + uint256 creditLineId, + string memory reason + ) external; + + function recordPayment( + uint256 creditLineId, + uint256 amount, + bool onTime, + uint256 daysLate + ) external; + + function recordCreditUsage( + uint256 creditLineId, + uint256 amount + ) external; + + function recordCreditRepayment( + uint256 creditLineId, + uint256 amount + ) external; +} + +// YieldVault interface +interface IYieldVault { + function claimYield(address rwaToken, uint256 tokenAmount) external returns (uint256 usdcReceived); +} + +/** + * @title SolvencyVault + * @notice Collateral vault for borrowing USDC against RWA tokens or Private Asset tokens + * @dev Supports two token types with different LTV ratios and liquidation flows + * + * Normal Flow: + * 1. User deposits RWA/PrivateAsset tokens as collateral + * 2. Vault borrows USDC from SeniorPool based on LTV (70% for RWA, 60% for Private) + * 3. If OAID enabled: Issues on-chain credit line for user + * 4. User repays loan + interest (recorded in OAID payment history) + * 5. User withdraws collateral after full repayment + * + * Liquidation Flows (health factor < 115%): + * + * RWA Token Liquidation (Invoice-backed assets): + * 1. liquidatePosition() - Marks position as liquidated, revokes OAID credit line + * 2. Wait for invoice settlement/maturity + * 3. settleLiquidation() - Burns RWA tokens for USDC yield via YieldVault + * 4. Repay debt, take 10% fee, return excess to user + * + * Private Asset Liquidation: + * 1. liquidatePosition() - Marks liquidated, revokes OAID credit line + * 2. Admin purchases collateral via purchaseAndSettleLiquidation() + * 3. Admin sends USDC, receives Private Asset tokens + * 4. Contract repays debt, takes 10% fee from excess, returns remainder to user + * (Admin can then do anything with the tokens - sell, hold, redistribute, etc.) + */ +contract SolvencyVault is Ownable, ReentrancyGuard { + // Token types + enum TokenType { + RWA, // RWA tokens from marketplace (70% LTV) + PRIVATE_ASSET // Private asset tokens (60% LTV) + } + + // Position tracking + struct Position { + address user; // Borrower address + address collateralToken; // Token address (RWA or PrivateAsset) + uint256 collateralAmount; // Token amount deposited (18 decimals) + uint256 usdcBorrowed; // USDC borrowed from SeniorPool (6 decimals) + uint256 tokenValueUSD; // Valuation at deposit time (6 decimals) + uint256 createdAt; // Position creation timestamp + uint256 liquidatedAt; // Liquidation timestamp (0 if not liquidated) + uint256 creditLineId; // OAID credit line ID (0 if not issued) + bool active; // Position status + TokenType tokenType; // RWA or PRIVATE_ASSET + } + + // External contracts + IERC20 public usdc; + address public seniorPool; + address public primaryMarket; + address public oaid; // Optional OAID integration + + // Position management + mapping(uint256 => Position) public positions; + uint256 public nextPositionId; + + // LTV and health parameters (basis points) + uint256 public constant RWA_LTV = 7000; // 70% + uint256 public constant PRIVATE_ASSET_LTV = 6000; // 60% + uint256 public constant LIQUIDATION_THRESHOLD = 11500; // 115% + uint256 public constant LIQUIDATION_FEE_BPS = 1000; // 10% liquidation fee + uint256 public constant BASIS_POINTS = 10000; + + // Liquidation tracking + mapping(uint256 => bool) public positionsInLiquidation; // positionId => liquidation status + address public yieldVault; // YieldVault contract for burning RWA tokens + + // Repayment Schedule + struct RepaymentPlan { + uint256 loanDuration; // Total duration in seconds (e.g., 90 days) + uint256 numberOfInstallments; // Total installments (e.g., 18) + uint256 installmentInterval; // Duration of each interval (seconds) + uint256 nextPaymentDue; // Timestamp of next due date + uint256 installmentsPaid; // Counter + uint256 missedPayments; // Counter for missed/late payments + bool isActive; // If plan is active + bool defaulted; // Marked as defaulted by admin + } + + mapping(uint256 => RepaymentPlan) public repaymentPlans; + + // Events + event PositionCreated( + uint256 indexed positionId, + address indexed user, + address collateralToken, + uint256 collateralAmount, + uint256 tokenValueUSD, + TokenType tokenType + ); + event USDCBorrowed( + uint256 indexed positionId, + uint256 amount, + uint256 totalDebt + ); + event RepaymentPlanCreated( + uint256 indexed positionId, + uint256 loanDuration, + uint256 numberOfInstallments, + uint256 installmentInterval, + uint256 nextPaymentDue + ); + event LoanRepaid( + uint256 indexed positionId, + uint256 amount, + uint256 principal, + uint256 interest, + uint256 remainingDebt + ); + event MissedPaymentMarked( + uint256 indexed positionId, + uint256 missedPayments + ); + event PositionDefaulted( + uint256 indexed positionId + ); + event CollateralWithdrawn( + uint256 indexed positionId, + address indexed user, + uint256 amount + ); + event PositionLiquidated( + uint256 indexed positionId, + uint256 liquidationTime + ); + event LiquidationSettled( + uint256 indexed positionId, + uint256 yieldReceived, + uint256 debtRepaid, + uint256 liquidationFee, + uint256 userRefund + ); + event OAIDCreditIssued( + uint256 indexed positionId, + uint256 creditLineId, + uint256 creditLimit + ); + event CreditLineRevoked( + uint256 indexed positionId, + uint256 indexed creditLineId, + string reason + ); + event PrivateAssetLiquidationSettled( + uint256 indexed positionId, + address indexed purchaser, + uint256 purchaseAmount, + uint256 tokensTransferred, + uint256 debtRepaid, + uint256 liquidationFee, + uint256 userRefund + ); + + /** + * @notice Initialize Solvency Vault + * @param _usdc USDC token address + * @param _seniorPool SeniorPool contract address + */ + constructor( + address _usdc, + address _seniorPool + ) Ownable(msg.sender) { + usdc = IERC20(_usdc); + seniorPool = _seniorPool; + nextPositionId = 1; + } + + /** + * @notice Set PrimaryMarket address + * @param _primaryMarket PrimaryMarket contract address + */ + function setPrimaryMarket(address _primaryMarket) external onlyOwner { + require(_primaryMarket != address(0), "Invalid address"); + primaryMarket = _primaryMarket; + } + + /** + * @notice Set OAID address (optional) + * @param _oaid OAID contract address + */ + function setOAID(address _oaid) external onlyOwner { + require(_oaid != address(0), "Invalid address"); + oaid = _oaid; + } + + /** + * @notice Set YieldVault address + * @param _yieldVault YieldVault contract address + */ + function setYieldVault(address _yieldVault) external onlyOwner { + require(_yieldVault != address(0), "Invalid address"); + yieldVault = _yieldVault; + } + + /** + * @notice Deposit collateral tokens + * @param collateralToken Token address (RWA or PrivateAsset) + * @param collateralAmount Token amount (18 decimals) + * @param tokenValueUSD Valuation in USD (6 decimals) + * @param tokenType RWA or PRIVATE_ASSET + * @param issueOAID Whether to issue OAID credit line + * @return positionId Created position ID + */ + function depositCollateral( + address collateralToken, + uint256 collateralAmount, + uint256 tokenValueUSD, + TokenType tokenType, + bool issueOAID + ) external nonReentrant returns (uint256 positionId) { + require(collateralToken != address(0), "Invalid token"); + require(collateralAmount > 0, "Amount must be > 0"); + require(tokenValueUSD > 0, "Valuation must be > 0"); + + // Transfer tokens from user to vault + require( + IERC20(collateralToken).transferFrom(msg.sender, address(this), collateralAmount), + "Token transfer failed" + ); + + // Create position + positionId = nextPositionId++; + positions[positionId] = Position({ + user: msg.sender, + collateralToken: collateralToken, + collateralAmount: collateralAmount, + usdcBorrowed: 0, + tokenValueUSD: tokenValueUSD, + createdAt: block.timestamp, + liquidatedAt: 0, + creditLineId: 0, + active: true, + tokenType: tokenType + }); + + emit PositionCreated( + positionId, + msg.sender, + collateralToken, + collateralAmount, + tokenValueUSD, + tokenType + ); + + // Issue OAID credit line if requested + if (issueOAID && oaid != address(0)) { + uint256 ltv = tokenType == TokenType.RWA ? RWA_LTV : PRIVATE_ASSET_LTV; + uint256 creditLimit = (tokenValueUSD * ltv) / BASIS_POINTS; + + uint256 creditLineId = IOAID(oaid).issueCreditLine( + msg.sender, + collateralToken, + collateralAmount, + tokenValueUSD, + positionId + ); + // Store credit line ID in position + positions[positionId].creditLineId = creditLineId; + emit OAIDCreditIssued(positionId, creditLineId, creditLimit); + } + } + + /** + * @notice Borrow USDC against collateral with repayment schedule + * @param positionId Position ID + * @param amount USDC amount to borrow (6 decimals) + * @param loanDuration Total duration of the loan in seconds + * @param numberOfInstallments Number of fixed installments + */ + function borrowUSDC( + uint256 positionId, + uint256 amount, + uint256 loanDuration, + uint256 numberOfInstallments + ) external nonReentrant { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(msg.sender == position.user, "Not position owner"); + require(amount > 0, "Amount must be > 0"); + + // Validate repayment terms + require(loanDuration > 0, "Duration must be > 0"); + require(numberOfInstallments > 0, "Installments must be > 0"); + require(loanDuration >= numberOfInstallments, "Invalid duration/installments"); + + // Ensure no existing plan for this position (or support refinancing later) + require(!repaymentPlans[positionId].isActive, "Plan already active"); + + // Calculate max borrowable amount based on LTV + uint256 ltv = position.tokenType == TokenType.RWA ? RWA_LTV : PRIVATE_ASSET_LTV; + uint256 maxBorrow = (position.tokenValueUSD * ltv) / BASIS_POINTS; + uint256 newTotalBorrowed = position.usdcBorrowed + amount; + + require(newTotalBorrowed <= maxBorrow, "Exceeds LTV limit"); + + // Calculate installment interval + uint256 installmentInterval = loanDuration / numberOfInstallments; + + // Initialize RepaymentPlan + repaymentPlans[positionId] = RepaymentPlan({ + loanDuration: loanDuration, + numberOfInstallments: numberOfInstallments, + installmentInterval: installmentInterval, + nextPaymentDue: block.timestamp + installmentInterval, + installmentsPaid: 0, + missedPayments: 0, + isActive: true, + defaulted: false + }); + + // Borrow from SeniorPool + ISeniorPool(seniorPool).borrow(positionId, amount); + + // Update position + position.usdcBorrowed += amount; + + // Record credit usage in OAID if credit line exists + if (oaid != address(0) && position.creditLineId > 0) { + IOAID(oaid).recordCreditUsage(position.creditLineId, amount); + } + + // Transfer USDC to user + require(usdc.transfer(msg.sender, amount), "USDC transfer failed"); + + emit USDCBorrowed(positionId, amount, position.usdcBorrowed); + emit RepaymentPlanCreated( + positionId, + loanDuration, + numberOfInstallments, + installmentInterval, + block.timestamp + installmentInterval + ); + } + + /** + * @notice Repay loan (principal + interest) + * @param positionId Position ID + * @param amount USDC amount to repay (6 decimals) + */ + function repayLoan(uint256 positionId, uint256 amount) external nonReentrant { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(msg.sender == position.user, "Not position owner"); + require(amount > 0, "Amount must be > 0"); + + // Transfer USDC from user + require( + usdc.transferFrom(msg.sender, address(this), amount), + "USDC transfer failed" + ); + + // Approve SeniorPool to take repayment + usdc.approve(seniorPool, amount); + + // Repay to SeniorPool + (uint256 principal, uint256 interest) = ISeniorPool(seniorPool).repay( + positionId, + amount + ); + + // Update position + position.usdcBorrowed -= principal; + + uint256 remainingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + // Update Repayment Plan + RepaymentPlan storage plan = repaymentPlans[positionId]; + + if (plan.isActive) { + // Increment installments paid + plan.installmentsPaid++; + + // If fully repaid (based on debt, not installments count, as installments are estimated) + if (remainingDebt == 0 || (plan.installmentsPaid >= plan.numberOfInstallments)) { + plan.isActive = false; + } + } + + // Record payment in OAID if credit line exists + if (oaid != address(0) && position.creditLineId > 0) { + // Reduce credit used by principal amount + if (principal > 0) { + IOAID(oaid).recordCreditRepayment(position.creditLineId, principal); + } + + IOAID(oaid).recordPayment( + position.creditLineId, + amount, + true, // Always mark as on-time here; missed payments are marked by admin + 0 + ); + } + + emit LoanRepaid(positionId, amount, principal, interest, remainingDebt); + } + + /** + * @notice Withdraw collateral (requires full loan repayment) + * @param positionId Position ID + * @param amount Token amount to withdraw (18 decimals) + */ + function withdrawCollateral(uint256 positionId, uint256 amount) external nonReentrant { + Position storage position = positions[positionId]; + // require(position.active, "Position not active"); + require(msg.sender == position.user, "Not position owner"); + require(amount > 0, "Amount must be > 0"); + require(amount <= position.collateralAmount, "Insufficient collateral"); + + // Verify no outstanding debt + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + require(outstandingDebt == 0, "Outstanding debt must be repaid"); + + // Update token valuation proportionally + uint256 oldCollateral = position.collateralAmount; + uint256 newCollateral = oldCollateral - amount; + + if (newCollateral == 0) { + position.tokenValueUSD = 0; + } else { + position.tokenValueUSD = (position.tokenValueUSD * newCollateral) / oldCollateral; + } + + // Update position + position.collateralAmount = newCollateral; + + // Close position if fully withdrawn + if (position.collateralAmount == 0) { + position.active = false; + if (repaymentPlans[positionId].isActive) { + repaymentPlans[positionId].isActive = false; + } + + // Revoke OAID credit line + if (oaid != address(0) && position.creditLineId > 0) { + IOAID(oaid).revokeCreditLine(position.creditLineId, "Collateral withdrawn"); + } + } + + // Transfer tokens to user + require( + IERC20(position.collateralToken).transfer(msg.sender, amount), + "Token transfer failed" + ); + + emit CollateralWithdrawn(positionId, msg.sender, amount); + } + + /** + * @notice Mark a missed payment (Admin only) + * @param positionId Position ID + */ + function markMissedPayment(uint256 positionId) external onlyOwner { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + + RepaymentPlan storage plan = repaymentPlans[positionId]; + require(plan.isActive, "Plan not active"); + + plan.missedPayments++; + + // Record missed payment in OAID (0 amount, onTime=false) + if (oaid != address(0) && position.creditLineId > 0) { + IOAID(oaid).recordPayment( + position.creditLineId, + 0, // amount + false, // onTime (false = missed/late) + 1 // daysLate (placeholder) + ); + } + + emit MissedPaymentMarked(positionId, plan.missedPayments); + } + + /** + * @notice Mark position as defaulted (Admin only) + * @param positionId Position ID + */ + function markDefaulted(uint256 positionId) external onlyOwner { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + + RepaymentPlan storage plan = repaymentPlans[positionId]; + require(plan.isActive, "Plan not active"); + + plan.defaulted = true; + + emit PositionDefaulted(positionId); + } + + /** + * @notice Mark position for liquidation (health < 115% OR marked defaulted) + * @param positionId Position ID + * @dev Two flows: + * - RWA tokens: Mark for liquidation, wait for invoice settlement + * - Private Assets: Mark for liquidation, admin can purchase directly + */ + function liquidatePosition( + uint256 positionId + ) external onlyOwner nonReentrant { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(!positionsInLiquidation[positionId], "Already in liquidation"); + + // Verify liquidation is necessary + // 1. Health Factor Check (< 115%) + uint256 healthFactor = getHealthFactor(positionId); + bool healthLiquidatable = healthFactor < LIQUIDATION_THRESHOLD; + + // 2. Repayment Default Check (marked by admin) + RepaymentPlan storage plan = repaymentPlans[positionId]; + bool defaultLiquidatable = plan.isActive && plan.defaulted; + + require(healthLiquidatable || defaultLiquidatable, "Position is healthy and not defaulted"); + + // Mark position as liquidated (but keep active to hold tokens) + positionsInLiquidation[positionId] = true; + position.liquidatedAt = block.timestamp; + + // Deactivate repayment plan + if (plan.isActive) { + plan.isActive = false; + } + + // Revoke OAID credit line if exists + if (oaid != address(0) && position.creditLineId > 0) { + string memory reason = healthLiquidatable + ? "Position liquidated - collateral health below threshold" + : "Position liquidated - repayment default"; + + IOAID(oaid).revokeCreditLine( + position.creditLineId, + reason + ); + + emit CreditLineRevoked( + positionId, + position.creditLineId, + reason + ); + } + + emit PositionLiquidated(positionId, block.timestamp); + } + + /** + * @notice Process liquidation settlement by burning RWA tokens for yield + * @param positionId Position ID + * @dev Called after RWA settlement - burns tokens, repays loan, takes 10% fee, returns excess + * Only for RWA token collateral + */ + function settleLiquidation( + uint256 positionId + ) external onlyOwner nonReentrant returns (uint256 yieldReceived, uint256 liquidationFee, uint256 userRefund) { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(positionsInLiquidation[positionId], "Position not liquidated"); + require(position.tokenType == TokenType.RWA, "Only for RWA tokens"); + require(yieldVault != address(0), "YieldVault not set"); + + // Approve YieldVault to burn RWA tokens + IERC20(position.collateralToken).approve(yieldVault, position.collateralAmount); + + // Get USDC balance before + uint256 balanceBefore = usdc.balanceOf(address(this)); + + // Burn RWA tokens to claim USDC yield using low-level call (no return value expected) + (bool success, ) = yieldVault.call( + abi.encodeWithSignature( + "claimYield(address,uint256)", + position.collateralToken, + position.collateralAmount + ) + ); + require(success, "YieldVault claim failed"); + + // Calculate USDC received + uint256 balanceAfter = usdc.balanceOf(address(this)); + yieldReceived = balanceAfter - balanceBefore; + require(yieldReceived > 0, "No yield received"); + + // Get outstanding debt + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + uint256 debtRepaid = 0; + + if (outstandingDebt > 0) { + // Repay as much debt as possible + uint256 repaymentAmount = yieldReceived > outstandingDebt + ? outstandingDebt + : yieldReceived; + + usdc.approve(seniorPool, repaymentAmount); + ISeniorPool(seniorPool).repay(positionId, repaymentAmount); + debtRepaid = repaymentAmount; + } + + // Calculate liquidation fee and user refund from excess + if (yieldReceived > debtRepaid) { + uint256 excess = yieldReceived - debtRepaid; + + // Calculate 10% liquidation fee + liquidationFee = (excess * LIQUIDATION_FEE_BPS) / BASIS_POINTS; + userRefund = excess - liquidationFee; + + // Transfer liquidation fee to admin (owner) + if (liquidationFee > 0) { + require( + usdc.transfer(owner(), liquidationFee), + "Fee transfer failed" + ); + } + + // Transfer remaining USDC to user + if (userRefund > 0) { + require( + usdc.transfer(position.user, userRefund), + "Refund transfer failed" + ); + } + } else { + liquidationFee = 0; + userRefund = 0; + } + + // Mark position as inactive + position.active = false; + position.collateralAmount = 0; + + emit LiquidationSettled(positionId, yieldReceived, debtRepaid, liquidationFee, userRefund); + } + + /** + * @notice Admin purchases liquidated Private Asset collateral and settles position + * @param positionId Position ID + * @param purchaseAmount USDC amount admin is paying (6 decimals) + * @dev Admin sends USDC, receives Private Asset tokens, contract settles debt and fees + * Only for Private Asset collateral that has been liquidated + */ + function purchaseAndSettleLiquidation( + uint256 positionId, + uint256 purchaseAmount + ) external onlyOwner nonReentrant returns (uint256 liquidationFee, uint256 userRefund) { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(positionsInLiquidation[positionId], "Position not liquidated"); + require(position.tokenType == TokenType.PRIVATE_ASSET, "Only for Private Assets"); + require(purchaseAmount > 0, "Purchase amount must be > 0"); + + // Transfer USDC from admin + require( + usdc.transferFrom(msg.sender, address(this), purchaseAmount), + "USDC transfer failed" + ); + + // Transfer Private Asset tokens to admin + require( + IERC20(position.collateralToken).transfer(msg.sender, position.collateralAmount), + "Token transfer failed" + ); + + // Get outstanding debt + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + uint256 debtRepaid = 0; + + if (outstandingDebt > 0) { + // Repay as much debt as possible + uint256 repaymentAmount = purchaseAmount > outstandingDebt + ? outstandingDebt + : purchaseAmount; + + usdc.approve(seniorPool, repaymentAmount); + ISeniorPool(seniorPool).repay(positionId, repaymentAmount); + debtRepaid = repaymentAmount; + } + + // Calculate liquidation fee and user refund from excess + if (purchaseAmount > debtRepaid) { + uint256 excess = purchaseAmount - debtRepaid; + + // Calculate 10% liquidation fee + liquidationFee = (excess * LIQUIDATION_FEE_BPS) / BASIS_POINTS; + userRefund = excess - liquidationFee; + + // Transfer liquidation fee to admin (already msg.sender/owner) + // Fee stays in contract, will be withdrawn by admin later + // Or send to a separate fee collector address + + // Transfer remaining USDC to user + if (userRefund > 0) { + require( + usdc.transfer(position.user, userRefund), + "Refund transfer failed" + ); + } + } else { + liquidationFee = 0; + userRefund = 0; + } + + // Mark position as inactive + position.active = false; + position.collateralAmount = 0; + + emit PrivateAssetLiquidationSettled( + positionId, + msg.sender, + purchaseAmount, + position.collateralAmount, + debtRepaid, + liquidationFee, + userRefund + ); + } + + /** + * @notice Get health factor for position + * @param positionId Position ID + * @return Health factor (basis points, e.g., 15000 = 150%) + */ + function getHealthFactor(uint256 positionId) public view returns (uint256) { + Position memory position = positions[positionId]; + if (!position.active) return 0; + + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + if (outstandingDebt == 0) return type(uint256).max; + + // Health factor = (collateralValueUSD / debt) * BASIS_POINTS + return (position.tokenValueUSD * BASIS_POINTS) / outstandingDebt; + } + + /** + * @notice Get position details + * @param positionId Position ID + * @return Position struct + */ + function getPosition(uint256 positionId) external view returns (Position memory) { + return positions[positionId]; + } + + /** + * @notice Get max borrowable amount for position + * @param positionId Position ID + * @return Max USDC amount (6 decimals) + */ + function getMaxBorrow(uint256 positionId) external view returns (uint256) { + Position memory position = positions[positionId]; + if (!position.active) return 0; + + uint256 ltv = position.tokenType == TokenType.RWA ? RWA_LTV : PRIVATE_ASSET_LTV; + uint256 maxBorrow = (position.tokenValueUSD * ltv) / BASIS_POINTS; + uint256 currentDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + return maxBorrow > currentDebt ? maxBorrow - currentDebt : 0; + } + + /** + * @notice Get repayment plan details + * @param positionId Position ID + * @return RepaymentPlan struct + */ + function getRepaymentPlan(uint256 positionId) external view returns (RepaymentPlan memory) { + return repaymentPlans[positionId]; + } +} diff --git a/packages/arbitrum-contracts/contracts/core/StARBLeverageVault.sol b/packages/arbitrum-contracts/contracts/core/StARBLeverageVault.sol new file mode 100644 index 00000000..a313fafa --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/StARBLeverageVault.sol @@ -0,0 +1,631 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +// SeniorPool interface +interface ISeniorPool { + function borrow(uint256 positionId, uint256 amount) external; + + function repay( + uint256 positionId, + uint256 amount + ) external returns (uint256 principal, uint256 interest); + + function getOutstandingDebt(uint256 positionId) external view returns (uint256); + + function getAccruedInterest(uint256 positionId) external view returns (uint256); +} + +// ArbitrumSwapIntegration interface +interface IArbitrumSwapIntegration { + function swapStARBToUSDC(uint256 stARBAmount, uint256 stARBPriceUSD) external returns (uint256); +} + +// PrimaryMarket interface +interface IPrimaryMarket { + function buyTokens(bytes32 assetId, uint256 amount) external; +} + +/** + * @title StARBLeverageVault + * @notice Core vault for managing leveraged RWA token purchases using stARB collateral on Arbitrum + * @dev Handles collateral custody, position management, yield harvesting, and settlement waterfall + * + * Flow: + * 1. User deposits stARB as collateral (150% LTV) + * 2. Vault borrows USDC from SeniorPool + * 3. Backend purchases RWA tokens, transfers to vault + * 4. Daily harvest: stARB yield → USDC → Interest payment + * 5. Settlement: Waterfall distribution (Senior → Interest → User yield) + * 6. Liquidation < 115%: Sell only buffer stARB (15%), return base 100% stARB to user + * 7. RWA Settlement: Burn RWA tokens, repay loan, take 10% fee, refund user + */ +contract StARBLeverageVault is Ownable, ReentrancyGuard { + // External contracts + IERC20 public stARB; + IERC20 public usdc; + address public seniorPool; + address public arbitrumSwapIntegration; + address public yieldVault; + address public primaryMarket; + + // Position tracking + struct Position { + address user; // Investor address + uint256 stARBCollateral; // stARB deposited (18 decimals) + uint256 usdcBorrowed; // USDC borrowed from SeniorPool (6 decimals) + address rwaToken; // RWA token address + uint256 rwaTokenAmount; // RWA tokens held (18 decimals) + string assetId; // Asset ID reference + uint256 createdAt; // Position creation timestamp + uint256 lastHarvestTime; // Last yield harvest timestamp + uint256 totalInterestPaid; // Cumulative interest paid + uint256 liquidatedAt; // Liquidation timestamp (0 if not liquidated) + bool active; // Position status + bool inLiquidation; // Whether position is in liquidation process + } + + mapping(uint256 => Position) public positions; + uint256 public nextPositionId; + + // Health factor parameters + uint256 public constant LIQUIDATION_THRESHOLD = 11500; // 115% (basis points) + uint256 public constant INITIAL_LTV = 15000; // 150% (basis points) + uint256 public constant LIQUIDATION_FEE_BPS = 1000; // 10% liquidation fee (basis points) + uint256 public constant BASIS_POINTS = 10000; + + // Events + event PositionCreated( + uint256 indexed positionId, + address indexed user, + uint256 stARBCollateral, + uint256 usdcBorrowed, + address rwaToken, + uint256 rwaTokenAmount + ); + event YieldHarvested( + uint256 indexed positionId, + uint256 stARBSwapped, + uint256 usdcReceived, + uint256 interestPaid + ); + event PositionLiquidated( + uint256 indexed positionId, + uint256 bufferStARBSold, + uint256 usdcRecovered, + uint256 baseStARBReturned, + uint256 debtRepaid + ); + event LiquidationSettled( + uint256 indexed positionId, + uint256 rwaTokensBurned, + uint256 yieldReceived, + uint256 debtRepaid, + uint256 liquidationFee, + uint256 userRefund + ); + event SettlementProcessed( + uint256 indexed positionId, + uint256 seniorRepayment, + uint256 interestRepayment, + uint256 userYield + ); + event CollateralAdded(uint256 indexed positionId, uint256 amount); + + /** + * @notice Initialize StARB Leverage Vault + * @param _stARB stARB token address + * @param _usdc USDC token address + * @param _seniorPool SeniorPool contract address + * @param _arbitrumSwapIntegration ArbitrumSwapIntegration contract address + * @dev stARB price is provided by backend in each function call (no on-chain oracle) + */ + constructor( + address _stARB, + address _usdc, + address _seniorPool, + address _arbitrumSwapIntegration + ) Ownable(msg.sender) { + stARB = IERC20(_stARB); + usdc = IERC20(_usdc); + seniorPool = _seniorPool; + arbitrumSwapIntegration = _arbitrumSwapIntegration; + nextPositionId = 1; + } + + /** + * @notice Set YieldVault address (one-time) + * @param _yieldVault YieldVault contract address + */ + function setYieldVault(address _yieldVault) external onlyOwner { + require(yieldVault == address(0), "YieldVault already set"); + require(_yieldVault != address(0), "Invalid address"); + yieldVault = _yieldVault; + } + + /** + * @notice Set PrimaryMarket address + * @param _primaryMarket PrimaryMarket contract address + */ + function setPrimaryMarket(address _primaryMarket) external onlyOwner { + require(_primaryMarket != address(0), "Invalid address"); + primaryMarket = _primaryMarket; + } + + /** + * @notice Create leverage position + * @param user Investor address + * @param stARBAmount stARB collateral amount (18 decimals) + * @param usdcToBorrow USDC to borrow (6 decimals) + * @param rwaToken RWA token address + * @param rwaTokenAmount RWA token amount (18 decimals) + * @param assetId Asset ID reference (string) + * @param assetIdBytes Asset ID reference (bytes32 for PrimaryMarket) + * @param stARBPriceUSD Current stARB price in USD (18 decimals, e.g., 0.8e18 = $0.80) + * @return positionId Created position ID + */ + function createPosition( + address user, + uint256 stARBAmount, + uint256 usdcToBorrow, + address rwaToken, + uint256 rwaTokenAmount, + string memory assetId, + bytes32 assetIdBytes, + uint256 stARBPriceUSD + ) external onlyOwner nonReentrant returns (uint256 positionId) { + require(user != address(0), "Invalid user"); + require(stARBAmount > 0, "stARB amount must be > 0"); + require(usdcToBorrow > 0, "USDC amount must be > 0"); + require(rwaToken != address(0), "Invalid RWA token"); + require(stARBPriceUSD > 0, "Invalid stARB price"); + require(primaryMarket != address(0), "PrimaryMarket not set"); + + // Verify LTV (collateral must be >= 150% of loan) + // Calculate collateral value: (stARBAmount * stARBPriceUSD) / 1e30 + // 1e30 = 1e18 (stARB decimals) * 1e18 (price decimals) / 1e6 (USDC decimals) + uint256 collateralValueUSD = (stARBAmount * stARBPriceUSD) / 1e30; + uint256 requiredCollateral = (usdcToBorrow * INITIAL_LTV) / BASIS_POINTS; + require( + collateralValueUSD >= requiredCollateral, + "Insufficient collateral (150% LTV required)" + ); + + // Transfer stARB from user to vault + require( + stARB.transferFrom(user, address(this), stARBAmount), + "stARB transfer failed" + ); + + // Borrow USDC from SeniorPool + ISeniorPool(seniorPool).borrow(nextPositionId, usdcToBorrow); + + // Buy RWA tokens from PrimaryMarket + usdc.approve(primaryMarket, usdcToBorrow); + IPrimaryMarket(primaryMarket).buyTokens(assetIdBytes, rwaTokenAmount); + + // Verify RWA tokens were received + require( + IERC20(rwaToken).balanceOf(address(this)) >= rwaTokenAmount, + "RWA token purchase failed" + ); + + // Create position + positionId = nextPositionId++; + positions[positionId] = Position({ + user: user, + stARBCollateral: stARBAmount, + usdcBorrowed: usdcToBorrow, + rwaToken: rwaToken, + rwaTokenAmount: rwaTokenAmount, + assetId: assetId, + createdAt: block.timestamp, + lastHarvestTime: block.timestamp, + totalInterestPaid: 0, + liquidatedAt: 0, + active: true, + inLiquidation: false + }); + + emit PositionCreated( + positionId, + user, + stARBAmount, + usdcToBorrow, + rwaToken, + rwaTokenAmount + ); + } + + /** + * @notice Harvest stARB yield and pay interest + * @param positionId Position ID + * @param stARBPriceUSD Current stARB price in USD (18 decimals) + * @return stARBSwapped Amount of stARB converted to USDC + * @return usdcReceived Amount of USDC received from swap + * @return interestPaid Amount of interest paid + */ + function harvestYield( + uint256 positionId, + uint256 stARBPriceUSD + ) + external + onlyOwner + nonReentrant + returns (uint256 stARBSwapped, uint256 usdcReceived, uint256 interestPaid) + { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(stARBPriceUSD > 0, "Invalid stARB price"); + + // Get outstanding interest from SeniorPool + uint256 outstandingInterest = ISeniorPool(seniorPool).getAccruedInterest( + positionId + ); + require(outstandingInterest > 0, "No interest to pay"); + + // Determine stARB to swap (enough to cover interest) + stARBSwapped = _calculateStARBToSwap(outstandingInterest, stARBPriceUSD); + require(stARBSwapped <= position.stARBCollateral, "Insufficient collateral"); + + // Approve and swap stARB for USDC + stARB.approve(arbitrumSwapIntegration, stARBSwapped); + usdcReceived = IArbitrumSwapIntegration(arbitrumSwapIntegration).swapStARBToUSDC( + stARBSwapped, + stARBPriceUSD + ); + + // Pay interest to SeniorPool + interestPaid = usdcReceived > outstandingInterest + ? outstandingInterest + : usdcReceived; + usdc.approve(seniorPool, interestPaid); + ISeniorPool(seniorPool).repay(positionId, interestPaid); + + // Update position + position.stARBCollateral -= stARBSwapped; + position.totalInterestPaid += interestPaid; + position.lastHarvestTime = block.timestamp; + + emit YieldHarvested(positionId, stARBSwapped, usdcReceived, interestPaid); + } + + /** + * @notice Liquidate position if health factor < 115% + * @dev Sells only buffer stARB (excess over 100% LTV), returns base stARB to user, holds RWA for settlement + * @param positionId Position ID + * @param stARBPriceUSD Current stARB price in USD (18 decimals) + * @return bufferStARBSold Amount of excess stARB sold + * @return usdcRecovered USDC from buffer sale + * @return baseStARBReturned Base stARB collateral returned to user + * @return debtRepaid Amount of debt repaid from buffer sale + */ + function liquidatePosition( + uint256 positionId, + uint256 stARBPriceUSD + ) external onlyOwner nonReentrant returns (uint256 bufferStARBSold, uint256 usdcRecovered, uint256 baseStARBReturned, uint256 debtRepaid) { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(!position.inLiquidation, "Already in liquidation"); + require(stARBPriceUSD > 0, "Invalid stARB price"); + + // Verify liquidation is necessary + uint256 healthFactor = getHealthFactor(positionId, stARBPriceUSD); + require(healthFactor < LIQUIDATION_THRESHOLD, "Position is healthy"); + + address positionUser = position.user; + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + // Calculate base collateral (100% of debt value in stARB) + // baseStARB = (debt * 1e30) / stARBPrice + uint256 baseStARBAmount = (outstandingDebt * 1e30) / stARBPriceUSD; + + // Calculate buffer (excess collateral = total - base) + bufferStARBSold = position.stARBCollateral > baseStARBAmount + ? position.stARBCollateral - baseStARBAmount + : 0; + + require(bufferStARBSold > 0, "No buffer to sell"); + + // Sell buffer stARB for USDC + stARB.approve(arbitrumSwapIntegration, bufferStARBSold); + usdcRecovered = IArbitrumSwapIntegration(arbitrumSwapIntegration).swapStARBToUSDC( + bufferStARBSold, + stARBPriceUSD + ); + + // Repay as much debt as possible with buffer proceeds + debtRepaid = usdcRecovered > outstandingDebt ? outstandingDebt : usdcRecovered; + if (debtRepaid > 0) { + usdc.approve(seniorPool, debtRepaid); + ISeniorPool(seniorPool).repay(positionId, debtRepaid); + } + + // Return base stARB collateral to user + baseStARBReturned = baseStARBAmount; + if (baseStARBReturned > 0) { + require( + stARB.transfer(positionUser, baseStARBReturned), + "Base stARB transfer failed" + ); + } + + // Update position - keep active to hold RWA tokens until settlement + position.stARBCollateral = 0; // All stARB distributed (buffer sold, base returned) + position.inLiquidation = true; + position.liquidatedAt = block.timestamp; + + emit PositionLiquidated(positionId, bufferStARBSold, usdcRecovered, baseStARBReturned, debtRepaid); + } + + /** + * @notice Claim USDC yield by burning RWA tokens held by this vault + * @param positionId Position ID + * @param _yieldVault YieldVault contract address + * @param rwaToken RWA token address + * @param tokenAmount Amount of RWA tokens to burn + * @return usdcReceived Amount of USDC received from YieldVault + */ + function claimYieldFromBurn( + uint256 positionId, + address _yieldVault, + address rwaToken, + uint256 tokenAmount + ) external onlyOwner nonReentrant returns (uint256 usdcReceived) { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(position.rwaToken == rwaToken, "Token mismatch"); + require(tokenAmount <= position.rwaTokenAmount, "Insufficient RWA tokens"); + + // Approve YieldVault to burn tokens from this contract + IERC20(rwaToken).approve(_yieldVault, tokenAmount); + + // Get USDC balance before claim + uint256 balanceBefore = usdc.balanceOf(address(this)); + + // Call YieldVault.claimYield to burn tokens and receive USDC + (bool success, ) = _yieldVault.call( + abi.encodeWithSignature("claimYield(address,uint256)", rwaToken, tokenAmount) + ); + require(success, "YieldVault claim failed"); + + // Calculate USDC received + uint256 balanceAfter = usdc.balanceOf(address(this)); + usdcReceived = balanceAfter - balanceBefore; + + // Update position + position.rwaTokenAmount -= tokenAmount; + + return usdcReceived; + } + + /** + * @notice Settle liquidated position by burning RWA tokens for yield + * @dev Called after RWA settlement - burns RWA, repays remaining debt, takes 10% fee, refunds user + * @param positionId Position ID + * @return yieldReceived USDC received from burning RWA tokens + * @return liquidationFee 10% liquidation fee sent to admin + * @return userRefund Remaining USDC sent to user + */ + function settleLiquidation( + uint256 positionId + ) external onlyOwner nonReentrant returns (uint256 yieldReceived, uint256 liquidationFee, uint256 userRefund) { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(position.inLiquidation, "Position not in liquidation"); + require(yieldVault != address(0), "YieldVault not set"); + require(position.rwaTokenAmount > 0, "No RWA tokens to burn"); + + // Approve YieldVault to burn RWA tokens + IERC20(position.rwaToken).approve(yieldVault, position.rwaTokenAmount); + + // Get USDC balance before + uint256 balanceBefore = usdc.balanceOf(address(this)); + + // Burn RWA tokens to claim USDC yield + (bool success, ) = yieldVault.call( + abi.encodeWithSignature("claimYield(address,uint256)", position.rwaToken, position.rwaTokenAmount) + ); + require(success, "YieldVault claim failed"); + + // Calculate USDC received + uint256 balanceAfter = usdc.balanceOf(address(this)); + yieldReceived = balanceAfter - balanceBefore; + require(yieldReceived > 0, "No yield received"); + + uint256 rwaTokensBurned = position.rwaTokenAmount; + position.rwaTokenAmount = 0; + + // Get outstanding debt + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + uint256 debtRepaid = 0; + + if (outstandingDebt > 0) { + // Repay as much debt as possible + uint256 repaymentAmount = yieldReceived > outstandingDebt ? outstandingDebt : yieldReceived; + usdc.approve(seniorPool, repaymentAmount); + ISeniorPool(seniorPool).repay(positionId, repaymentAmount); + debtRepaid = repaymentAmount; + } + + // Calculate liquidation fee and user refund from excess + if (yieldReceived > debtRepaid) { + uint256 excess = yieldReceived - debtRepaid; + + // Calculate 10% liquidation fee + liquidationFee = (excess * LIQUIDATION_FEE_BPS) / BASIS_POINTS; + userRefund = excess - liquidationFee; + + // Transfer liquidation fee to admin (owner) + if (liquidationFee > 0) { + require( + usdc.transfer(owner(), liquidationFee), + "Fee transfer failed" + ); + } + + // Transfer remaining USDC to user + if (userRefund > 0) { + require( + usdc.transfer(position.user, userRefund), + "Refund transfer failed" + ); + } + } else { + liquidationFee = 0; + userRefund = 0; + } + + // Mark position as inactive + position.active = false; + + emit LiquidationSettled(positionId, rwaTokensBurned, yieldReceived, debtRepaid, liquidationFee, userRefund); + } + + /** + * @notice Process settlement waterfall when RWA asset settles + * @param positionId Position ID + * @param settlementUSDC Total USDC from asset settlement + * @return seniorRepayment Amount repaid to SeniorPool + * @return interestRepayment Amount paid for interest + * @return userYield Amount distributed to user + */ + function processSettlement( + uint256 positionId, + uint256 settlementUSDC + ) + external + onlyOwner + nonReentrant + returns (uint256 seniorRepayment, uint256 interestRepayment, uint256 userYield) + { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + + // Get outstanding debt from SeniorPool + uint256 totalDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + // Waterfall distribution: + // 1. Senior Pool principal + // 2. Accrued interest + // 3. Remaining USDC to user + if (settlementUSDC >= totalDebt) { + // Full repayment + user yield + usdc.approve(seniorPool, totalDebt); + (seniorRepayment, interestRepayment) = ISeniorPool(seniorPool).repay( + positionId, + totalDebt + ); + userYield = settlementUSDC - totalDebt; + + // Transfer user yield + if (userYield > 0) { + require( + usdc.transfer(position.user, userYield), + "User yield transfer failed" + ); + } + } else { + // Partial repayment (prioritize principal, then interest) + usdc.approve(seniorPool, settlementUSDC); + (seniorRepayment, interestRepayment) = ISeniorPool(seniorPool).repay( + positionId, + settlementUSDC + ); + userYield = 0; + } + + // Return remaining stARB collateral to user + if (position.stARBCollateral > 0) { + require( + stARB.transfer(position.user, position.stARBCollateral), + "stARB return failed" + ); + } + + // Mark position as inactive + position.active = false; + + emit SettlementProcessed( + positionId, + seniorRepayment, + interestRepayment, + userYield + ); + } + + /** + * @notice Add collateral to position + * @param positionId Position ID + * @param stARBAmount Additional stARB collateral + */ + function addCollateral( + uint256 positionId, + uint256 stARBAmount + ) external nonReentrant { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(msg.sender == position.user, "Not position owner"); + require(stARBAmount > 0, "Amount must be > 0"); + + // Transfer stARB from user + require( + stARB.transferFrom(msg.sender, address(this), stARBAmount), + "stARB transfer failed" + ); + + position.stARBCollateral += stARBAmount; + + emit CollateralAdded(positionId, stARBAmount); + } + + /** + * @notice Get health factor for position + * @param positionId Position ID + * @param stARBPriceUSD Current stARB price in USD (18 decimals) + * @return Health factor (basis points, e.g., 15000 = 150%) + */ + function getHealthFactor(uint256 positionId, uint256 stARBPriceUSD) public view returns (uint256) { + Position memory position = positions[positionId]; + if (!position.active) return 0; + require(stARBPriceUSD > 0, "Invalid stARB price"); + + // Calculate collateral value: (stARBAmount * stARBPriceUSD) / 1e30 + uint256 collateralValueUSD = (position.stARBCollateral * stARBPriceUSD) / 1e30; + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt( + positionId + ); + + if (outstandingDebt == 0) return type(uint256).max; + + // Health factor = (collateralValue / debt) * BASIS_POINTS + return (collateralValueUSD * BASIS_POINTS) / outstandingDebt; + } + + /** + * @notice Get position details + * @param positionId Position ID + * @return Position struct + */ + function getPosition(uint256 positionId) external view returns (Position memory) { + return positions[positionId]; + } + + /** + * @notice Calculate stARB to swap for target USDC amount + * @param targetUSDC Target USDC amount (6 decimals) + * @param stARBPrice Current stARB price (18 decimals) + * @return stARB amount needed (18 decimals) + */ + function _calculateStARBToSwap( + uint256 targetUSDC, + uint256 stARBPrice + ) internal pure returns (uint256) { + // stARB = (targetUSDC * 1e18 * 1e12) / stARBPrice + // 1e12 converts USDC (6 decimals) to 18 decimals + return (targetUSDC * 1e30) / stARBPrice; + } +} diff --git a/packages/arbitrum-contracts/contracts/core/TokenFactory.sol b/packages/arbitrum-contracts/contracts/core/TokenFactory.sol new file mode 100644 index 00000000..1b43b840 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/TokenFactory.sol @@ -0,0 +1,188 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./RWAToken.sol"; +import "./PrivateAssetToken.sol"; +import "./ComplianceModule.sol"; +import "./YieldVault.sol"; +import "./AttestationRegistry.sol"; + +contract TokenFactory { + struct TokenSuite { + address token; + address compliance; + uint256 deployedAt; + uint256 totalSupply; + } + + address public attestationRegistry; + address public identityRegistry; + address public trustedIssuersRegistry; + address public platformCustody; + address public yieldVault; + address public owner; + + mapping(bytes32 => TokenSuite) public deployedTokens; + address[] public allTokens; + uint256 public tokenCount; + + event TokenSuiteDeployed(bytes32 indexed assetId, address token, address compliance, uint256 totalSupply); + event PrivateAssetTokenDeployed( + bytes32 indexed assetId, + address token, + address compliance, + uint256 totalSupply, + string assetType, + uint256 valuation + ); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor( + address _attestationRegistry, + address _identityRegistry, + address _trustedIssuersRegistry, + address _platformCustody, + address _yieldVault + ) { + owner = msg.sender; + attestationRegistry = _attestationRegistry; + identityRegistry = _identityRegistry; + trustedIssuersRegistry = _trustedIssuersRegistry; + platformCustody = _platformCustody; + yieldVault = _yieldVault; + } + + function deployTokenSuite( + bytes32 assetId, + uint256 totalSupply, + string memory name, + string memory symbol, + address issuer + ) external onlyOwner { + require(deployedTokens[assetId].token == address(0), "Asset already tokenized"); + require(AttestationRegistry(attestationRegistry).isAssetValid(assetId), "Asset not valid"); + + // 1. Deploy Compliance + ComplianceModule compliance = new ComplianceModule( + identityRegistry, + attestationRegistry, + assetId + ); + + // 2. Deploy Token + RWAToken token = new RWAToken( + assetId, + address(compliance), + identityRegistry, + totalSupply, + platformCustody, + name, + symbol, + issuer + ); + + // 3. Link Compliance (RWAToken already sets compliance, but if Compliance needed token ref, do it here) + // In this design, Compliance checks Registry directly, doesn't need token callback usually. + + // 4. Register in YieldVault + YieldVault(yieldVault).registerAsset(address(token), assetId, issuer); + + // 5. Store Suite + deployedTokens[assetId] = TokenSuite({ + token: address(token), + compliance: address(compliance), + deployedAt: block.timestamp, + totalSupply: totalSupply + }); + + allTokens.push(address(token)); + tokenCount++; + + emit TokenSuiteDeployed(assetId, address(token), address(compliance), totalSupply); + } + + /** + * @notice Deploy PrivateAssetToken suite with metadata + * @param assetId Unique asset identifier + * @param totalSupply Total token supply (usually 1e18 for whole asset) + * @param name Token name + * @param symbol Token symbol + * @param issuer Issuer address + * @param assetType Asset type ("DEED", "BOND", "INVOICE", etc.) + * @param location Physical location + * @param valuation Initial USD valuation (6 decimals) + * @param documentHash IPFS hash for documents + */ + function deployPrivateAssetTokenSuite( + bytes32 assetId, + uint256 totalSupply, + string memory name, + string memory symbol, + address issuer, + string memory assetType, + string memory location, + uint256 valuation, + string memory documentHash + ) external onlyOwner { + require(deployedTokens[assetId].token == address(0), "Asset already tokenized"); + require(valuation > 0, "Valuation must be > 0"); + + // 1. Deploy Compliance + ComplianceModule compliance = new ComplianceModule( + identityRegistry, + attestationRegistry, + assetId + ); + + // 2. Deploy PrivateAssetToken + PrivateAssetToken token = new PrivateAssetToken( + assetId, + address(compliance), + identityRegistry, + totalSupply, + platformCustody, + name, + symbol, + issuer, + assetType, + location, + valuation, + documentHash + ); + + // 3. Register in YieldVault (same as RWA tokens) + YieldVault(yieldVault).registerAsset(address(token), assetId, issuer); + + // 4. Store Suite + deployedTokens[assetId] = TokenSuite({ + token: address(token), + compliance: address(compliance), + deployedAt: block.timestamp, + totalSupply: totalSupply + }); + + allTokens.push(address(token)); + tokenCount++; + + emit PrivateAssetTokenDeployed( + assetId, + address(token), + address(compliance), + totalSupply, + assetType, + valuation + ); + } + + function getTokenByAssetId(bytes32 assetId) external view returns (TokenSuite memory) { + return deployedTokens[assetId]; + } + + function getAllTokens() external view returns (address[] memory) { + return allTokens; + } +} diff --git a/packages/arbitrum-contracts/contracts/core/TrustedIssuersRegistry.sol b/packages/arbitrum-contracts/contracts/core/TrustedIssuersRegistry.sol new file mode 100644 index 00000000..b1de70a1 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/TrustedIssuersRegistry.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +contract TrustedIssuersRegistry { + mapping(address => bool) public trustedIssuers; + address public owner; + + event TrustedIssuerAdded(address indexed issuer, uint256 timestamp); + event TrustedIssuerRemoved(address indexed issuer, uint256 timestamp); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor() { + owner = msg.sender; + } + + function addTrustedIssuer(address issuer) external onlyOwner { + trustedIssuers[issuer] = true; + emit TrustedIssuerAdded(issuer, block.timestamp); + } + + function removeTrustedIssuer(address issuer) external onlyOwner { + trustedIssuers[issuer] = false; + emit TrustedIssuerRemoved(issuer, block.timestamp); + } + + function isTrustedIssuer(address issuer) external view returns (bool) { + return trustedIssuers[issuer]; + } +} diff --git a/packages/arbitrum-contracts/contracts/core/YieldVault.sol b/packages/arbitrum-contracts/contracts/core/YieldVault.sol new file mode 100644 index 00000000..60ab068d --- /dev/null +++ b/packages/arbitrum-contracts/contracts/core/YieldVault.sol @@ -0,0 +1,235 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +interface IBurnableToken { + function burn(uint256 amount) external; + function burnFrom(address account, uint256 amount) external; + function totalSupply() external view returns (uint256); +} + +contract YieldVault { + struct AssetYield { + address tokenAddress; + bytes32 assetId; + address issuer; + uint256 totalSettlement; // Total USDC deposited for settlement (after platform fee) + uint256 totalTokenSupply; // Total RWA token supply at settlement time + uint256 totalClaimed; // Total USDC claimed by investors + uint256 totalTokensBurned; // Total RWA tokens burned during claims + uint256 settlementTimestamp; // When settlement was deposited + bool isSettled; // Whether settlement has been deposited + } + + struct UserYield { + uint256 totalClaimable; // DEPRECATED - kept for backwards compatibility + uint256 lastClaimTime; + } + + IERC20 public USDC; + address public platform; + address public factory; + + mapping(address => AssetYield) public assets; + mapping(address => UserYield) public userYields; + address[] public registeredAssets; + + event AssetRegistered(address indexed tokenAddress, bytes32 indexed assetId, address issuer); + event SettlementDeposited(address indexed tokenAddress, bytes32 indexed assetId, uint256 totalSettlement, uint256 totalTokenSupply, uint256 timestamp); + event YieldClaimed(address indexed user, address indexed tokenAddress, uint256 tokensBurned, uint256 usdcReceived, uint256 timestamp); + + // DEPRECATED EVENTS - kept for backwards compatibility + event YieldDeposited(address indexed tokenAddress, bytes32 indexed assetId, uint256 amount, uint256 timestamp); + event YieldDistributed(address indexed tokenAddress, uint256 totalAmount, uint256 holderCount, uint256 timestamp); + + modifier onlyPlatform() { + require(msg.sender == platform, "Only platform"); + _; + } + + modifier onlyFactory() { + require(msg.sender == factory, "Only factory"); + _; + } + + constructor(address _USDC, address _platform) { + USDC = IERC20(_USDC); + platform = _platform; + } + + function setFactory(address _factory) external { + require(factory == address(0), "Factory already set"); + factory = _factory; + } + + function registerAsset(address tokenAddress, bytes32 assetId, address issuer) external onlyFactory { + assets[tokenAddress].tokenAddress = tokenAddress; + assets[tokenAddress].assetId = assetId; + assets[tokenAddress].issuer = issuer; + registeredAssets.push(tokenAddress); + emit AssetRegistered(tokenAddress, assetId, issuer); + } + + /** + * @notice Deposit settlement USDC for an asset (new burn-to-claim model) + * @param tokenAddress The RWA token address + * @param totalSettlement The total USDC to distribute (after platform fee) + */ + function depositSettlement(address tokenAddress, uint256 totalSettlement) external onlyPlatform { + require(assets[tokenAddress].tokenAddress != address(0), "Asset not registered"); + require(!assets[tokenAddress].isSettled, "Settlement already deposited"); + require(totalSettlement > 0, "Settlement must be > 0"); + + // Get total token supply at settlement time + uint256 totalTokenSupply = IBurnableToken(tokenAddress).totalSupply(); + require(totalTokenSupply > 0, "Token supply is zero"); + + // Transfer USDC from platform to vault + require(USDC.transferFrom(msg.sender, address(this), totalSettlement), "USDC transfer failed"); + + // Record settlement + assets[tokenAddress].totalSettlement = totalSettlement; + assets[tokenAddress].totalTokenSupply = totalTokenSupply; + assets[tokenAddress].settlementTimestamp = block.timestamp; + assets[tokenAddress].isSettled = true; + + emit SettlementDeposited(tokenAddress, assets[tokenAddress].assetId, totalSettlement, totalTokenSupply, block.timestamp); + } + + /** + * @notice DEPRECATED: Old yield deposit function (kept for backwards compatibility) + */ + function depositYield(address tokenAddress, uint256 amount) external onlyPlatform { + require(assets[tokenAddress].tokenAddress != address(0), "Asset not registered"); + require(amount > 0, "Amount must be > 0"); + + require(USDC.transferFrom(msg.sender, address(this), amount), "Transfer failed"); + + // For backwards compatibility, treat as settlement if not yet settled + if (!assets[tokenAddress].isSettled) { + uint256 totalTokenSupply = IBurnableToken(tokenAddress).totalSupply(); + assets[tokenAddress].totalSettlement = amount; + assets[tokenAddress].totalTokenSupply = totalTokenSupply; + assets[tokenAddress].settlementTimestamp = block.timestamp; + assets[tokenAddress].isSettled = true; + } + + emit YieldDeposited(tokenAddress, assets[tokenAddress].assetId, amount, block.timestamp); + } + + /** + * @notice DEPRECATED: Old batch distribution function (kept for backwards compatibility) + */ + function distributeYieldBatch( + address tokenAddress, + address[] calldata holders, + uint256[] calldata amounts + ) external onlyPlatform { + require(holders.length == amounts.length, "Array mismatch"); + uint256 totalAmount = 0; + + for (uint256 i = 0; i < amounts.length; i++) { + totalAmount += amounts[i]; + userYields[holders[i]].totalClaimable += amounts[i]; + } + + // Note: Old accounting fields removed in new model + // This function is kept only for emergency backwards compatibility + emit YieldDistributed(tokenAddress, totalAmount, holders.length, block.timestamp); + } + + /** + * @notice Claim yield by burning RWA tokens (new burn-to-claim model) + * @param tokenAddress The RWA token address + * @param tokenAmount The amount of RWA tokens to burn and claim yield for + */ + function claimYield(address tokenAddress, uint256 tokenAmount) external { + require(assets[tokenAddress].isSettled, "Settlement not deposited yet"); + require(tokenAmount > 0, "Token amount must be > 0"); + + AssetYield storage asset = assets[tokenAddress]; + + // Calculate USDC to send: (tokenAmount / totalTokenSupply) * totalSettlement + uint256 usdcAmount = (tokenAmount * asset.totalSettlement) / asset.totalTokenSupply; + require(usdcAmount > 0, "USDC amount too small"); + + // Ensure vault has enough USDC + uint256 remainingSettlement = asset.totalSettlement - asset.totalClaimed; + require(usdcAmount <= remainingSettlement, "Insufficient USDC in vault"); + + // Burn investor's RWA tokens + IBurnableToken(tokenAddress).burnFrom(msg.sender, tokenAmount); + + // Update accounting + asset.totalClaimed += usdcAmount; + asset.totalTokensBurned += tokenAmount; + userYields[msg.sender].lastClaimTime = block.timestamp; + + // Transfer USDC to investor + require(USDC.transfer(msg.sender, usdcAmount), "USDC transfer failed"); + + emit YieldClaimed(msg.sender, tokenAddress, tokenAmount, usdcAmount, block.timestamp); + } + + /** + * @notice DEPRECATED: Old claim function (kept for backwards compatibility) + */ + function claimAllYield() external { + uint256 claimable = userYields[msg.sender].totalClaimable; + require(claimable > 0, "Nothing to claim"); + + userYields[msg.sender].totalClaimable = 0; + userYields[msg.sender].lastClaimTime = block.timestamp; + + require(USDC.transfer(msg.sender, claimable), "Transfer failed"); + + // Note: Cannot emit new YieldClaimed event format without tokenAddress + // Keep old behavior for backwards compatibility + } + + /** + * @notice Get claimable USDC for a token amount (new model) + * @param tokenAddress The RWA token address + * @param tokenAmount The amount of tokens to check + * @return The USDC amount claimable for the given token amount + */ + function getClaimableForTokens(address tokenAddress, uint256 tokenAmount) external view returns (uint256) { + if (!assets[tokenAddress].isSettled || tokenAmount == 0) { + return 0; + } + + return (tokenAmount * assets[tokenAddress].totalSettlement) / assets[tokenAddress].totalTokenSupply; + } + + /** + * @notice Get settlement info for an asset + * @param tokenAddress The RWA token address + * @return totalSettlement Total USDC deposited + * @return totalTokenSupply Total RWA token supply at settlement + * @return totalClaimed Total USDC claimed so far + * @return totalTokensBurned Total tokens burned so far + * @return yieldPerToken USDC yield per token (in 6 decimals) + */ + function getSettlementInfo(address tokenAddress) external view returns ( + uint256 totalSettlement, + uint256 totalTokenSupply, + uint256 totalClaimed, + uint256 totalTokensBurned, + uint256 yieldPerToken + ) { + AssetYield storage asset = assets[tokenAddress]; + totalSettlement = asset.totalSettlement; + totalTokenSupply = asset.totalTokenSupply; + totalClaimed = asset.totalClaimed; + totalTokensBurned = asset.totalTokensBurned; + yieldPerToken = totalTokenSupply > 0 ? (totalSettlement * 1e18) / totalTokenSupply : 0; + } + + /** + * @notice DEPRECATED: Old getUserClaimable (kept for backwards compatibility) + */ + function getUserClaimable(address user) external view returns (uint256) { + return userYields[user].totalClaimable; + } +} diff --git a/packages/arbitrum-contracts/contracts/integrations/ArbitrumSwapIntegration.sol b/packages/arbitrum-contracts/contracts/integrations/ArbitrumSwapIntegration.sol new file mode 100644 index 00000000..570ef5bb --- /dev/null +++ b/packages/arbitrum-contracts/contracts/integrations/ArbitrumSwapIntegration.sol @@ -0,0 +1,247 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +// DEX interface +interface IArbitrumDEX { + function swapStARBForUSDC( + uint256 stARBAmount, + uint256 minUSDCOut + ) external returns (uint256 usdcOut); + + function getQuote(uint256 stARBAmount) external view returns (uint256); +} + +// Price oracle interface +interface IStARBPriceOracle { + function getPrice() external view returns (uint256); +} + +/** + * @title ArbitrumSwapIntegration + * @notice Wrapper for Arbitrum DEX integration with slippage protection + * @dev Handles stARB → USDC swaps for yield harvesting with safety checks + * + * Features: + * - Slippage protection (max 3%) + * - Price validation against oracle + * - Swap statistics tracking + * - Emergency pause functionality + */ +contract ArbitrumSwapIntegration is Ownable, ReentrancyGuard { + + IERC20 public stARB; + IERC20 public usdc; + IArbitrumDEX public dex; + IStARBPriceOracle public priceOracle; + + // Slippage parameters + uint256 public constant MAX_SLIPPAGE = 300; // 3% max slippage (basis points) + uint256 public constant BASIS_POINTS = 10000; + + // Swap statistics + uint256 public totalSwapsExecuted; + uint256 public totalStARBSwapped; + uint256 public totalUSDCReceived; + + // Emergency controls + bool public paused; + + // Events + event SwapExecuted( + uint256 indexed timestamp, + uint256 stARBAmount, + uint256 usdcReceived, + uint256 effectiveRate + ); + event SlippageExceeded(uint256 expected, uint256 actual, uint256 slippage); + event PausedUpdated(bool paused); + + modifier whenNotPaused() { + require(!paused, "Contract is paused"); + _; + } + + /** + * @notice Initialize Arbitrum Swap Integration + * @param _stARB stARB token address + * @param _usdc USDC token address + * @param _dex Arbitrum DEX address + * @param _priceOracle Price oracle address (can be stARB token itself) + */ + constructor( + address _stARB, + address _usdc, + address _dex, + address _priceOracle + ) Ownable(msg.sender) { + stARB = IERC20(_stARB); + usdc = IERC20(_usdc); + dex = IArbitrumDEX(_dex); + priceOracle = IStARBPriceOracle(_priceOracle); + paused = false; + } + + /** + * @notice Pause/unpause swaps (emergency) + * @param _paused New pause state + */ + function setPaused(bool _paused) external onlyOwner { + paused = _paused; + emit PausedUpdated(_paused); + } + + /** + * @notice Update DEX address + * @param _dex New DEX address + */ + function setDEX(address _dex) external onlyOwner { + require(_dex != address(0), "Invalid address"); + dex = IArbitrumDEX(_dex); + } + + /** + * @notice Update price oracle address + * @param _oracle New oracle address + */ + function setPriceOracle(address _oracle) external onlyOwner { + require(_oracle != address(0), "Invalid address"); + priceOracle = IStARBPriceOracle(_oracle); + } + + /** + * @notice Swap stARB for USDC with slippage protection + * @param stARBAmount Amount of stARB to swap (18 decimals) + * @param stARBPriceUSD Current stARB price in USD (18 decimals, provided by backend) + * @return usdcReceived Amount of USDC received (6 decimals) + */ + function swapStARBToUSDC( + uint256 stARBAmount, + uint256 stARBPriceUSD + ) external nonReentrant whenNotPaused returns (uint256 usdcReceived) { + require(stARBAmount > 0, "Amount must be > 0"); + require(stARBPriceUSD > 0, "Invalid stARB price"); + + // Get quote from DEX + uint256 expectedUSDC = dex.getQuote(stARBAmount); + require(expectedUSDC > 0, "Invalid quote"); + + // Validate quote against provided price + // _validatePrice(stARBAmount, expectedUSDC, stARBPriceUSD); + + // Calculate minimum output with slippage tolerance + uint256 minUSDCOut = (expectedUSDC * (BASIS_POINTS - MAX_SLIPPAGE)) / + BASIS_POINTS; + + // Transfer stARB from caller to this contract + require( + stARB.transferFrom(msg.sender, address(this), stARBAmount), + "stARB transfer failed" + ); + + // Approve DEX to spend stARB + stARB.approve(address(dex), stARBAmount); + + // Execute swap + usdcReceived = dex.swapStARBForUSDC(stARBAmount, minUSDCOut); + + // Verify slippage is within tolerance + uint256 slippageBps = ((expectedUSDC - usdcReceived) * BASIS_POINTS) / + expectedUSDC; + require(slippageBps <= MAX_SLIPPAGE, "Slippage exceeded"); + + // Update statistics + totalSwapsExecuted++; + totalStARBSwapped += stARBAmount; + totalUSDCReceived += usdcReceived; + + // Transfer USDC to caller + require(usdc.transfer(msg.sender, usdcReceived), "USDC transfer failed"); + + // Calculate effective rate (USDC per stARB, 6 decimals) + uint256 effectiveRate = (usdcReceived * 1e18) / stARBAmount; + + emit SwapExecuted(block.timestamp, stARBAmount, usdcReceived, effectiveRate); + } + + /** + * @notice Get swap quote from DEX + * @param stARBAmount Amount of stARB (18 decimals) + * @return Expected USDC output (6 decimals) + */ + function getQuote(uint256 stARBAmount) external view returns (uint256) { + return dex.getQuote(stARBAmount); + } + + /** + * @notice Get stARB price from oracle + * @return Price in USD (18 decimals) + */ + function getStARBPrice() external view returns (uint256) { + return priceOracle.getPrice(); + } + + /** + * @notice Calculate USD value of stARB amount + * @param stARBAmount Amount of stARB (18 decimals) + * @return USD value (6 decimals for USDC) + */ + function getStARBValueUSD(uint256 stARBAmount) external view returns (uint256) { + uint256 priceUSD = priceOracle.getPrice(); // 18 decimals + // Convert to USDC 6 decimals: (stARB * price) / 1e18 / 1e12 + return (stARBAmount * priceUSD) / 1e30; + } + + /** + * @notice Get swap statistics + * @return Total swaps, total stARB swapped, total USDC received + */ + function getSwapStats() external view returns (uint256, uint256, uint256) { + return (totalSwapsExecuted, totalStARBSwapped, totalUSDCReceived); + } + + /** + * @notice Validate swap price against provided stARB price + * @param stARBAmount stARB amount being swapped + * @param expectedUSDC Expected USDC from DEX quote + * @param stARBPriceUSD stARB price provided by backend (18 decimals) + */ + function _validatePrice(uint256 stARBAmount, uint256 expectedUSDC, uint256 stARBPriceUSD) internal pure { + // Calculate expected USDC from provided price + uint256 priceExpectedUSDC = (stARBAmount * stARBPriceUSD) / 1e30; // Convert to 6 decimals + + // Allow 5% deviation between provided price and DEX + uint256 maxDeviation = 10000; // 100% in basis points + uint256 deviationBps; + + if (expectedUSDC > priceExpectedUSDC) { + deviationBps = + ((expectedUSDC - priceExpectedUSDC) * BASIS_POINTS) / + priceExpectedUSDC; + } else { + deviationBps = + ((priceExpectedUSDC - expectedUSDC) * BASIS_POINTS) / + priceExpectedUSDC; + } + + require( + deviationBps <= maxDeviation, + "Price deviation too high" + ); + } + + /** + * @notice Emergency withdraw tokens (owner only) + * @param token Token address + * @param amount Amount to withdraw + */ + function emergencyWithdraw( + address token, + uint256 amount + ) external onlyOwner { + require(IERC20(token).transfer(owner(), amount), "Transfer failed"); + } +} diff --git a/packages/arbitrum-contracts/contracts/integrations/OAID.sol b/packages/arbitrum-contracts/contracts/integrations/OAID.sol new file mode 100644 index 00000000..35c26ec6 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/integrations/OAID.sol @@ -0,0 +1,542 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +/** + * @title OAID (On-chain Asset ID) + * @notice Issues credit lines backed by private asset tokens locked in SolvencyVault + * @dev External protocols can verify credit lines and extend credit based on collateral + * + * Flow: + * 1. User completes KYC → registerUser() creates OAID profile + * 2. User deposits collateral → SolvencyVault calls issueCreditLine() + * 3. External protocols query credit availability + * 4. When SolvencyVault position is liquidated, credit line is revoked + */ +contract OAID is Ownable, ReentrancyGuard { + // Payment history entry + struct PaymentRecord { + uint256 timestamp; // Payment time + uint256 amount; // Amount paid (6 decimals) + bool onTime; // Whether payment was on time + uint256 daysLate; // Days late (0 if on time) + } + + // Credit line structure + struct CreditLine { + address user; // Borrower address + address collateralToken; // Token backing the credit + uint256 collateralAmount; // Token amount (18 decimals) + uint256 creditLimit; // Max credit in USD (6 decimals) + uint256 creditUsed; // Credit utilized externally (6 decimals) + uint256 solvencyPositionId; // Reference to SolvencyVault position + uint256 issuedAt; // Creation timestamp + uint256 totalPayments; // Total number of payments made + uint256 onTimePayments; // Number of on-time payments + uint256 latePayments; // Number of late payments + uint256 totalAmountRepaid; // Total amount repaid (6 decimals) + bool liquidated; // Whether position was liquidated + uint256 liquidatedAt; // Liquidation timestamp (0 if not liquidated) + bool active; // Credit line status + } + + // Authorized vaults + address public solvencyVault; + + // User registration + mapping(address => bool) public registeredUsers; + mapping(address => uint256) public userRegistrationTime; + + // Credit line management + mapping(uint256 => CreditLine) public creditLines; + uint256 public nextCreditLineId; + + // Payment history + mapping(uint256 => PaymentRecord[]) public paymentHistory; // creditLineId => payments + + // User credit lines + mapping(address => uint256[]) public userCreditLines; + + // Events + event UserRegistered( + address indexed user, + uint256 timestamp + ); + event CreditLineIssued( + uint256 indexed creditLineId, + address indexed user, + address collateralToken, + uint256 collateralAmount, + uint256 creditLimit, + uint256 solvencyPositionId + ); + event CreditLineUpdated( + uint256 indexed creditLineId, + uint256 oldCreditLimit, + uint256 newCreditLimit + ); + event CreditUsed( + uint256 indexed creditLineId, + uint256 amount, + uint256 totalUsed + ); + event CreditRepaid( + uint256 indexed creditLineId, + uint256 amount, + uint256 remainingUsed + ); + event CreditLineRevoked( + uint256 indexed creditLineId, + string reason + ); + event PaymentRecorded( + uint256 indexed creditLineId, + address indexed user, + uint256 amount, + bool onTime, + uint256 daysLate + ); + event PositionLiquidated( + uint256 indexed creditLineId, + address indexed user, + uint256 timestamp + ); + + modifier onlySolvencyVault() { + require(msg.sender == solvencyVault, "Only SolvencyVault"); + _; + } + + /** + * @notice Initialize OAID + */ + constructor() Ownable(msg.sender) { + nextCreditLineId = 1; + } + + /** + * @notice Set SolvencyVault address (one-time) + * @param _solvencyVault SolvencyVault contract address + */ + function setSolvencyVault(address _solvencyVault) external onlyOwner { + require(solvencyVault == address(0), "SolvencyVault already set"); + require(_solvencyVault != address(0), "Invalid address"); + solvencyVault = _solvencyVault; + } + + /** + * @notice Register user (called after KYC verification) + * @param user User address to register + */ + function registerUser(address user) external onlyOwner { + require(user != address(0), "Invalid user address"); + require(!registeredUsers[user], "User already registered"); + + registeredUsers[user] = true; + userRegistrationTime[user] = block.timestamp; + + emit UserRegistered(user, block.timestamp); + } + + /** + * @notice Check if user is registered + * @param user User address + * @return bool Registration status + */ + function isUserRegistered(address user) external view returns (bool) { + return registeredUsers[user]; + } + + /** + * @notice Issue credit line backed by collateral (only for registered users) + * @param user Borrower address + * @param collateralToken Token address + * @param collateralAmount Token amount (18 decimals) + * @param valueUSD Collateral value in USD (6 decimals) + * @param solvencyPositionId SolvencyVault position ID + * @return creditLineId Created credit line ID + */ + function issueCreditLine( + address user, + address collateralToken, + uint256 collateralAmount, + uint256 valueUSD, + uint256 solvencyPositionId + ) external onlySolvencyVault nonReentrant returns (uint256 creditLineId) { + require(registeredUsers[user], "User not registered"); + require(collateralToken != address(0), "Invalid token"); + require(collateralAmount > 0, "Amount must be > 0"); + require(valueUSD > 0, "Value must be > 0"); + + // Calculate credit limit (70% of collateral value) + uint256 creditLimit = (valueUSD * 7000) / 10000; + + creditLineId = _createCreditLine( + user, + collateralToken, + collateralAmount, + creditLimit, + solvencyPositionId + ); + } + + /** + * @notice Update existing credit line when collateral value changes + * @param creditLineId Credit line ID to update + * @param newValueUSD New collateral value in USD (6 decimals) + */ + function updateCreditLine( + uint256 creditLineId, + uint256 newValueUSD + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Credit line not active"); + require(newValueUSD > 0, "Value must be > 0"); + + uint256 oldCreditLimit = creditLine.creditLimit; + uint256 newCreditLimit = (newValueUSD * 7000) / 10000; + + creditLine.creditLimit = newCreditLimit; + + emit CreditLineUpdated(creditLineId, oldCreditLimit, newCreditLimit); + } + + /** + * @notice Internal function to create credit line + */ + function _createCreditLine( + address user, + address collateralToken, + uint256 collateralAmount, + uint256 creditLimit, + uint256 solvencyPositionId + ) internal returns (uint256 creditLineId) { + // Create credit line + creditLineId = nextCreditLineId++; + creditLines[creditLineId] = CreditLine({ + user: user, + collateralToken: collateralToken, + collateralAmount: collateralAmount, + creditLimit: creditLimit, + creditUsed: 0, + solvencyPositionId: solvencyPositionId, + issuedAt: block.timestamp, + totalPayments: 0, + onTimePayments: 0, + latePayments: 0, + totalAmountRepaid: 0, + liquidated: false, + liquidatedAt: 0, + active: true + }); + + // Track user's credit lines + userCreditLines[user].push(creditLineId); + + emit CreditLineIssued( + creditLineId, + user, + collateralToken, + collateralAmount, + creditLimit, + solvencyPositionId + ); + } + + /** + * @notice Record credit usage (called by external protocols) + * @param creditLineId Credit line ID + * @param amount Amount of credit used (6 decimals) + */ + function recordCreditUsage( + uint256 creditLineId, + uint256 amount + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Credit line not active"); + require(amount > 0, "Amount must be > 0"); + + uint256 availableCredit = creditLine.creditLimit - creditLine.creditUsed; + require(amount <= availableCredit, "Exceeds available credit"); + + creditLine.creditUsed += amount; + + emit CreditUsed(creditLineId, amount, creditLine.creditUsed); + } + + /** + * @notice Record credit repayment (called by external protocols) + * @param creditLineId Credit line ID + * @param amount Amount repaid (6 decimals) + */ + function recordCreditRepayment( + uint256 creditLineId, + uint256 amount + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Credit line not active"); + require(amount > 0, "Amount must be > 0"); + require(amount <= creditLine.creditUsed, "Amount exceeds debt"); + + creditLine.creditUsed -= amount; + + emit CreditRepaid(creditLineId, amount, creditLine.creditUsed); + } + + /** + * @notice Revoke credit line (called by SolvencyVault on liquidation) + * @param creditLineId Credit line ID + * @param reason Revocation reason + */ + function revokeCreditLine( + uint256 creditLineId, + string memory reason + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Already revoked"); + + creditLine.active = false; + + // Mark as liquidated if reason contains "liquidat" + if (bytes(reason).length > 0 && _contains(reason, "liquidat")) { + creditLine.liquidated = true; + creditLine.liquidatedAt = block.timestamp; + emit PositionLiquidated(creditLineId, creditLine.user, block.timestamp); + } + + emit CreditLineRevoked(creditLineId, reason); + } + + /** + * @notice Record a payment made by user (called by SolvencyVault) + * @param creditLineId Credit line ID + * @param amount Amount paid (6 decimals) + * @param onTime Whether payment was made on time + * @param daysLate Number of days late (0 if on time) + */ + function recordPayment( + uint256 creditLineId, + uint256 amount, + bool onTime, + uint256 daysLate + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Credit line not active"); + // Allow amount to be 0 for missed payments (where onTime is false) + require(amount > 0 || !onTime, "Amount must be > 0 for on-time payments"); + + // Update payment statistics + creditLine.totalPayments++; + creditLine.totalAmountRepaid += amount; + + if (onTime) { + creditLine.onTimePayments++; + } else { + creditLine.latePayments++; + } + + // Store payment record + paymentHistory[creditLineId].push(PaymentRecord({ + timestamp: block.timestamp, + amount: amount, + onTime: onTime, + daysLate: daysLate + })); + + emit PaymentRecorded(creditLineId, creditLine.user, amount, onTime, daysLate); + } + + /** + * @notice Get available credit for credit line + * @param creditLineId Credit line ID + * @return Available credit in USD (6 decimals) + */ + function getAvailableCredit(uint256 creditLineId) external view returns (uint256) { + CreditLine memory creditLine = creditLines[creditLineId]; + if (!creditLine.active) return 0; + + return creditLine.creditLimit - creditLine.creditUsed; + } + + /** + * @notice Get all credit lines for user + * @param user User address + * @return Array of credit line IDs + */ + function getUserCreditLines(address user) external view returns (uint256[] memory) { + return userCreditLines[user]; + } + + /** + * @notice Get credit line details + * @param creditLineId Credit line ID + * @return CreditLine struct + */ + function getCreditLine(uint256 creditLineId) external view returns (CreditLine memory) { + return creditLines[creditLineId]; + } + + /** + * @notice Get total credit limit for user (across all active lines) + * @param user User address + * @return Total credit limit in USD (6 decimals) + */ + function getTotalCreditLimit(address user) external view returns (uint256) { + uint256 totalLimit = 0; + uint256[] memory lineIds = userCreditLines[user]; + + for (uint256 i = 0; i < lineIds.length; i++) { + CreditLine memory line = creditLines[lineIds[i]]; + if (line.active) { + totalLimit += line.creditLimit; + } + } + + return totalLimit; + } + + /** + * @notice Get total available credit for user + * @param user User address + * @return Total available credit in USD (6 decimals) + */ + function getTotalAvailableCredit(address user) external view returns (uint256) { + uint256 totalAvailable = 0; + uint256[] memory lineIds = userCreditLines[user]; + + for (uint256 i = 0; i < lineIds.length; i++) { + CreditLine memory line = creditLines[lineIds[i]]; + if (line.active) { + totalAvailable += (line.creditLimit - line.creditUsed); + } + } + + return totalAvailable; + } + + /** + * @notice Get payment history for a credit line + * @param creditLineId Credit line ID + * @return Array of payment records + */ + function getPaymentHistory(uint256 creditLineId) external view returns (PaymentRecord[] memory) { + return paymentHistory[creditLineId]; + } + + /** + * @notice Calculate credit score for user (0-1000) + * @param user User address + * @return Credit score based on payment history + */ + function getCreditScore(address user) external view returns (uint256) { + uint256[] memory lineIds = userCreditLines[user]; + if (lineIds.length == 0) return 0; + + uint256 totalPayments = 0; + uint256 totalOnTime = 0; + uint256 totalLiquidations = 0; + + for (uint256 i = 0; i < lineIds.length; i++) { + CreditLine memory line = creditLines[lineIds[i]]; + totalPayments += line.totalPayments; + totalOnTime += line.onTimePayments; + if (line.liquidated) { + totalLiquidations++; + } + } + + // No payment history = neutral score of 500 + if (totalPayments == 0) return 500; + + // Base score from payment ratio (0-800 points) + uint256 paymentScore = (totalOnTime * 800) / totalPayments; + + // Penalty for liquidations (-200 points per liquidation, max -400) + uint256 liquidationPenalty = totalLiquidations * 200; + if (liquidationPenalty > 400) liquidationPenalty = 400; + + // Bonus for high number of on-time payments (up to +200 points) + uint256 volumeBonus = totalOnTime > 10 ? 200 : (totalOnTime * 20); + + // Calculate final score (0-1000) + uint256 score = paymentScore + volumeBonus; + if (score > liquidationPenalty) { + score -= liquidationPenalty; + } else { + score = 0; + } + + if (score > 1000) score = 1000; + + return score; + } + + /** + * @notice Get credit profile summary for user + * @param user User address + * @return activeCreditLines Number of active credit lines + * @return totalCreditLimit Total credit limit + * @return totalPayments Total payments made + * @return onTimePayments On-time payments + * @return latePayments Late payments + * @return liquidations Number of liquidated positions + * @return creditScore Credit score (0-1000) + */ + function getCreditProfile(address user) external view returns ( + uint256 activeCreditLines, + uint256 totalCreditLimit, + uint256 totalPayments, + uint256 onTimePayments, + uint256 latePayments, + uint256 liquidations, + uint256 creditScore + ) { + uint256[] memory lineIds = userCreditLines[user]; + + for (uint256 i = 0; i < lineIds.length; i++) { + CreditLine memory line = creditLines[lineIds[i]]; + if (line.active) { + activeCreditLines++; + totalCreditLimit += line.creditLimit; + } + totalPayments += line.totalPayments; + onTimePayments += line.onTimePayments; + latePayments += line.latePayments; + if (line.liquidated) { + liquidations++; + } + } + + // Calculate credit score + creditScore = this.getCreditScore(user); + } + + /** + * @notice Helper function to check if string contains substring + * @param str String to search in + * @param substr Substring to search for + * @return bool Whether substring is found + */ + function _contains(string memory str, string memory substr) internal pure returns (bool) { + bytes memory strBytes = bytes(str); + bytes memory substrBytes = bytes(substr); + + if (substrBytes.length > strBytes.length) return false; + if (substrBytes.length == 0) return false; + + for (uint256 i = 0; i <= strBytes.length - substrBytes.length; i++) { + bool found = true; + for (uint256 j = 0; j < substrBytes.length; j++) { + if (strBytes[i + j] != substrBytes[j]) { + found = false; + break; + } + } + if (found) return true; + } + + return false; + } +} \ No newline at end of file diff --git a/packages/arbitrum-contracts/contracts/libraries/MerkleProof.sol b/packages/arbitrum-contracts/contracts/libraries/MerkleProof.sol new file mode 100644 index 00000000..6f2544ed --- /dev/null +++ b/packages/arbitrum-contracts/contracts/libraries/MerkleProof.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +library MerkleProof { + // Placeholder +} diff --git a/packages/arbitrum-contracts/contracts/libraries/SignatureVerification.sol b/packages/arbitrum-contracts/contracts/libraries/SignatureVerification.sol new file mode 100644 index 00000000..3c32aa89 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/libraries/SignatureVerification.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +library SignatureVerification { + // Placeholder +} diff --git a/packages/arbitrum-contracts/contracts/marketplace/PrimaryMarket.sol b/packages/arbitrum-contracts/contracts/marketplace/PrimaryMarket.sol new file mode 100644 index 00000000..aef4790d --- /dev/null +++ b/packages/arbitrum-contracts/contracts/marketplace/PrimaryMarket.sol @@ -0,0 +1,244 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "../core/RWAToken.sol"; +import "../core/IdentityRegistry.sol"; + +contract PrimaryMarket { + enum ListingType { STATIC, AUCTION } + enum AuctionPhase { BIDDING, ENDED } + + struct Bid { + address bidder; + uint256 tokenAmount; + uint256 price; // Limit price per token + uint256 usdcDeposited; + bool settled; + } + + struct Listing { + address tokenAddress; + bytes32 assetId; + ListingType listingType; + // Static params + uint256 staticPrice; + // Auction params + uint256 minPrice; // Minimum bid price (lower bound of range) + uint256 reservePrice; // Reserve price (avg of min/max, used for clearing) + uint256 endTime; + uint256 clearingPrice; // Set when auction ends + AuctionPhase auctionPhase; + // Common params + uint256 totalSupply; + uint256 sold; // For static: amount sold. For auction: tokens allocated. + bool active; + uint256 minInvestment; + } + + // AssetId => Listing + mapping(bytes32 => Listing) public listings; + // AssetId => Array of Bids + mapping(bytes32 => Bid[]) public bids; + + address public platformCustody; + IERC20 public USDC; + address public factory; + address public owner; + + // Authorized vaults for creating liquidation listings + mapping(address => bool) public authorizedVaults; + + event ListingCreated(bytes32 indexed assetId, address tokenAddress, ListingType listingType, uint256 priceOrReserve); + event TokensPurchased(bytes32 indexed assetId, address indexed buyer, uint256 amount, uint256 price, uint256 totalPayment); + event BidSubmitted(bytes32 indexed assetId, address indexed bidder, uint256 tokenAmount, uint256 price, uint256 bidIndex); + event AuctionEnded(bytes32 indexed assetId, uint256 clearingPrice, uint256 totalTokensSold); + event BidSettled(bytes32 indexed assetId, address indexed bidder, uint256 tokensReceived, uint256 cost, uint256 refund); + event VaultAuthorized(address indexed vault, bool authorized); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + modifier onlyOwnerOrAuthorizedVault() { + require( + msg.sender == owner || authorizedVaults[msg.sender], + "Only owner or authorized vault" + ); + _; + } + + constructor(address _factory, address _platformCustody, address _USDC) { + owner = msg.sender; + factory = _factory; + platformCustody = _platformCustody; + USDC = IERC20(_USDC); + } + + /** + * @notice Authorize or deauthorize vault for creating listings + * @param vault Vault address + * @param authorized Authorization status + */ + function authorizeVault(address vault, bool authorized) external onlyOwner { + require(vault != address(0), "Invalid vault address"); + authorizedVaults[vault] = authorized; + emit VaultAuthorized(vault, authorized); + } + + function createListing( + bytes32 assetId, + address tokenAddress, + ListingType listingType, + uint256 priceOrReserve, + uint256 minPrice, + uint256 duration, + uint256 totalSupply, + uint256 minInvestment + ) external onlyOwnerOrAuthorizedVault { + require(!listings[assetId].active, "Already listed"); + + Listing storage newListing = listings[assetId]; + newListing.tokenAddress = tokenAddress; + newListing.assetId = assetId; + newListing.listingType = listingType; + newListing.totalSupply = totalSupply; + newListing.active = true; + newListing.minInvestment = minInvestment; + + if (listingType == ListingType.STATIC) { + newListing.staticPrice = priceOrReserve; + } else { + newListing.minPrice = minPrice; + newListing.reservePrice = priceOrReserve; + newListing.endTime = block.timestamp + duration; + newListing.auctionPhase = AuctionPhase.BIDDING; + } + + emit ListingCreated(assetId, tokenAddress, listingType, priceOrReserve); + } + + // --- STATIC LISTING FUNCTIONS --- + + function buyTokens(bytes32 assetId, uint256 amount) external { + Listing storage listing = listings[assetId]; + require(listing.active, "Listing not active"); + require(listing.listingType == ListingType.STATIC, "Not a static listing"); + require(amount >= listing.minInvestment, "Below min investment"); + require(amount <= (listing.totalSupply - listing.sold), "Insufficient supply"); + + uint256 price = listing.staticPrice; + uint256 payment = price * amount / 1e18; // Price is per 1e18 tokens (1 full token) + + require(USDC.transferFrom(msg.sender, platformCustody, payment), "Payment failed"); + + RWAToken(listing.tokenAddress).transferFrom(platformCustody, msg.sender, amount); + + listing.sold += amount; + if (listing.sold == listing.totalSupply) { + listing.active = false; + } + + emit TokensPurchased(assetId, msg.sender, amount, price, payment); + } + + // --- AUCTION FUNCTIONS --- + + function submitBid(bytes32 assetId, uint256 tokenAmount, uint256 price) external { + Listing storage listing = listings[assetId]; + require(listing.active, "Listing not active"); + require(listing.listingType == ListingType.AUCTION, "Not an auction"); + require(listing.auctionPhase == AuctionPhase.BIDDING, "Bidding closed"); + require(block.timestamp < listing.endTime, "Auction expired"); + require(price >= listing.minPrice, "Below minimum price"); + require(tokenAmount >= listing.minInvestment, "Below min investment"); + + uint256 deposit = price * tokenAmount / 1e18; + require(USDC.transferFrom(msg.sender, address(this), deposit), "Deposit failed"); + + bids[assetId].push(Bid({ + bidder: msg.sender, + tokenAmount: tokenAmount, + price: price, + usdcDeposited: deposit, + settled: false + })); + + emit BidSubmitted(assetId, msg.sender, tokenAmount, price, bids[assetId].length - 1); + } + + function endAuction(bytes32 assetId, uint256 clearingPrice) external onlyOwner { + Listing storage listing = listings[assetId]; + require(listing.listingType == ListingType.AUCTION, "Not an auction"); + require(listing.auctionPhase == AuctionPhase.BIDDING, "Already ended"); + // We allow manual ending even before endTime if admin decides, or require endTime passed: + // require(block.timestamp >= listing.endTime, "Auction not yet ended"); + + listing.auctionPhase = AuctionPhase.ENDED; + listing.clearingPrice = clearingPrice; + listing.active = false; // Bidding stops + + emit AuctionEnded(assetId, clearingPrice, 0); // Emitting 0 for tokens sold as it's not known until settlement. Off-chain services should calculate this. + } + + function settleBid(bytes32 assetId, uint256 bidIndex) external { + Listing storage listing = listings[assetId]; + require(listing.listingType == ListingType.AUCTION, "Not an auction"); + require(listing.auctionPhase == AuctionPhase.ENDED, "Auction not ended"); + + Bid storage bid = bids[assetId][bidIndex]; + require(!bid.settled, "Already settled"); + require(msg.sender == bid.bidder || msg.sender == owner, "Not authorized to settle"); + + bid.settled = true; + + if (bid.price > listing.clearingPrice) { + // --- Oversubscription Protection --- + uint256 tokensToAllocate = bid.tokenAmount; + uint256 remainingSupply = listing.totalSupply - listing.sold; + + if (tokensToAllocate > remainingSupply) { + tokensToAllocate = remainingSupply; + } + + if (tokensToAllocate > 0) { + uint256 cost = listing.clearingPrice * tokensToAllocate / 1e18; + uint256 refund = bid.usdcDeposited - cost; + + // 1. Update sold amount BEFORE transfer + listing.sold += tokensToAllocate; + + // 2. Transfer tokens to bidder + RWAToken(listing.tokenAddress).transferFrom(platformCustody, bid.bidder, tokensToAllocate); + + // 3. Transfer cost to platform + require(USDC.transfer(platformCustody, cost), "Platform transfer failed"); + + // 4. Refund excess + if (refund > 0) { + require(USDC.transfer(bid.bidder, refund), "Refund failed"); + } + + emit BidSettled(assetId, bid.bidder, tokensToAllocate, cost, refund); + } else { + // No supply left for this bid + require(USDC.transfer(bid.bidder, bid.usdcDeposited), "Refund failed"); + emit BidSettled(assetId, bid.bidder, 0, 0, bid.usdcDeposited); + } + } else { + // Losing Bid - Full Refund + require(USDC.transfer(bid.bidder, bid.usdcDeposited), "Refund failed"); + emit BidSettled(assetId, bid.bidder, 0, 0, bid.usdcDeposited); + } + } + + // Helper to get bid count + function getBidCount(bytes32 assetId) external view returns (uint256) { + return bids[assetId].length; + } + + function closeListing(bytes32 assetId) external onlyOwner { + listings[assetId].active = false; + } +} diff --git a/packages/arbitrum-contracts/contracts/marketplace/SecondaryMarket.sol b/packages/arbitrum-contracts/contracts/marketplace/SecondaryMarket.sol new file mode 100644 index 00000000..73df88cb --- /dev/null +++ b/packages/arbitrum-contracts/contracts/marketplace/SecondaryMarket.sol @@ -0,0 +1,259 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "../core/IdentityRegistry.sol"; + +/** + * @title SecondaryMarket + * @notice Trustless P2P Orderbook Exchange for RWA Tokens + * @dev Supports Limit Orders (Maker) and Market Fills (Taker) with partial fills. + */ +contract SecondaryMarket is ReentrancyGuard, Ownable { + using SafeERC20 for IERC20; + + struct Order { + uint256 id; + address maker; + address tokenAddress; + uint256 amount; // Remaining amount of RWA tokens to buy/sell + uint256 pricePerToken; // USDC per 1e18 RWA tokens (1:1 ratio = 1e6 USDC) + bool isBuy; // true = Bid (Buy RWA), false = Ask (Sell RWA) + bool isActive; + } + + IERC20 public usdc; + IdentityRegistry public identityRegistry; + + uint256 public nextOrderId; + mapping(uint256 => Order) public orders; + + // Events optimized for Indexer + event OrderCreated( + uint256 indexed orderId, + address indexed maker, + address indexed tokenAddress, + uint256 amount, + uint256 pricePerToken, + bool isBuy, + uint256 timestamp + ); + + event OrderFilled( + uint256 indexed orderId, + address indexed taker, + address indexed maker, + address tokenAddress, + uint256 amountFilled, + uint256 totalCost, + uint256 remainingAmount, + uint256 timestamp + ); + + event OrderCancelled( + uint256 indexed orderId, + address indexed maker, + uint256 timestamp + ); + + event OrderSettledForYield( + uint256 indexed orderId, + address indexed maker, + uint256 settledAmount, + bool isYieldClaim + ); + + constructor(address _usdc, address _identityRegistry) Ownable(msg.sender) { + usdc = IERC20(_usdc); + identityRegistry = IdentityRegistry(_identityRegistry); + } + + /** + * @notice Create a Limit Order + * @param tokenAddress The RWA token address + * @param amount Amount of RWA tokens to trade (in wei) + * @param pricePerToken Price in USDC (6 decimals) for 1e18 RWA tokens + * @param isBuy True for Buy Limit (Bid), False for Sell Limit (Ask) + */ + function createOrder( + address tokenAddress, + uint256 amount, + uint256 pricePerToken, + bool isBuy + ) external nonReentrant { + require(amount > 0, "Amount must be > 0"); + require(pricePerToken > 0, "Price must be > 0"); + require(identityRegistry.isVerified(msg.sender), "Maker not verified"); + + if (isBuy) { + // BUY ORDER: Maker locks USDC + // Total USDC needed = (amount * pricePerToken) / 1e18 + uint256 totalUsdc = (amount * pricePerToken) / 1e18; + require(totalUsdc > 0, "Total value too low"); + usdc.safeTransferFrom(msg.sender, address(this), totalUsdc); + } else { + // SELL ORDER: Maker locks RWA Token + IERC20(tokenAddress).safeTransferFrom(msg.sender, address(this), amount); + } + + uint256 orderId = nextOrderId++; + orders[orderId] = Order({ + id: orderId, + maker: msg.sender, + tokenAddress: tokenAddress, + amount: amount, + pricePerToken: pricePerToken, + isBuy: isBuy, + isActive: true + }); + + emit OrderCreated(orderId, msg.sender, tokenAddress, amount, pricePerToken, isBuy, block.timestamp); + } + + /** + * @notice Fill an active order (Partial fills allowed) + * @param orderId The ID of the order to fill + * @param amountToFill Amount of RWA tokens to fill + */ + function fillOrder(uint256 orderId, uint256 amountToFill) external nonReentrant { + Order storage order = orders[orderId]; + require(order.isActive, "Order not active"); + require(amountToFill > 0, "Fill amount must be > 0"); + require(amountToFill <= order.amount, "Fill amount exceeds available"); + require(msg.sender != order.maker, "Cannot fill own order"); + require(identityRegistry.isVerified(msg.sender), "Taker not verified"); + + // Calculate Cost in USDC + // pricePerToken is USDC (6 decimals) per 1e18 RWA + uint256 costInUsdc = (amountToFill * order.pricePerToken) / 1e18; + require(costInUsdc > 0, "Trade value too low"); + + if (order.isBuy) { + // FILLING A BUY ORDER (Selling into a Bid) + // Maker: Buyer (Locked USDC) | Taker: Seller (Sends RWA) + + // 1. Taker (Seller) sends RWA to Maker (Buyer) + IERC20(order.tokenAddress).safeTransferFrom(msg.sender, order.maker, amountToFill); + + // 2. Contract releases USDC to Taker (Seller) + usdc.safeTransfer(msg.sender, costInUsdc); + + } else { + // FILLING A SELL ORDER (Buying from an Ask) + // Maker: Seller (Locked RWA) | Taker: Buyer (Sends USDC) + + // 1. Taker (Buyer) sends USDC to Maker (Seller) + usdc.safeTransferFrom(msg.sender, order.maker, costInUsdc); + + // 2. Contract releases RWA to Taker (Buyer) + IERC20(order.tokenAddress).safeTransfer(msg.sender, amountToFill); + } + + // Update State + order.amount -= amountToFill; + if (order.amount == 0) { + order.isActive = false; + } + + emit OrderFilled( + orderId, + msg.sender, + order.maker, + order.tokenAddress, + amountToFill, + costInUsdc, + order.amount, + block.timestamp + ); + } + + /** + * @notice Cancel an active order + * @param orderId The ID of the order to cancel + */ + function cancelOrder(uint256 orderId) external nonReentrant { + Order storage order = orders[orderId]; + require(order.maker == msg.sender, "Not maker"); + require(order.isActive, "Order not active"); + + order.isActive = false; + + if (order.isBuy) { + // Refund remaining USDC + uint256 refundUsdc = (order.amount * order.pricePerToken) / 1e18; + if (refundUsdc > 0) { + usdc.safeTransfer(msg.sender, refundUsdc); + } + } else { + // Refund remaining RWA + if (order.amount > 0) { + IERC20(order.tokenAddress).safeTransfer(msg.sender, order.amount); + } + } + + emit OrderCancelled(orderId, msg.sender, block.timestamp); + } + + /** + * @notice Admin function to settle orders during yield distribution + * @param yieldVault Address of the YieldVault contract + * @param tokenAddress Address of the RWA token + * @param orderIds List of order IDs to settle + */ + function settleYield( + address yieldVault, + address tokenAddress, + uint256[] calldata orderIds + ) external onlyOwner nonReentrant { + require(yieldVault != address(0), "Invalid YieldVault"); + + for (uint256 i = 0; i < orderIds.length; i++) { + Order storage order = orders[orderIds[i]]; + + // Skip if not active or token mismatch + if (!order.isActive || order.tokenAddress != tokenAddress) { + continue; + } + + order.isActive = false; + + if (order.isBuy) { + // BUY ORDER: Refund locked USDC + uint256 refundUsdc = (order.amount * order.pricePerToken) / 1e18; + if (refundUsdc > 0) { + usdc.safeTransfer(order.maker, refundUsdc); + } + + emit OrderSettledForYield(order.id, order.maker, refundUsdc, false); + } else { + // SELL ORDER: Burn RWA for Yield (USDC) + if (order.amount > 0) { + // Approve YieldVault + IERC20(tokenAddress).approve(yieldVault, order.amount); + + // Record USDC balance before + uint256 balanceBefore = usdc.balanceOf(address(this)); + + // Call claimYield + (bool success, ) = yieldVault.call( + abi.encodeWithSignature("claimYield(address,uint256)", tokenAddress, order.amount) + ); + require(success, "Yield claim failed"); + + // Calculate yield received + uint256 yieldReceived = usdc.balanceOf(address(this)) - balanceBefore; + + // Transfer yield to maker + if (yieldReceived > 0) { + usdc.safeTransfer(order.maker, yieldReceived); + } + + emit OrderSettledForYield(order.id, order.maker, yieldReceived, true); + } + } + } + } +} \ No newline at end of file diff --git a/packages/arbitrum-contracts/contracts/test/MockArbitrumDEX.sol b/packages/arbitrum-contracts/contracts/test/MockArbitrumDEX.sol new file mode 100644 index 00000000..9ffc8495 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/test/MockArbitrumDEX.sol @@ -0,0 +1,252 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +/** + * @title MockArbitrumDEX + * @notice Mock DEX for testing stARB ↔ USDC swaps on Arbitrum + * @dev Simulates an AMM with configurable exchange rates for demo scenarios + * + * Features: + * - Swap stARB for USDC (and vice versa) + * - Configurable exchange rate for demo + * - Slippage simulation + * - Liquidity tracking + */ +contract MockArbitrumDEX is Ownable, ReentrancyGuard { + IERC20 public stARB; + IERC20 public USDC; + + // Exchange rate: 1 stARB = X USDC (with 6 decimals to match USDC) + // Example: 0.8 * 1e6 = 800000 USDC per stARB + uint256 public exchangeRate; + + // Liquidity reserves + uint256 public stARBReserve; + uint256 public usdcReserve; + + // Events + event ExchangeRateUpdated(uint256 oldRate, uint256 newRate); + event Swapped( + address indexed user, + address indexed tokenIn, + address indexed tokenOut, + uint256 amountIn, + uint256 amountOut + ); + event LiquidityAdded(uint256 stARBAmount, uint256 usdcAmount); + + /** + * @notice Initialize Mock Arbitrum DEX + * @param _stARB MockStARB token address + * @param _USDC USDC token address + * @param _initialExchangeRate Initial exchange rate (USDC per stARB, 6 decimals) + */ + constructor( + address _stARB, + address _USDC, + uint256 _initialExchangeRate + ) Ownable(msg.sender) { + stARB = IERC20(_stARB); + USDC = IERC20(_USDC); + exchangeRate = _initialExchangeRate; + emit ExchangeRateUpdated(0, _initialExchangeRate); + } + + /** + * @notice Set exchange rate (for demo scenarios) + * @param newRate New exchange rate (USDC per stARB, 6 decimals) + */ + function setExchangeRate(uint256 newRate) external onlyOwner { + require(newRate > 0, "Rate must be greater than 0"); + uint256 oldRate = exchangeRate; + exchangeRate = newRate; + emit ExchangeRateUpdated(oldRate, newRate); + } + + /** + * @notice Get quote for stARB → USDC swap + * @param stARBAmount Amount of stARB to swap (18 decimals) + * @return Expected USDC output (6 decimals) + */ + function getQuote(uint256 stARBAmount) external view returns (uint256) { + // Convert stARB (18 decimals) to USDC (6 decimals) using exchange rate + return (stARBAmount * exchangeRate) / 1e18; + } + + /** + * @notice Get quote for USDC → stARB swap + * @param usdcAmount Amount of USDC to swap (6 decimals) + * @return Expected stARB output (18 decimals) + */ + function getQuoteReverse(uint256 usdcAmount) external view returns (uint256) { + // Convert USDC (6 decimals) to stARB (18 decimals) using exchange rate + return (usdcAmount * 1e18) / exchangeRate; + } + + /** + * @notice Swap stARB for USDC + * @param stARBAmount Amount of stARB to swap (18 decimals) + * @param minUSDCOut Minimum USDC output (slippage protection, 6 decimals) + * @return usdcOut Actual USDC output + */ + function swapStARBForUSDC( + uint256 stARBAmount, + uint256 minUSDCOut + ) external nonReentrant returns (uint256 usdcOut) { + require(stARBAmount > 0, "Amount must be greater than 0"); + + // Calculate USDC output + usdcOut = (stARBAmount * exchangeRate) / 1e18; + require(usdcOut >= minUSDCOut, "Slippage tolerance exceeded"); + require(usdcReserve >= usdcOut, "Insufficient USDC liquidity"); + + // Transfer stARB from user to DEX + require( + stARB.transferFrom(msg.sender, address(this), stARBAmount), + "stARB transfer failed" + ); + + // Update reserves + stARBReserve += stARBAmount; + usdcReserve -= usdcOut; + + // Transfer USDC to user + require(USDC.transfer(msg.sender, usdcOut), "USDC transfer failed"); + + emit Swapped(msg.sender, address(stARB), address(USDC), stARBAmount, usdcOut); + } + + /** + * @notice Swap USDC for stARB + * @param usdcAmount Amount of USDC to swap (6 decimals) + * @param minStARBOut Minimum stARB output (slippage protection, 18 decimals) + * @return stARBOut Actual stARB output + */ + function swapUSDCForStARB( + uint256 usdcAmount, + uint256 minStARBOut + ) external nonReentrant returns (uint256 stARBOut) { + require(usdcAmount > 0, "Amount must be greater than 0"); + + // Calculate stARB output + stARBOut = (usdcAmount * 1e18) / exchangeRate; + require(stARBOut >= minStARBOut, "Slippage tolerance exceeded"); + require(stARBReserve >= stARBOut, "Insufficient stARB liquidity"); + + // Transfer USDC from user to DEX + require( + USDC.transferFrom(msg.sender, address(this), usdcAmount), + "USDC transfer failed" + ); + + // Update reserves + usdcReserve += usdcAmount; + stARBReserve -= stARBOut; + + // Transfer stARB to user + require(stARB.transfer(msg.sender, stARBOut), "stARB transfer failed"); + + emit Swapped(msg.sender, address(USDC), address(stARB), usdcAmount, stARBOut); + } + + /** + * @notice Swap exact stARB for exact USDC (backend calculates amounts) + * @dev This is the preferred method - backend calculates exchange rate off-chain using historical data + * @param stARBAmount Exact amount of stARB to swap (18 decimals) + * @param exactUSDCOut Exact amount of USDC to receive (6 decimals) - calculated by backend + * @return usdcOut Actual USDC output (should match exactUSDCOut) + */ + function swapStARBForUSDCExact( + uint256 stARBAmount, + uint256 exactUSDCOut + ) external nonReentrant returns (uint256 usdcOut) { + require(stARBAmount > 0, "stARB amount must be greater than 0"); + require(exactUSDCOut > 0, "USDC amount must be greater than 0"); + require(usdcReserve >= exactUSDCOut, "Insufficient USDC liquidity"); + + // Transfer stARB from user to DEX + require( + stARB.transferFrom(msg.sender, address(this), stARBAmount), + "stARB transfer failed" + ); + + // Update reserves + stARBReserve += stARBAmount; + usdcReserve -= exactUSDCOut; + + // Transfer exact USDC to user + require(USDC.transfer(msg.sender, exactUSDCOut), "USDC transfer failed"); + + emit Swapped(msg.sender, address(stARB), address(USDC), stARBAmount, exactUSDCOut); + return exactUSDCOut; + } + + /** + * @notice Swap exact USDC for exact stARB (backend calculates amounts) + * @dev This is the preferred method - backend calculates exchange rate off-chain using historical data + * @param usdcAmount Exact amount of USDC to swap (6 decimals) + * @param exactStARBOut Exact amount of stARB to receive (18 decimals) - calculated by backend + * @return stARBOut Actual stARB output (should match exactStARBOut) + */ + function swapUSDCForStARBExact( + uint256 usdcAmount, + uint256 exactStARBOut + ) external nonReentrant returns (uint256 stARBOut) { + require(usdcAmount > 0, "USDC amount must be greater than 0"); + require(exactStARBOut > 0, "stARB amount must be greater than 0"); + require(stARBReserve >= exactStARBOut, "Insufficient stARB liquidity"); + + // Transfer USDC from user to DEX + require( + USDC.transferFrom(msg.sender, address(this), usdcAmount), + "USDC transfer failed" + ); + + // Update reserves + usdcReserve += usdcAmount; + stARBReserve -= exactStARBOut; + + // Transfer exact stARB to user + require(stARB.transfer(msg.sender, exactStARBOut), "stARB transfer failed"); + + emit Swapped(msg.sender, address(USDC), address(stARB), usdcAmount, exactStARBOut); + return exactStARBOut; + } + + /** + * @notice Add liquidity to DEX (for testing) + * @param stARBAmount Amount of stARB to add + * @param usdcAmount Amount of USDC to add + */ + function addLiquidity(uint256 stARBAmount, uint256 usdcAmount) external onlyOwner { + if (stARBAmount > 0) { + require( + stARB.transferFrom(msg.sender, address(this), stARBAmount), + "stARB transfer failed" + ); + stARBReserve += stARBAmount; + } + + if (usdcAmount > 0) { + require( + USDC.transferFrom(msg.sender, address(this), usdcAmount), + "USDC transfer failed" + ); + usdcReserve += usdcAmount; + } + + emit LiquidityAdded(stARBAmount, usdcAmount); + } + + /** + * @notice Get current reserves + * @return stARB reserve and USDC reserve + */ + function getReserves() external view returns (uint256, uint256) { + return (stARBReserve, usdcReserve); + } +} diff --git a/packages/arbitrum-contracts/contracts/test/MockStARB.sol b/packages/arbitrum-contracts/contracts/test/MockStARB.sol new file mode 100644 index 00000000..659d2334 --- /dev/null +++ b/packages/arbitrum-contracts/contracts/test/MockStARB.sol @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + +/** + * @title MockStARB + * @notice Mock Staked ARB token for testing and demo purposes on Arbitrum + * @dev Simple ERC20 token - price is managed off-chain in backend + * + * Features: + * - Standard ERC20 token + * - Public mint function for testing + * - No on-chain price oracle (backend manages historical price data) + * - Simulates Arbitrum liquid staking yield (~8% APY from sequencer fees) + */ +contract MockStARB is ERC20, Ownable { + // Events + event TokensMinted(address indexed to, uint256 amount); + + /** + * @notice Initialize MockStARB token + */ + constructor() ERC20("Staked ARB", "stARB") Ownable(msg.sender) { + // Mint 10M stARB to deployer for liquidity provisioning + _mint(msg.sender, 10_000_000 * 10 ** 18); + } + + /** + * @notice Mint stARB tokens (for testing) + * @dev Public function to allow easy testing + * @param to Recipient address + * @param amount Amount to mint (with 18 decimals) + */ + function mint(address to, uint256 amount) external { + _mint(to, amount); + emit TokensMinted(to, amount); + } + + /** + * @notice Burn stARB tokens + * @param amount Amount to burn (with 18 decimals) + */ + function burn(uint256 amount) external { + _burn(msg.sender, amount); + } + + /** + * @notice Decimals for stARB (standard 18) + */ + function decimals() public pure override returns (uint8) { + return 18; + } +} diff --git a/packages/arbitrum-contracts/contracts/test/MockUSDC.sol b/packages/arbitrum-contracts/contracts/test/MockUSDC.sol new file mode 100644 index 00000000..6c7eb6ca --- /dev/null +++ b/packages/arbitrum-contracts/contracts/test/MockUSDC.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +/** + * @title MockUSDC + * @notice Mock USDC token for testing purposes + */ +contract MockUSDC is ERC20 { + uint8 private _decimals = 6; + + constructor() ERC20("USD Coin", "USDC") { + // Mint 100 billion USDC to deployer for testing + _mint(msg.sender, 100_000_000_000 * 10 ** _decimals); + } + + function decimals() public view virtual override returns (uint8) { + return _decimals; + } + + function mint(address to, uint256 amount) external { + _mint(to, amount); + } + + function faucet() external { + // Faucet: 1000 USDC per call + _mint(msg.sender, 1000 * 10 ** _decimals); + } +} diff --git a/packages/arbitrum-contracts/deployed_contracts_arbitrum.json b/packages/arbitrum-contracts/deployed_contracts_arbitrum.json new file mode 100644 index 00000000..0d8dcebc --- /dev/null +++ b/packages/arbitrum-contracts/deployed_contracts_arbitrum.json @@ -0,0 +1,21 @@ +{ + "network": "arbitrum", + "chainId": "421614", + "deployer": "0x23e67597f0898f747Fa3291C8920168adF9455D0", + "timestamp": "2026-02-21T08:41:28.419Z", + "contracts": { + "MockUSDC": "0xb9BfaEDe01f0f2b2162072b73e2b2038Fb42b5cD", + "MockStARB": "0x89C70bB202341c28e7a8dF333b4981BfB49b3c21", + "SeniorPool": "0x77bB1944E2a2FC0e5D0F587699041ee09900ADA8", + "MockArbitrumDEX": "0x9cb153775B639DCa50F1BA7a6daa34af12466450", + "ArbitrumSwapIntegration": "0x01B727f7a5d6F1533fE585EddD5c6E921d228B9D", + "AttestationRegistry": "0x4898723528Fe25756c2e1968605a62ce6c48F576", + "TrustedIssuersRegistry": "0x01374eD3fF1800D2e1A941D2Fef6ebda590820E1", + "IdentityRegistry": "0x88C90da0B337d0EAdd2B87e14D40aA6DEe4F64e9", + "YieldVault": "0xb2A2920Da9b824dc2D7cbfDC47c06a5e6111C2D7", + "TokenFactory": "0x1B014A3a16E5AF7D1207646f35AFD2b08535c1EB", + "PrimaryMarket": "0x06c0495B717c064c00528ddFfD7Fe99228C6B76a", + "SecondaryMarket": "0x0c67Bc77A1Fc89C7eC45248e14b7931C6F5406B5", + "StARBLeverageVault": "0xa3A62151f74DD961f1a3C08474C56C3B9bF45CDd" + } +} \ No newline at end of file diff --git a/packages/arbitrum-contracts/hardhat.config.ts b/packages/arbitrum-contracts/hardhat.config.ts new file mode 100644 index 00000000..5d76074a --- /dev/null +++ b/packages/arbitrum-contracts/hardhat.config.ts @@ -0,0 +1,32 @@ +import { HardhatUserConfig } from "hardhat/config"; +import "@nomicfoundation/hardhat-toolbox"; +import "dotenv/config"; + +const PRIVATE_KEY = process.env.ADMIN_PRIVATE_KEY || process.env.PRIVATE_KEY || ""; + +const config: HardhatUserConfig = { + solidity: { + version: "0.8.20", + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + viaIR: true, + }, + }, + networks: { + arbitrumSepolia: { + url: "https://sepolia-rollup.arbitrum.io/rpc", + accounts: PRIVATE_KEY ? [PRIVATE_KEY] : [], + chainId: 421614, + }, + arbitrum: { + url: "https://arb1.arbitrum.io/rpc", + accounts: PRIVATE_KEY ? [PRIVATE_KEY] : [], + chainId: 42161, + }, + }, +}; + +export default config; diff --git a/packages/arbitrum-contracts/package.json b/packages/arbitrum-contracts/package.json new file mode 100644 index 00000000..ed08dde7 --- /dev/null +++ b/packages/arbitrum-contracts/package.json @@ -0,0 +1,39 @@ +{ + "name": "@arbitrum/contracts", + "version": "1.0.0", + "private": true, + "main": "./typechain-types/index.ts", + "types": "./typechain-types/index.ts", + "scripts": { + "generate:types": "hardhat compile", + "dev": "echo 'No dev script for contracts'", + "deploy:sepolia": "hardhat run scripts/deploy/deploy_arbitrum.ts --network arbitrumSepolia", + "deploy:mainnet": "hardhat run scripts/deploy/deploy_arbitrum.ts --network arbitrum" + }, + "devDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "2.1.0", + "@nomicfoundation/hardhat-ethers": "^3.0.8", + "@nomicfoundation/hardhat-network-helpers": "^1.0.12", + "@nomicfoundation/hardhat-toolbox": "^3.0.0", + "@nomicfoundation/hardhat-verify": "^1.1.1", + "@nomicfoundation/hardhat-viem": "^3.0.1", + "@typechain/ethers-v6": "^0.5.1", + "@typechain/hardhat": "^8.0.0", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.10", + "@types/node": "^25.0.3", + "chai": "^4.3.10", + "dotenv": "^17.2.3", + "ethers": "^6.16.0", + "hardhat": "^2.22.3", + "hardhat-gas-reporter": "^1.0.10", + "solidity-coverage": "^0.8.17", + "ts-node": "^10.9.2", + "typechain": "^8.3.2", + "typescript": "^5.9.3", + "viem": "^2.43.3" + }, + "dependencies": { + "@openzeppelin/contracts": "5.4.0" + } +} diff --git a/packages/arbitrum-contracts/scripts/deploy/deploy_arbitrum.ts b/packages/arbitrum-contracts/scripts/deploy/deploy_arbitrum.ts new file mode 100644 index 00000000..02234ff0 --- /dev/null +++ b/packages/arbitrum-contracts/scripts/deploy/deploy_arbitrum.ts @@ -0,0 +1,228 @@ +import { ethers } from "hardhat"; + +/** + * Deploy Arbitrum Leverage Stack + * + * This script deploys the full stARB-based leverage system for Arbitrum: + * - MockStARB (collateral token) + * - MockUSDC (loan token) + * - SeniorPool (USDC lending pool) + * - MockArbitrumDEX (stARB/USDC swap) + * - ArbitrumSwapIntegration (slippage-protected swaps) + * - StARBLeverageVault (core vault) + * - Platform infrastructure contracts + */ + +async function main() { + const [deployer] = await ethers.getSigners(); + + console.log("šŸ“¦ Deploying Arbitrum Leverage Stack"); + console.log("šŸ”‘ Deployer:", deployer.address); + console.log("šŸ’° Balance:", ethers.formatEther(await ethers.provider.getBalance(deployer.address)), "ETH\n"); + + const deployedContracts: Record = {}; + + // Step 1: Deploy base tokens + console.log("1ļøāƒ£ Deploying base tokens..."); + + const MockUSDC = await ethers.getContractFactory("MockUSDC"); + const usdc = await MockUSDC.deploy(); + await usdc.waitForDeployment(); + deployedContracts.MockUSDC = await usdc.getAddress(); + console.log(" āœ… MockUSDC:", deployedContracts.MockUSDC); + + const MockStARB = await ethers.getContractFactory("MockStARB"); + const stARB = await MockStARB.deploy(); + await stARB.waitForDeployment(); + deployedContracts.MockStARB = await stARB.getAddress(); + console.log(" āœ… MockStARB:", deployedContracts.MockStARB); + + // Step 2: Deploy SeniorPool + console.log("\n2ļøāƒ£ Deploying SeniorPool..."); + + const SeniorPool = await ethers.getContractFactory("SeniorPool"); + const seniorPool = await SeniorPool.deploy(deployedContracts.MockUSDC); + await seniorPool.waitForDeployment(); + deployedContracts.SeniorPool = await seniorPool.getAddress(); + console.log(" āœ… SeniorPool:", deployedContracts.SeniorPool); + + // Fund SeniorPool with USDC + console.log(" šŸ’µ Funding SeniorPool with 1M USDC..."); + const fundAmount = ethers.parseUnits("1000000", 6); // 1M USDC + await usdc.mint(deployer.address, fundAmount); + await usdc.approve(deployedContracts.SeniorPool, fundAmount); + await seniorPool.depositLiquidity(fundAmount); + console.log(" āœ… SeniorPool funded"); + + // Step 3: Deploy DEX infrastructure + console.log("\n3ļøāƒ£ Deploying DEX infrastructure..."); + + const initialExchangeRate = ethers.parseUnits("0.8", 6); // 1 stARB = 0.8 USDC + const MockArbitrumDEX = await ethers.getContractFactory("MockArbitrumDEX"); + const dex = await MockArbitrumDEX.deploy( + deployedContracts.MockStARB, + deployedContracts.MockUSDC, + initialExchangeRate + ); + await dex.waitForDeployment(); + deployedContracts.MockArbitrumDEX = await dex.getAddress(); + console.log(" āœ… MockArbitrumDEX:", deployedContracts.MockArbitrumDEX); + + // Fund DEX with USDC liquidity + console.log(" šŸ’µ Funding DEX with 500K USDC liquidity..."); + const dexFundAmount = ethers.parseUnits("500000", 6); + await usdc.mint(deployer.address, dexFundAmount); + await usdc.approve(deployedContracts.MockArbitrumDEX, dexFundAmount); + await dex.addLiquidity(0, dexFundAmount); + console.log(" āœ… DEX funded"); + + // Step 4: Deploy ArbitrumSwapIntegration + console.log("\n4ļøāƒ£ Deploying ArbitrumSwapIntegration..."); + + const placeholderOracle = deployedContracts.MockStARB; // Using stARB as placeholder oracle + const ArbitrumSwapIntegration = await ethers.getContractFactory("ArbitrumSwapIntegration"); + const swapIntegration = await ArbitrumSwapIntegration.deploy( + deployedContracts.MockStARB, + deployedContracts.MockUSDC, + deployedContracts.MockArbitrumDEX, + placeholderOracle + ); + await swapIntegration.waitForDeployment(); + deployedContracts.ArbitrumSwapIntegration = await swapIntegration.getAddress(); + console.log(" āœ… ArbitrumSwapIntegration:", deployedContracts.ArbitrumSwapIntegration); + + // Step 5: Deploy platform infrastructure + console.log("\n5ļøāƒ£ Deploying platform infrastructure..."); + + // AttestationRegistry + const AttestationRegistry = await ethers.getContractFactory("AttestationRegistry"); + const attestationRegistry = await AttestationRegistry.deploy(); + await attestationRegistry.waitForDeployment(); + deployedContracts.AttestationRegistry = await attestationRegistry.getAddress(); + console.log(" āœ… AttestationRegistry:", deployedContracts.AttestationRegistry); + + // TrustedIssuersRegistry + const TrustedIssuersRegistry = await ethers.getContractFactory("TrustedIssuersRegistry"); + const trustedIssuersRegistry = await TrustedIssuersRegistry.deploy(); + await trustedIssuersRegistry.waitForDeployment(); + deployedContracts.TrustedIssuersRegistry = await trustedIssuersRegistry.getAddress(); + console.log(" āœ… TrustedIssuersRegistry:", deployedContracts.TrustedIssuersRegistry); + + // IdentityRegistry + const IdentityRegistry = await ethers.getContractFactory("IdentityRegistry"); + const identityRegistry = await IdentityRegistry.deploy( + deployedContracts.TrustedIssuersRegistry + ); + await identityRegistry.waitForDeployment(); + deployedContracts.IdentityRegistry = await identityRegistry.getAddress(); + console.log(" āœ… IdentityRegistry:", deployedContracts.IdentityRegistry); + + // YieldVault + const YieldVault = await ethers.getContractFactory("YieldVault"); + const yieldVault = await YieldVault.deploy(deployedContracts.MockUSDC, deployer.address); + await yieldVault.waitForDeployment(); + deployedContracts.YieldVault = await yieldVault.getAddress(); + console.log(" āœ… YieldVault:", deployedContracts.YieldVault); + + // TokenFactory + const TokenFactory = await ethers.getContractFactory("TokenFactory"); + const tokenFactory = await TokenFactory.deploy( + deployedContracts.AttestationRegistry, + deployedContracts.IdentityRegistry, + deployedContracts.TrustedIssuersRegistry, + deployer.address, + deployedContracts.YieldVault + ); + await tokenFactory.waitForDeployment(); + deployedContracts.TokenFactory = await tokenFactory.getAddress(); + console.log(" āœ… TokenFactory:", deployedContracts.TokenFactory); + + // PrimaryMarket + const PrimaryMarket = await ethers.getContractFactory("PrimaryMarket"); + const primaryMarket = await PrimaryMarket.deploy( + deployedContracts.TokenFactory, + deployer.address, + deployedContracts.MockUSDC + ); + await primaryMarket.waitForDeployment(); + deployedContracts.PrimaryMarket = await primaryMarket.getAddress(); + console.log(" āœ… PrimaryMarket:", deployedContracts.PrimaryMarket); + + // SecondaryMarket + const SecondaryMarket = await ethers.getContractFactory("SecondaryMarket"); + const secondaryMarket = await SecondaryMarket.deploy( + deployedContracts.MockUSDC, + deployedContracts.IdentityRegistry + ); + await secondaryMarket.waitForDeployment(); + deployedContracts.SecondaryMarket = await secondaryMarket.getAddress(); + console.log(" āœ… SecondaryMarket:", deployedContracts.SecondaryMarket); + + // Step 6: Deploy StARBLeverageVault + console.log("\n6ļøāƒ£ Deploying StARBLeverageVault..."); + + const StARBLeverageVault = await ethers.getContractFactory("StARBLeverageVault"); + const leverageVault = await StARBLeverageVault.deploy( + deployedContracts.MockStARB, + deployedContracts.MockUSDC, + deployedContracts.SeniorPool, + deployedContracts.ArbitrumSwapIntegration + ); + await leverageVault.waitForDeployment(); + deployedContracts.StARBLeverageVault = await leverageVault.getAddress(); + console.log(" āœ… StARBLeverageVault:", deployedContracts.StARBLeverageVault); + + // Step 7: Post-deployment configuration + console.log("\n7ļøāƒ£ Configuring contracts..."); + + // Set YieldVault on LeverageVault + await leverageVault.setYieldVault(deployedContracts.YieldVault); + console.log(" āœ… YieldVault address set on StARBLeverageVault"); + + // Set PrimaryMarket on LeverageVault + await leverageVault.setPrimaryMarket(deployedContracts.PrimaryMarket); + console.log(" āœ… PrimaryMarket address set on StARBLeverageVault"); + + // Authorize LeverageVault to borrow from SeniorPool + await seniorPool.setLeverageVault(deployedContracts.StARBLeverageVault); + console.log(" āœ… StARBLeverageVault authorized on SeniorPool"); + + // Mint test stARB to deployer + const testStARBAmount = ethers.parseEther("10000"); // 10K stARB + await stARB.mint(deployer.address, testStARBAmount); + console.log(" āœ… Minted 10K stARB to deployer for testing"); + + // Step 8: Save deployment manifest + console.log("\n8ļøāƒ£ Saving deployment manifest..."); + + const fs = require("fs"); + const manifest = { + network: "arbitrum", + chainId: (await ethers.provider.getNetwork()).chainId.toString(), + deployer: deployer.address, + timestamp: new Date().toISOString(), + contracts: deployedContracts + }; + + fs.writeFileSync( + "./deployed_contracts_arbitrum.json", + JSON.stringify(manifest, null, 2) + ); + console.log(" āœ… Manifest saved to deployed_contracts_arbitrum.json"); + + // Summary + console.log("\nāœ… Deployment complete!"); + console.log("\nšŸ“‹ Contract Summary:"); + console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); + Object.entries(deployedContracts).forEach(([name, address]) => { + console.log(`${name.padEnd(30)} ${address}`); + }); + console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/packages/arbitrum-contracts/tsconfig.json b/packages/arbitrum-contracts/tsconfig.json new file mode 100644 index 00000000..869b0168 --- /dev/null +++ b/packages/arbitrum-contracts/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "moduleResolution": "node", + "outDir": "./dist", + "rootDir": "./", + "typeRoots": ["./node_modules/@types", "./typechain-types"] + }, + "include": ["./scripts", "./test", "./typechain-types"], + "files": ["./hardhat.config.ts"] +} From c55ab8b475678b93391c561ecb613a4e853fea31 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Sat, 21 Feb 2026 15:07:08 +0530 Subject: [PATCH 02/21] "backend worked" --- packages/backend/.env.arbitrum | 65 +++ packages/backend/Data/starb-usd-max.csv | 182 ++++++++ packages/backend/src/app.module.ts | 12 +- .../backend/src/config/blockchain.config.ts | 3 +- packages/backend/src/config/network.config.ts | 26 +- .../backend/src/modules/admin/admin.module.ts | 2 - .../adapters/evm/evm-blockchain.adapter.ts | 5 +- .../evm/evm-contract-loader.adapter.ts | 27 +- .../adapters/evm/evm-wallet.adapter.ts | 3 +- .../modules/blockchain/blockchain.module.ts | 3 + .../services/contract-loader.service.ts | 84 +++- .../services/starb-price.service.ts | 418 ++++++++++++++++++ .../controllers/leverage.controller.ts | 6 +- .../modules/leverage/leverage.constants.ts | 11 + .../src/modules/leverage/leverage.module.ts | 92 ++-- .../leverage/services/arbitrum-dex.service.ts | 253 +++++++++++ .../leverage/services/fluxion-dex.service.ts | 27 +- .../services/harvest-keeper.service.ts | 6 +- .../services/leverage-blockchain.service.ts | 91 ++-- .../src/modules/solvency/solvency.module.ts | 2 - .../backend/src/modules/yield/yield.module.ts | 2 - .../validators/canonical-amount.validator.ts | 8 +- 22 files changed, 1210 insertions(+), 118 deletions(-) create mode 100644 packages/backend/.env.arbitrum create mode 100644 packages/backend/Data/starb-usd-max.csv create mode 100644 packages/backend/src/modules/blockchain/services/starb-price.service.ts create mode 100644 packages/backend/src/modules/leverage/leverage.constants.ts create mode 100644 packages/backend/src/modules/leverage/services/arbitrum-dex.service.ts diff --git a/packages/backend/.env.arbitrum b/packages/backend/.env.arbitrum new file mode 100644 index 00000000..f0e46c45 --- /dev/null +++ b/packages/backend/.env.arbitrum @@ -0,0 +1,65 @@ +# ============================================================================= +# ARBITRUM CONFIGURATION +# ============================================================================= + +# Network selector - Arbitrum Sepolia testnet +BLOCKCHAIN_NETWORK=arbitrum-sepolia +NETWORK_TYPE=arbitrum + +# JWT Secret +JWT_SECRET=your-jwt-secret-here + +# MongoDB URI +MONGODB_URI=mongodb://localhost:27017/rwa-arbitrum + +# ============================================================================= +# REDIS CONFIGURATION +# ============================================================================= + +REDIS_HOST=127.0.0.1 +REDIS_PORT=6379 + +# ============================================================================= +# ARBITRUM EVM CONFIGURATION +# ============================================================================= + +# Arbitrum Sepolia RPC +MANTLE_RPC_URL=https://sepolia-rollup.arbitrum.io/rpc +MANTLE_WSS_URL=wss://sepolia-rollup.arbitrum.io/rpc +CHAIN_ID=421614 + +# Native currency symbol for Arbitrum (ETH) +EVM_NATIVE_SYMBOL=ETH + +# Private Keys (REPLACE WITH YOUR KEYS) +ADMIN_PRIVATE_KEY=0x... +PLATFORM_PRIVATE_KEY=0x... +CUSTODY_WALLET_ADDRESS=0x... + +# Admin wallet for receiving platform fees +BLOCKCHAIN_ADMIN_WALLET=0x... + +# ============================================================================= +# STARB PRICE SERVICE CONFIGURATION +# ============================================================================= + +# stARB price update interval (4 hours by default) +STARB_PRICE_UPDATE_INTERVAL_SECONDS=14400 +STARB_PRICE_HISTORY_DAYS=180 + +# ============================================================================= +# LEVERAGE SYSTEM CONFIGURATION +# ============================================================================= + +# Harvest and health check intervals +HARVEST_INTERVAL_SECONDS=3000 # 50 minutes +HEALTH_CHECK_INTERVAL_SECONDS=3000 # 50 minutes + +# ============================================================================= +# COMMON CONFIGURATION +# ============================================================================= + +JWT_ACCESS_TOKEN_EXPIRES_IN=7d + +# Etherscan API Key (use Arbiscan API key for Arbitrum) +ETHERSCAN_API_KEY= diff --git a/packages/backend/Data/starb-usd-max.csv b/packages/backend/Data/starb-usd-max.csv new file mode 100644 index 00000000..206f6c94 --- /dev/null +++ b/packages/backend/Data/starb-usd-max.csv @@ -0,0 +1,182 @@ +timestamp,price +2024-07-04 00:00:00 UTC,2850.32 +2024-07-05 00:00:00 UTC,2856.45 +2024-07-06 00:00:00 UTC,2862.11 +2024-07-07 00:00:00 UTC,2858.78 +2024-07-08 00:00:00 UTC,2871.23 +2024-07-09 00:00:00 UTC,2885.67 +2024-07-10 00:00:00 UTC,2892.34 +2024-07-11 00:00:00 UTC,2889.12 +2024-07-12 00:00:00 UTC,2901.45 +2024-07-13 00:00:00 UTC,2915.78 +2024-07-14 00:00:00 UTC,2923.56 +2024-07-15 00:00:00 UTC,2931.89 +2024-07-16 00:00:00 UTC,2945.23 +2024-07-17 00:00:00 UTC,2952.67 +2024-07-18 00:00:00 UTC,2961.34 +2024-07-19 00:00:00 UTC,2975.12 +2024-07-20 00:00:00 UTC,2983.45 +2024-07-21 00:00:00 UTC,2991.78 +2024-07-22 00:00:00 UTC,3005.23 +2024-07-23 00:00:00 UTC,3012.67 +2024-07-24 00:00:00 UTC,3021.34 +2024-07-25 00:00:00 UTC,3035.12 +2024-07-26 00:00:00 UTC,3043.45 +2024-07-27 00:00:00 UTC,3051.78 +2024-07-28 00:00:00 UTC,3065.23 +2024-07-29 00:00:00 UTC,3072.67 +2024-07-30 00:00:00 UTC,3081.34 +2024-07-31 00:00:00 UTC,3095.12 +2024-08-01 00:00:00 UTC,3103.45 +2024-08-02 00:00:00 UTC,3111.78 +2024-08-03 00:00:00 UTC,3125.23 +2024-08-04 00:00:00 UTC,3132.67 +2024-08-05 00:00:00 UTC,3141.34 +2024-08-06 00:00:00 UTC,3155.12 +2024-08-07 00:00:00 UTC,3163.45 +2024-08-08 00:00:00 UTC,3171.78 +2024-08-09 00:00:00 UTC,3185.23 +2024-08-10 00:00:00 UTC,3192.67 +2024-08-11 00:00:00 UTC,3201.34 +2024-08-12 00:00:00 UTC,3215.12 +2024-08-13 00:00:00 UTC,3223.45 +2024-08-14 00:00:00 UTC,3231.78 +2024-08-15 00:00:00 UTC,3245.23 +2024-08-16 00:00:00 UTC,3252.67 +2024-08-17 00:00:00 UTC,3261.34 +2024-08-18 00:00:00 UTC,3275.12 +2024-08-19 00:00:00 UTC,3283.45 +2024-08-20 00:00:00 UTC,3291.78 +2024-08-21 00:00:00 UTC,3305.23 +2024-08-22 00:00:00 UTC,3312.67 +2024-08-23 00:00:00 UTC,3321.34 +2024-08-24 00:00:00 UTC,3335.12 +2024-08-25 00:00:00 UTC,3343.45 +2024-08-26 00:00:00 UTC,3351.78 +2024-08-27 00:00:00 UTC,3365.23 +2024-08-28 00:00:00 UTC,3372.67 +2024-08-29 00:00:00 UTC,3381.34 +2024-08-30 00:00:00 UTC,3395.12 +2024-08-31 00:00:00 UTC,3403.45 +2024-09-01 00:00:00 UTC,3411.78 +2024-09-02 00:00:00 UTC,3425.23 +2024-09-03 00:00:00 UTC,3432.67 +2024-09-04 00:00:00 UTC,3441.34 +2024-09-05 00:00:00 UTC,3455.12 +2024-09-06 00:00:00 UTC,3463.45 +2024-09-07 00:00:00 UTC,3471.78 +2024-09-08 00:00:00 UTC,3485.23 +2024-09-09 00:00:00 UTC,3492.67 +2024-09-10 00:00:00 UTC,3501.34 +2024-09-11 00:00:00 UTC,3515.12 +2024-09-12 00:00:00 UTC,3523.45 +2024-09-13 00:00:00 UTC,3531.78 +2024-09-14 00:00:00 UTC,3545.23 +2024-09-15 00:00:00 UTC,3552.67 +2024-09-16 00:00:00 UTC,3561.34 +2024-09-17 00:00:00 UTC,3575.12 +2024-09-18 00:00:00 UTC,3583.45 +2024-09-19 00:00:00 UTC,3591.78 +2024-09-20 00:00:00 UTC,3605.23 +2024-09-21 00:00:00 UTC,3612.67 +2024-09-22 00:00:00 UTC,3621.34 +2024-09-23 00:00:00 UTC,3635.12 +2024-09-24 00:00:00 UTC,3643.45 +2024-09-25 00:00:00 UTC,3651.78 +2024-09-26 00:00:00 UTC,3665.23 +2024-09-27 00:00:00 UTC,3672.67 +2024-09-28 00:00:00 UTC,3681.34 +2024-09-29 00:00:00 UTC,3695.12 +2024-09-30 00:00:00 UTC,3703.45 +2024-10-01 00:00:00 UTC,3711.78 +2024-10-02 00:00:00 UTC,3725.23 +2024-10-03 00:00:00 UTC,3732.67 +2024-10-04 00:00:00 UTC,3741.34 +2024-10-05 00:00:00 UTC,3755.12 +2024-10-06 00:00:00 UTC,3763.45 +2024-10-07 00:00:00 UTC,3771.78 +2024-10-08 00:00:00 UTC,3785.23 +2024-10-09 00:00:00 UTC,3792.67 +2024-10-10 00:00:00 UTC,3801.34 +2024-10-11 00:00:00 UTC,3815.12 +2024-10-12 00:00:00 UTC,3823.45 +2024-10-13 00:00:00 UTC,3831.78 +2024-10-14 00:00:00 UTC,3845.23 +2024-10-15 00:00:00 UTC,3852.67 +2024-10-16 00:00:00 UTC,3861.34 +2024-10-17 00:00:00 UTC,3875.12 +2024-10-18 00:00:00 UTC,3883.45 +2024-10-19 00:00:00 UTC,3891.78 +2024-10-20 00:00:00 UTC,3905.23 +2024-10-21 00:00:00 UTC,3912.67 +2024-10-22 00:00:00 UTC,3921.34 +2024-10-23 00:00:00 UTC,3935.12 +2024-10-24 00:00:00 UTC,3943.45 +2024-10-25 00:00:00 UTC,3951.78 +2024-10-26 00:00:00 UTC,3965.23 +2024-10-27 00:00:00 UTC,3972.67 +2024-10-28 00:00:00 UTC,3981.34 +2024-10-29 00:00:00 UTC,3995.12 +2024-10-30 00:00:00 UTC,4003.45 +2024-10-31 00:00:00 UTC,4011.78 +2024-11-01 00:00:00 UTC,4025.23 +2024-11-02 00:00:00 UTC,4032.67 +2024-11-03 00:00:00 UTC,4041.34 +2024-11-04 00:00:00 UTC,4055.12 +2024-11-05 00:00:00 UTC,4063.45 +2024-11-06 00:00:00 UTC,4071.78 +2024-11-07 00:00:00 UTC,4085.23 +2024-11-08 00:00:00 UTC,4092.67 +2024-11-09 00:00:00 UTC,4101.34 +2024-11-10 00:00:00 UTC,4115.12 +2024-11-11 00:00:00 UTC,4123.45 +2024-11-12 00:00:00 UTC,4131.78 +2024-11-13 00:00:00 UTC,4145.23 +2024-11-14 00:00:00 UTC,4152.67 +2024-11-15 00:00:00 UTC,4161.34 +2024-11-16 00:00:00 UTC,4175.12 +2024-11-17 00:00:00 UTC,4183.45 +2024-11-18 00:00:00 UTC,4191.78 +2024-11-19 00:00:00 UTC,4205.23 +2024-11-20 00:00:00 UTC,4212.67 +2024-11-21 00:00:00 UTC,4221.34 +2024-11-22 00:00:00 UTC,4235.12 +2024-11-23 00:00:00 UTC,4243.45 +2024-11-24 00:00:00 UTC,4251.78 +2024-11-25 00:00:00 UTC,4265.23 +2024-11-26 00:00:00 UTC,4272.67 +2024-11-27 00:00:00 UTC,4281.34 +2024-11-28 00:00:00 UTC,4295.12 +2024-11-29 00:00:00 UTC,4303.45 +2024-11-30 00:00:00 UTC,4311.78 +2024-12-01 00:00:00 UTC,4325.23 +2024-12-02 00:00:00 UTC,4332.67 +2024-12-03 00:00:00 UTC,4341.34 +2024-12-04 00:00:00 UTC,4355.12 +2024-12-05 00:00:00 UTC,4363.45 +2024-12-06 00:00:00 UTC,4371.78 +2024-12-07 00:00:00 UTC,4385.23 +2024-12-08 00:00:00 UTC,4392.67 +2024-12-09 00:00:00 UTC,4401.34 +2024-12-10 00:00:00 UTC,4415.12 +2024-12-11 00:00:00 UTC,4423.45 +2024-12-12 00:00:00 UTC,4431.78 +2024-12-13 00:00:00 UTC,4445.23 +2024-12-14 00:00:00 UTC,4452.67 +2024-12-15 00:00:00 UTC,4461.34 +2024-12-16 00:00:00 UTC,4475.12 +2024-12-17 00:00:00 UTC,4483.45 +2024-12-18 00:00:00 UTC,4491.78 +2024-12-19 00:00:00 UTC,4505.23 +2024-12-20 00:00:00 UTC,4512.67 +2024-12-21 00:00:00 UTC,4521.34 +2024-12-22 00:00:00 UTC,4535.12 +2024-12-23 00:00:00 UTC,4543.45 +2024-12-24 00:00:00 UTC,4551.78 +2024-12-25 00:00:00 UTC,4565.23 +2024-12-26 00:00:00 UTC,4572.67 +2024-12-27 00:00:00 UTC,4581.34 +2024-12-28 00:00:00 UTC,4595.12 +2024-12-29 00:00:00 UTC,4603.45 +2024-12-30 00:00:00 UTC,4611.78 +2024-12-31 00:00:00 UTC,4625.23 \ No newline at end of file diff --git a/packages/backend/src/app.module.ts b/packages/backend/src/app.module.ts index 4e66d3f7..7d5a8a1d 100644 --- a/packages/backend/src/app.module.ts +++ b/packages/backend/src/app.module.ts @@ -40,6 +40,7 @@ export class AppModule { // So we read from process.env directly here as a bootstrap step. const networkType = process.env.NETWORK_TYPE || 'mantle'; const isMantle = networkType === 'mantle'; + const isArbitrum = networkType === 'arbitrum'; const imports: any[] = [ ConfigModule.forRoot({ @@ -110,12 +111,19 @@ export class AppModule { ]; // Conditional Modules + // Leverage and SecondaryMarket are available on both Mantle and Arbitrum + if (isMantle || isArbitrum) { + imports.push( + LeverageModule.forRoot(), + SecondaryMarketModule, + ); + } + + // Mantle-only modules if (isMantle) { imports.push( FaucetModule, - LeverageModule, SolvencyModule, - SecondaryMarketModule, PartnersModule, ); } diff --git a/packages/backend/src/config/blockchain.config.ts b/packages/backend/src/config/blockchain.config.ts index a8a957cf..90b1309b 100644 --- a/packages/backend/src/config/blockchain.config.ts +++ b/packages/backend/src/config/blockchain.config.ts @@ -3,8 +3,9 @@ import { registerAs } from '@nestjs/config'; export default registerAs('blockchain', () => ({ rpcUrl: process.env.MANTLE_RPC_URL || 'https://rpc.sepolia.mantle.xyz', wssUrl: process.env.MANTLE_WSS_URL || 'wss://rpc.sepolia.mantle.xyz', - chainId: parseInt(process.env.CHAIN_ID || '5003', 10), // Mantle Sepolia + chainId: parseInt(process.env.CHAIN_ID || '5003', 10), // Mantle Sepolia default network: process.env.BLOCKCHAIN_NETWORK || 'mantle-testnet', // Network identifier for contract loading + evmNativeSymbol: process.env.EVM_NATIVE_SYMBOL || 'MNT', // Native currency symbol (MNT for Mantle, ETH for Arbitrum) // Wallets adminPrivateKey: process.env.ADMIN_PRIVATE_KEY, diff --git a/packages/backend/src/config/network.config.ts b/packages/backend/src/config/network.config.ts index 62721fa0..3e1390ce 100644 --- a/packages/backend/src/config/network.config.ts +++ b/packages/backend/src/config/network.config.ts @@ -3,6 +3,7 @@ import { registerAs } from '@nestjs/config'; export enum NetworkType { MANTLE = 'mantle', STELLAR = 'stellar', + ARBITRUM = 'arbitrum', } export default registerAs('network', () => { @@ -10,24 +11,25 @@ export default registerAs('network', () => { const isMantle = networkType === NetworkType.MANTLE; const isStellar = networkType === NetworkType.STELLAR; + const isArbitrum = networkType === NetworkType.ARBITRUM; return { networkType, - networkName: isMantle ? 'Mantle Sepolia' : 'Stellar Testnet', - isTestnet: true, // For now both are testnets + networkName: isMantle ? 'Mantle Sepolia' : isArbitrum ? 'Arbitrum Sepolia' : 'Stellar Testnet', + isTestnet: true, // For now all are testnets // Feature Availability Map features: { - leverage: isMantle, - faucet: isMantle, - solvency: isMantle, - secondaryMarket: isMantle, // Initially false for Stellar , will be true for both later - oaid: isMantle, // will be tue for both later - methPrice: isMantle, - fluxionDex: isMantle, - marketplace: true, // Both support marketplace - partners: isMantle, - yield: true, // Both support yield distribution + leverage: isMantle || isArbitrum, + faucet: isMantle || isArbitrum, + solvency: isMantle || isArbitrum, + secondaryMarket: isMantle || isArbitrum, // Initially false for Stellar , will be true for all later + oaid: isMantle || isArbitrum, // will be true for all later + collateralPrice: isMantle || isArbitrum, // Replaces methPrice - works for both mETH and stARB + collateralDex: isMantle || isArbitrum, // Replaces fluxionDex - works for both DEXs + marketplace: true, // All support marketplace + partners: isMantle || isArbitrum, + yield: true, // All support yield distribution kyc: true, assets: true, auth: true, diff --git a/packages/backend/src/modules/admin/admin.module.ts b/packages/backend/src/modules/admin/admin.module.ts index 1f4d32f2..55420794 100644 --- a/packages/backend/src/modules/admin/admin.module.ts +++ b/packages/backend/src/modules/admin/admin.module.ts @@ -3,7 +3,6 @@ import { MongooseModule } from '@nestjs/mongoose'; import { AssetModule } from '../assets/assets.module'; import { BlockchainModule } from '../blockchain/blockchain.module'; import { YieldModule } from '../yield/yield.module'; -import { LeverageModule } from '../leverage/leverage.module'; import { ComplianceController } from './controllers/compliance.controller'; import { AssetOpsController } from './controllers/asset-ops.controller'; import { YieldOpsController } from './controllers/yield-ops.controller'; @@ -36,7 +35,6 @@ import { MANTLE_ADMIN_STRATEGY_TOKEN, STELLAR_ADMIN_STRATEGY_TOKEN } from '../re AssetModule, BlockchainModule, YieldModule, - LeverageModule, AuthModule, MarketplaceModule, NotificationsModule, diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts index cf1f5678..804f1da1 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts @@ -36,14 +36,15 @@ export class EvmBlockchainAdapter implements BlockchainAdapter { const rpcUrl = this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; const chainId = this.configService.get('blockchain.chainId') || 5003; const networkName = this.configService.get('network.networkName') || 'Mantle Sepolia'; + const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; const chain = defineChain({ id: chainId, name: networkName, nativeCurrency: { decimals: 18, - name: 'MNT', - symbol: 'MNT', + name: nativeSymbol, + symbol: nativeSymbol, }, rpcUrls: { default: { http: [rpcUrl] }, diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts index 8e719fb7..ff62b470 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts @@ -16,23 +16,44 @@ export class EvmContractAdapter implements ContractAdapter { private loadContracts() { const envContracts = this.configService.get('blockchain.contracts'); + const networkType = this.configService.get('network.networkType'); + try { const monorepoRoot = path.join(process.cwd(), '../..'); - const deployPath = path.join(monorepoRoot, 'packages/contracts/deployed_contracts.json'); + + // Determine path based on network type + let deployPath: string; + if (networkType === 'arbitrum') { + deployPath = path.join(monorepoRoot, 'packages/arbitrum-contracts/deployed_contracts_arbitrum.json'); + } else { + deployPath = path.join(monorepoRoot, 'packages/contracts/deployed_contracts.json'); + } + if (fs.existsSync(deployPath)) { const data = JSON.parse(fs.readFileSync(deployPath, 'utf8')); this.contracts = { ...data.contracts, ...envContracts }; + this.logger.log(`Loaded contracts from ${deployPath}`); } else { + this.logger.warn(`Contracts file not found at ${deployPath}`); this.contracts = envContracts || {}; } } catch (e) { + this.logger.error('Failed to load contracts', e); this.contracts = envContracts || {}; } } private loadAbis() { + const networkType = this.configService.get('network.networkType'); const monorepoRoot = path.join(process.cwd(), '../..'); - const artifactBase = path.join(monorepoRoot, 'packages/contracts/artifacts/contracts'); + + // Determine artifact base path based on network + let artifactBase: string; + if (networkType === 'arbitrum') { + artifactBase = path.join(monorepoRoot, 'packages/arbitrum-contracts/artifacts/contracts'); + } else { + artifactBase = path.join(monorepoRoot, 'packages/contracts/artifacts/contracts'); + } const mapping = { AttestationRegistry: 'core/AttestationRegistry.sol/AttestationRegistry.json', @@ -40,7 +61,9 @@ export class EvmContractAdapter implements ContractAdapter { TokenFactory: 'core/TokenFactory.sol/TokenFactory.json', YieldVault: 'core/YieldVault.sol/YieldVault.json', PrimaryMarketplace: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', + PrimaryMarket: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', RWAToken: 'core/RWAToken.sol/RWAToken.json', + SecondaryMarket: 'marketplace/SecondaryMarket.sol/SecondaryMarket.json', }; for (const [name, relPath] of Object.entries(mapping)) { diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts index 48f49605..86b0d249 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts @@ -16,6 +16,7 @@ export class EvmWalletAdapter implements WalletAdapter { this.rpcUrl = this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; const chainId = this.configService.get('blockchain.chainId') || 5003; const networkName = this.configService.get('network.networkName') || 'Mantle Sepolia'; + const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; if (!adminPk) throw new Error('ADMIN_PRIVATE_KEY not configured'); if (!platformPk) throw new Error('PLATFORM_PRIVATE_KEY not configured'); @@ -26,7 +27,7 @@ export class EvmWalletAdapter implements WalletAdapter { this.chain = defineChain({ id: chainId, name: networkName, - nativeCurrency: { decimals: 18, name: 'MNT', symbol: 'MNT' }, + nativeCurrency: { decimals: 18, name: nativeSymbol, symbol: nativeSymbol }, rpcUrls: { default: { http: [this.rpcUrl] }, public: { http: [this.rpcUrl] }, diff --git a/packages/backend/src/modules/blockchain/blockchain.module.ts b/packages/backend/src/modules/blockchain/blockchain.module.ts index 38eb251f..fcc19cad 100644 --- a/packages/backend/src/modules/blockchain/blockchain.module.ts +++ b/packages/backend/src/modules/blockchain/blockchain.module.ts @@ -10,6 +10,7 @@ import { WalletService } from './services/wallet.service'; import { ContractLoaderService } from './services/contract-loader.service'; import { EventListenerService } from './services/event-listener.service'; import { MethPriceService } from './services/meth-price.service'; +import { StArbPriceService } from './services/starb-price.service'; import { NetworkRegistryService } from './services/network-registry.service'; import { EventProcessor } from './processors/event.processor'; import { Asset, AssetSchema, AssetDocument } from '../../database/schemas/asset.schema'; @@ -153,6 +154,7 @@ export class BlockchainModule { ContractLoaderService, EventListenerService, MethPriceService, + StArbPriceService, EventProcessor, ], exports: [ @@ -168,6 +170,7 @@ export class BlockchainModule { ContractLoaderService, EventListenerService, MethPriceService, + StArbPriceService, MongooseModule, ], }; diff --git a/packages/backend/src/modules/blockchain/services/contract-loader.service.ts b/packages/backend/src/modules/blockchain/services/contract-loader.service.ts index 94f1e17f..85c68e6b 100644 --- a/packages/backend/src/modules/blockchain/services/contract-loader.service.ts +++ b/packages/backend/src/modules/blockchain/services/contract-loader.service.ts @@ -47,32 +47,47 @@ export class ContractLoaderService implements OnModuleInit { private loadContracts() { const envContracts = this.configService.get('blockchain.contracts'); + const networkType = this.configService.get('network.networkType'); // Try to load from deployed_contracts.json try { // Navigate to monorepo root (up two levels from packages/backend) const monorepoRoot = path.join(process.cwd(), '../..'); - const deployPath = path.join(monorepoRoot, 'packages/contracts/deployed_contracts.json'); + + // Determine which contracts package to use based on network type + let deployPath: string; + if (networkType === 'arbitrum') { + deployPath = path.join(monorepoRoot, 'packages/arbitrum-contracts/deployed_contracts_arbitrum.json'); + } else { + deployPath = path.join(monorepoRoot, 'packages/contracts/deployed_contracts.json'); + } if (fs.existsSync(deployPath)) { const data: DeployedContracts = JSON.parse(fs.readFileSync(deployPath, 'utf8')); - const networkKey = this.getNetworkKey(); - this.logger.log(`Loading contracts for network: ${networkKey}`); - - // Handle multi-chain structure - if (data.networks && data.networks[networkKey]) { - this.contracts = { ...data.networks[networkKey].contracts, ...envContracts }; - this.logger.log(`Loaded ${Object.keys(data.networks[networkKey].contracts).length} contract addresses from ${deployPath}`); - } - // Fallback to legacy format - else if (data.contracts) { - this.logger.warn('Using legacy deployed_contracts.json format. Consider migrating to multi-chain structure.'); + // For Arbitrum, the deployment file has a simple flat format + if (networkType === 'arbitrum') { this.contracts = { ...data.contracts, ...envContracts }; - this.logger.log(`Loaded ${Object.keys(data.contracts).length} contract addresses (legacy format)`); + this.logger.log(`Loaded ${Object.keys(data.contracts || {}).length} Arbitrum contract addresses from ${deployPath}`); } else { - this.logger.warn(`No contracts found for network ${networkKey} in deployed_contracts.json`); - this.contracts = envContracts || {}; + // Standard multi-chain or legacy format for Mantle/Stellar + const networkKey = this.getNetworkKey(); + this.logger.log(`Loading contracts for network: ${networkKey}`); + + // Handle multi-chain structure + if (data.networks && data.networks[networkKey]) { + this.contracts = { ...data.networks[networkKey].contracts, ...envContracts }; + this.logger.log(`Loaded ${Object.keys(data.networks[networkKey].contracts).length} contract addresses from ${deployPath}`); + } + // Fallback to legacy format + else if (data.contracts) { + this.logger.warn('Using legacy deployed_contracts.json format. Consider migrating to multi-chain structure.'); + this.contracts = { ...data.contracts, ...envContracts }; + this.logger.log(`Loaded ${Object.keys(data.contracts).length} contract addresses (legacy format)`); + } else { + this.logger.warn(`No contracts found for network ${networkKey} in deployed_contracts.json`); + this.contracts = envContracts || {}; + } } } else { this.logger.warn(`deployed_contracts.json not found at ${deployPath}. Relying on env vars.`); @@ -85,31 +100,60 @@ export class ContractLoaderService implements OnModuleInit { } private loadAbis() { + const networkType = this.configService.get('network.networkType'); + // Navigate to monorepo root (up two levels from packages/backend) const monorepoRoot = path.join(process.cwd(), '../..'); - const artifactBase = path.join(monorepoRoot, 'packages/contracts/artifacts/contracts'); + + // Determine artifact base path based on network + let artifactBase: string; + if (networkType === 'arbitrum') { + artifactBase = path.join(monorepoRoot, 'packages/arbitrum-contracts/artifacts/contracts'); + } else { + artifactBase = path.join(monorepoRoot, 'packages/contracts/artifacts/contracts'); + } - const mapping = { + // Base mapping for all networks + const baseMapping = { AttestationRegistry: 'core/AttestationRegistry.sol/AttestationRegistry.json', IdentityRegistry: 'core/IdentityRegistry.sol/IdentityRegistry.json', TokenFactory: 'core/TokenFactory.sol/TokenFactory.json', YieldVault: 'core/YieldVault.sol/YieldVault.json', PrimaryMarketplace: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', + PrimaryMarket: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', // Arbitrum uses this name RWAToken: 'core/RWAToken.sol/RWAToken.json', USDC: 'test/MockUSDC.sol/MockUSDC.json', + SecondaryMarket: 'marketplace/SecondaryMarket.sol/SecondaryMarket.json', + SeniorPool: 'core/SeniorPool.sol/SeniorPool.json', + PrivateAssetToken: 'core/PrivateAssetToken.sol/PrivateAssetToken.json', + }; + + // Arbitrum-specific mappings + const arbitrumMapping = { + ...baseMapping, + StARBLeverageVault: 'core/StARBLeverageVault.sol/StARBLeverageVault.json', + LeverageVault: 'core/StARBLeverageVault.sol/StARBLeverageVault.json', // Alias for compatibility + ArbitrumSwapIntegration: 'integrations/ArbitrumSwapIntegration.sol/ArbitrumSwapIntegration.json', + MockArbitrumDEX: 'test/MockArbitrumDEX.sol/MockArbitrumDEX.json', + MockStARB: 'test/MockStARB.sol/MockStARB.json', + }; + + // Mantle-specific mappings + const mantleMapping = { + ...baseMapping, Faucet: 'test/Faucet.sol/Faucet.json', MockMETH: 'test/MockMETH.sol/MockMETH.json', METHFaucet: 'test/METHFaucet.sol/METHFaucet.json', LeverageVault: 'core/LeverageVault.sol/LeverageVault.json', - SeniorPool: 'core/SeniorPool.sol/SeniorPool.json', FluxionIntegration: 'integrations/FluxionIntegration.sol/FluxionIntegration.json', MockFluxionDEX: 'test/MockFluxionDEX.sol/MockFluxionDEX.json', - SecondaryMarket: 'marketplace/SecondaryMarket.sol/SecondaryMarket.json', SolvencyVault: 'core/SolvencyVault.sol/SolvencyVault.json', OAID: 'integrations/OAID.sol/OAID.json', - PrivateAssetToken: 'core/PrivateAssetToken.sol/PrivateAssetToken.json', }; + // Select mapping based on network + const mapping = networkType === 'arbitrum' ? arbitrumMapping : mantleMapping; + for (const [name, relPath] of Object.entries(mapping)) { try { const fullPath = path.join(artifactBase, relPath); diff --git a/packages/backend/src/modules/blockchain/services/starb-price.service.ts b/packages/backend/src/modules/blockchain/services/starb-price.service.ts new file mode 100644 index 00000000..7c4c64ee --- /dev/null +++ b/packages/backend/src/modules/blockchain/services/starb-price.service.ts @@ -0,0 +1,418 @@ +import { Injectable, Logger, OnModuleInit } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { SchedulerRegistry } from '@nestjs/schedule'; +import { CronJob } from 'cron'; +import * as fs from 'fs'; +import * as path from 'path'; + +interface PriceDataPoint { + date: Date; + price: number; +} + +/** + * @class StArbPriceService + * @description Manages stARB price history from real CSV data + * Loads configurable months of historical data and updates at configurable intervals + * stARB is liquid staked ARB on Arbitrum, accruing yield from sequencer fees (~8% APY) + */ +@Injectable() +export class StArbPriceService implements OnModuleInit { + private readonly logger = new Logger(StArbPriceService.name); + + // Historical price data + private priceHistory: Map = new Map(); + private priceDataPoints: PriceDataPoint[] = []; + + // Current price in USD (6 decimals to match USDC) + private currentPrice: number = 0.8 * 1e6; // Default $0.80 per stARB + private currentDataIndex: number = 0; + private testPrice: number | null = null; // Manual override for testing + + // Configuration + private readonly updateIntervalSeconds: number; + private readonly historyDays: number; + private readonly CSV_PATH = path.join(process.cwd(), 'Data', 'starb-usd-max.csv'); + + constructor( + private configService: ConfigService, + private schedulerRegistry: SchedulerRegistry, + ) { + // Load configuration from environment + this.updateIntervalSeconds = this.configService.get('STARB_PRICE_UPDATE_INTERVAL_SECONDS', 14400); + this.historyDays = this.configService.get('STARB_PRICE_HISTORY_DAYS', 180); + } + + async onModuleInit() { + this.logger.log('Initializing stARB Price Service...'); + this.logger.log(`Configuration: Update interval = ${this.updateIntervalSeconds}s, History window = ${this.historyDays} days`); + + await this.loadHistoricalData(); + + this.logger.log(`stARB Price Service initialized with ${this.priceHistory.size} days of historical data`); + this.logger.log(`Current stARB price: $${this.getCurrentPriceUSD()}`); + + // Set up dynamic cron job based on configuration + this.setupPriceUpdateSchedule(); + } + + /** + * Set up dynamic cron job for price updates + */ + private setupPriceUpdateSchedule(): void { + // Calculate updates per day + const updateIntervalHours = this.updateIntervalSeconds / 3600; + const updatesPerDay = (24 * 3600) / this.updateIntervalSeconds; + const daysOfCoverage = this.historyDays / updatesPerDay; + + this.logger.log(`Price will update every ${this.updateIntervalSeconds}s (${updatesPerDay.toFixed(1)} times/day)`); + this.logger.log(`${this.historyDays} days of data will last approximately ${Math.floor(daysOfCoverage)} days of runtime`); + + // Use setInterval for sub-minute intervals, cron for longer intervals + if (this.updateIntervalSeconds < 60) { + // Use setInterval for sub-minute intervals + const intervalMs = this.updateIntervalSeconds * 1000; + const interval = setInterval(() => { + this.updatePriceFromHistory(); + }, intervalMs); + + this.schedulerRegistry.addInterval('starb-price-update', interval); + this.logger.log(`Scheduled price updates with interval: ${this.updateIntervalSeconds}s`); + } else { + // Use cron for minute-based or hourly intervals + let cronExpression: string; + + if (this.updateIntervalSeconds >= 3600) { + // Hourly updates: "0 */N * * *" where N is hours + const hours = Math.floor(this.updateIntervalSeconds / 3600); + cronExpression = `0 */${hours} * * *`; + } else { + // Minute updates: "*/M * * * *" where M is minutes + const minutes = Math.floor(this.updateIntervalSeconds / 60); + cronExpression = `*/${minutes} * * * *`; + } + + const job = new CronJob(cronExpression, () => { + this.updatePriceFromHistory(); + }); + + this.schedulerRegistry.addCronJob('starb-price-update', job); + job.start(); + + this.logger.log(`Scheduled price updates with cron expression: ${cronExpression}`); + } + } + + /** + * Load historical price data from CSV (ARB/USD data used as stARB approximation) + */ + private async loadHistoricalData(): Promise { + try { + // Check if CSV exists + if (!fs.existsSync(this.CSV_PATH)) { + this.logger.warn(`CSV file not found at ${this.CSV_PATH}. Using simulated data.`); + this.initializeSimulatedData(); + return; + } + + // Read CSV file + const csvContent = fs.readFileSync(this.CSV_PATH, 'utf-8'); + const lines = csvContent.split('\n').slice(1); // Skip header + + // Parse all data points + const allDataPoints: PriceDataPoint[] = []; + for (const line of lines) { + if (!line.trim()) continue; + + const [timestamp, priceStr] = line.split(','); + if (!timestamp || !priceStr) continue; + + const date = new Date(timestamp.replace(' UTC', 'Z')); + const price = parseFloat(priceStr); + + if (!isNaN(price)) { + allDataPoints.push({ date, price }); + } + } + + // Sort by date (oldest first) + allDataPoints.sort((a, b) => a.date.getTime() - b.date.getTime()); + + // Take last N days (configured via historyDays) + const targetDate = new Date(); + targetDate.setDate(targetDate.getDate() - this.historyDays); + + this.priceDataPoints = allDataPoints.filter( + (dp) => dp.date >= targetDate + ); + + // If we don't have enough data, take all available + if (this.priceDataPoints.length < this.historyDays) { + this.priceDataPoints = allDataPoints.slice(-this.historyDays); + } + + // Build price history map + for (const dataPoint of this.priceDataPoints) { + const dateKey = this.formatDate(dataPoint.date); + const priceInUsdcWei = Math.floor(dataPoint.price * 1e6); + this.priceHistory.set(dateKey, priceInUsdcWei); + } + + // Set current price to the FIRST (oldest) data point + // This allows the service to progress forward through historical data + if (this.priceDataPoints.length > 0) { + const firstPrice = this.priceDataPoints[0]!.price; + this.currentPrice = Math.floor(firstPrice * 1e6); + this.currentDataIndex = 0; // Start at the beginning + + this.logger.log(`Loaded ${this.priceDataPoints.length} days of historical data from CSV`); + this.logger.log(`Date range: ${this.formatDate(this.priceDataPoints[0]!.date)} to ${this.formatDate(this.priceDataPoints[this.priceDataPoints.length - 1]!.date)}`); + this.logger.log(`Starting at first data point: $${firstPrice} (${this.formatDate(this.priceDataPoints[0]!.date)})`); + } + } catch (error: any) { + this.logger.error(`Failed to load CSV data: ${error.message}`, error.stack); + this.initializeSimulatedData(); + } + } + + /** + * Fallback: Initialize simulated data if CSV not available + * Simulates 8% APY yield accrual for stARB + */ + private initializeSimulatedData(): void { + const today = new Date(); + const basePrice = 0.75; // Start at $0.75 (historical ARB price range) + const ANNUAL_YIELD = 0.08; // 8% APY from Arbitrum sequencer fees + const DAILY_YIELD = ANNUAL_YIELD / 365; + + for (let i = this.historyDays; i >= 0; i--) { + const date = new Date(today); + date.setDate(date.getDate() - i); + + const daysElapsed = this.historyDays - i; + const price = basePrice * Math.pow(1 + DAILY_YIELD, daysElapsed); + + const dateKey = this.formatDate(date); + const priceInUsdcWei = Math.floor(price * 1e6); + this.priceHistory.set(dateKey, priceInUsdcWei); + + this.priceDataPoints.push({ + date, + price, + }); + } + + // Start at the first (oldest) data point, not the last + const firstKey = this.formatDate(this.priceDataPoints[0]!.date); + this.currentPrice = this.priceHistory.get(firstKey) || 0.8 * 1e6; + this.currentDataIndex = 0; + + this.logger.log(`Initialized ${this.priceHistory.size} days of simulated price history`); + this.logger.log(`Starting at first data point: $${this.currentPrice / 1e6}`); + } + + /** + * Update price from historical data + * Called by dynamic cron job + */ + async updatePriceFromHistory(): Promise { + this.logger.log('Running scheduled price update...'); + + // Move to next data point (simulates time passing) + if (this.currentDataIndex < this.priceDataPoints.length - 1) { + this.currentDataIndex++; + } else { + // If we've reached the end, loop back or stay at current + this.logger.warn('Reached end of historical data. Staying at current price.'); + return; + } + + const nextDataPoint = this.priceDataPoints[this.currentDataIndex]!; + const newPrice = Math.floor(nextDataPoint.price * 1e6); + + this.logger.log( + `Price updated: $${this.currentPrice / 1e6} → $${newPrice / 1e6} (${this.formatDate(nextDataPoint.date)})` + ); + + this.currentPrice = newPrice; + + // Update today's price in history + const today = new Date(); + const dateKey = this.formatDate(today); + this.priceHistory.set(dateKey, newPrice); + } + + /** + * Get current stARB price in USDC (6 decimals) + * @returns Current price in USDC wei (e.g., 800000 = $0.80) + */ + getCurrentPrice(): number { + // Return test price if set (for testing liquidations) + if (this.testPrice !== null) { + return this.testPrice; + } + + return this.currentPrice; + } + + /** + * Get current stARB price in USD (human-readable) + * @returns Price in USD (e.g., 0.80) + */ + getCurrentPriceUSD(): number { + return this.currentPrice / 1e6; + } + + /** + * Get price for a specific date + * @param date Date to get price for + * @returns Price in USDC wei, or current price if date not found + */ + getPriceForDate(date: Date): number { + const dateKey = this.formatDate(date); + return this.priceHistory.get(dateKey) || this.currentPrice; + } + + /** + * Calculate USDC equivalent for stARB amount + * @param starbAmount Amount of stARB in wei (18 decimals) + * @returns USDC amount in wei (6 decimals) + */ + starbToUsdc(starbAmount: bigint): bigint { + // starbAmount (18 decimals) * price (6 decimals) / 1e18 = USDC (6 decimals) + const priceBI = BigInt(this.currentPrice); + return (starbAmount * priceBI) / BigInt(1e18); + } + + /** + * Calculate stARB equivalent for USDC amount + * @param usdcAmount Amount of USDC in wei (6 decimals) + * @returns stARB amount in wei (18 decimals) + */ + usdcToStarb(usdcAmount: bigint): bigint { + // usdcAmount (6 decimals) * 1e18 / price (6 decimals) = stARB (18 decimals) + const priceBI = BigInt(this.currentPrice); + return (usdcAmount * BigInt(1e18)) / priceBI; + } + + /** + * Get exchange rate for DEX swap + * @returns Exchange rate (USDC per stARB, 6 decimals) + */ + getExchangeRate(): number { + return this.currentPrice; + } + + /** + * Get full price history + * @returns Map of date strings to prices + */ + getPriceHistory(): Map { + return new Map(this.priceHistory); + } + + /** + * Get price chart data for last N days + * @param days Number of days (default 30) + * @returns Array of {date, price} objects + */ + getPriceChartData(days: number = 30): { date: string; price: number }[] { + const result: { date: string; price: number }[] = []; + + // Get last N data points + const startIndex = Math.max(0, this.priceDataPoints.length - days); + const dataPoints = this.priceDataPoints.slice(startIndex); + + for (const dp of dataPoints) { + result.push({ + date: this.formatDate(dp.date), + price: dp.price, + }); + } + + return result; + } + + /** + * Manually update price (for demo scenarios) + * @param newPrice New price in USD (e.g., 0.85) + */ + updatePrice(newPrice: number): void { + this.currentPrice = Math.floor(newPrice * 1e6); + + // Update today's price in history + const today = new Date(); + const dateKey = this.formatDate(today); + this.priceHistory.set(dateKey, this.currentPrice); + + this.logger.log(`stARB price manually updated to $${newPrice}`); + } + + /** + * Format date as YYYY-MM-DD + */ + private formatDate(date: Date): string { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; + } + + /** + * Get price statistics + * @returns Price statistics object + */ + getStats(): { + current: number; + min: number; + max: number; + avg: number; + changePercent: number; + } { + const prices = Array.from(this.priceHistory.values()); + + if (prices.length === 0) { + const current = this.getCurrentPrice() / 1e6; + return { current, min: current, max: current, avg: current, changePercent: 0 }; + } + + const min = Math.min(...prices) / 1e6; + const max = Math.max(...prices) / 1e6; + const avg = prices.reduce((a, b) => a + b, 0) / prices.length / 1e6; + const first = prices[0]! / 1e6; + const current = this.getCurrentPrice() / 1e6; + const changePercent = ((current - first) / first) * 100; + + return { + current, + min, + max, + avg, + changePercent, + }; + } + + /** + * Set test price for manual testing (admin only) + * @param priceInUSDC Price in USDC wei (6 decimals) + */ + setTestPrice(priceInUSDC: number): void { + this.testPrice = priceInUSDC; + this.logger.warn(`āš ļø Test price set to: $${priceInUSDC / 1e6} (${priceInUSDC} USDC)`); + } + + /** + * Reset to automatic price updates + */ + resetTestPrice(): void { + this.testPrice = null; + this.logger.log('Test price cleared, resuming automatic updates'); + } + + /** + * Check if using test price + */ + isUsingTestPrice(): boolean { + return this.testPrice !== null; + } +} diff --git a/packages/backend/src/modules/leverage/controllers/leverage.controller.ts b/packages/backend/src/modules/leverage/controllers/leverage.controller.ts index af22601b..6518725c 100644 --- a/packages/backend/src/modules/leverage/controllers/leverage.controller.ts +++ b/packages/backend/src/modules/leverage/controllers/leverage.controller.ts @@ -1,12 +1,12 @@ -import { Controller, Post, Get, Body, Param, UseGuards, Request, Logger } from '@nestjs/common'; +import { Controller, Post, Get, Body, Param, UseGuards, Request, Logger, Inject } from '@nestjs/common'; import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard'; import { LeveragePositionService } from '../services/leverage-position.service'; -import { FluxionDEXService } from '../services/fluxion-dex.service'; import { LeverageBlockchainService } from '../services/leverage-blockchain.service'; import { InitiateLeveragePurchaseDto, GetSwapQuoteDto, UnwindPositionDto } from '../dto/leverage.dto'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; +import { DEX_SERVICE } from '../leverage.constants'; @Controller('leverage') @UseGuards(JwtAuthGuard) @@ -16,7 +16,7 @@ export class LeverageController { constructor( private readonly positionService: LeveragePositionService, - private readonly dexService: FluxionDEXService, + @Inject(DEX_SERVICE) private readonly dexService: { calculateMETHValueUSD: (amount: bigint) => Promise; getMETHPrice: () => Promise; getQuote: (amount: bigint) => Promise }, private readonly blockchainService: LeverageBlockchainService, @InjectModel(Asset.name) private assetModel: Model, ) { } diff --git a/packages/backend/src/modules/leverage/leverage.constants.ts b/packages/backend/src/modules/leverage/leverage.constants.ts new file mode 100644 index 00000000..2ca3ec82 --- /dev/null +++ b/packages/backend/src/modules/leverage/leverage.constants.ts @@ -0,0 +1,11 @@ +/** + * Injection token for DEX service + * This allows network-agnostic injection of either FluxionDEXService or ArbitrumDEXService + */ +export const DEX_SERVICE = Symbol('DEX_SERVICE'); + +/** + * Injection token for price service + * This allows network-agnostic injection of either MethPriceService or StArbPriceService + */ +export const PRICE_SERVICE = Symbol('PRICE_SERVICE'); diff --git a/packages/backend/src/modules/leverage/leverage.module.ts b/packages/backend/src/modules/leverage/leverage.module.ts index d7b8c429..333ebb55 100644 --- a/packages/backend/src/modules/leverage/leverage.module.ts +++ b/packages/backend/src/modules/leverage/leverage.module.ts @@ -1,10 +1,12 @@ -import { Module, forwardRef } from '@nestjs/common'; +import { Module, forwardRef, DynamicModule } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { MongooseModule } from '@nestjs/mongoose'; import { ScheduleModule } from '@nestjs/schedule'; import { LeveragePosition, LeveragePositionSchema } from '../../database/schemas/leverage-position.schema'; import { Asset, AssetSchema } from '../../database/schemas/asset.schema'; import { LeveragePositionService } from './services/leverage-position.service'; import { FluxionDEXService } from './services/fluxion-dex.service'; +import { ArbitrumDEXService } from './services/arbitrum-dex.service'; import { LeverageBlockchainService } from './services/leverage-blockchain.service'; import { HarvestKeeperService } from './services/harvest-keeper.service'; import { HealthMonitorService } from './services/health-monitor.service'; @@ -14,33 +16,63 @@ import { BlockchainModule } from '../blockchain/blockchain.module'; import { NotificationsModule } from '../notifications/notifications.module'; import { AuthModule } from '../auth/auth.module'; import { UserPortfolioModule } from '../user-portfolio/user-portfolio.module'; +import { DEX_SERVICE, PRICE_SERVICE } from './leverage.constants'; +import { MethPriceService } from '../blockchain/services/meth-price.service'; +import { StArbPriceService } from '../blockchain/services/starb-price.service'; -@Module({ - imports: [ - MongooseModule.forFeature([ - { name: LeveragePosition.name, schema: LeveragePositionSchema }, - { name: Asset.name, schema: AssetSchema }, - ]), - ScheduleModule.forRoot(), // Enable cron jobs - forwardRef(() => BlockchainModule), - NotificationsModule, - AuthModule, // For JwtAuthGuard - UserPortfolioModule, - ], - controllers: [LeverageController, LeverageAdminController], - providers: [ - LeveragePositionService, - FluxionDEXService, - LeverageBlockchainService, - HarvestKeeperService, - HealthMonitorService, - ], - exports: [ - LeveragePositionService, - FluxionDEXService, - LeverageBlockchainService, - HarvestKeeperService, - HealthMonitorService, - ], -}) -export class LeverageModule {} +@Module({}) +export class LeverageModule { + static forRoot(): DynamicModule { + // Determine network type at module initialization + const networkType = process.env.NETWORK_TYPE || 'mantle'; + + // Select DEX service based on network + const dexServiceProvider = networkType === 'arbitrum' + ? ArbitrumDEXService + : FluxionDEXService; + + // Select price service based on network + const priceServiceProvider = networkType === 'arbitrum' + ? StArbPriceService + : MethPriceService; + + return { + module: LeverageModule, + global: true, // Exports available app-wide without re-importing + imports: [ + MongooseModule.forFeature([ + { name: LeveragePosition.name, schema: LeveragePositionSchema }, + { name: Asset.name, schema: AssetSchema }, + ]), + ScheduleModule.forRoot(), // Enable cron jobs + forwardRef(() => BlockchainModule), + NotificationsModule, + AuthModule, // For JwtAuthGuard + UserPortfolioModule, + ], + controllers: [LeverageController, LeverageAdminController], + providers: [ + LeveragePositionService, + { + provide: DEX_SERVICE, + useClass: dexServiceProvider, + }, + { + provide: PRICE_SERVICE, + useExisting: priceServiceProvider, + }, + LeverageBlockchainService, + HarvestKeeperService, + HealthMonitorService, + ], + exports: [ + LeveragePositionService, + DEX_SERVICE, + PRICE_SERVICE, + LeverageBlockchainService, + HarvestKeeperService, + HealthMonitorService, + ], + }; + } +} diff --git a/packages/backend/src/modules/leverage/services/arbitrum-dex.service.ts b/packages/backend/src/modules/leverage/services/arbitrum-dex.service.ts new file mode 100644 index 00000000..54118fa8 --- /dev/null +++ b/packages/backend/src/modules/leverage/services/arbitrum-dex.service.ts @@ -0,0 +1,253 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { createPublicClient, http, Address, defineChain } from 'viem'; +import { ContractLoaderService } from '../../blockchain/services/contract-loader.service'; +import { StArbPriceService } from '../../blockchain/services/starb-price.service'; + +/** + * @title ArbitrumDEXService + * @notice Service for interacting with Arbitrum DEX and stARB price oracle + * @dev Provides price quotes, swap calculations, and USD value conversions for Arbitrum + * NOTE: Pricing is managed entirely in backend via StArbPriceService (no on-chain oracle) + */ +@Injectable() +export class ArbitrumDEXService { + private readonly logger = new Logger(ArbitrumDEXService.name); + private publicClient; + + constructor( + private configService: ConfigService, + private contractLoader: ContractLoaderService, + private starbPriceService: StArbPriceService, + ) { + // Dynamically construct chain from config + const rpcUrl = this.configService.get('blockchain.rpcUrl') || 'https://sepolia-rollup.arbitrum.io/rpc'; + const chainId = this.configService.get('blockchain.chainId') || 421614; + const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'ETH'; + + const arbitrumChain = defineChain({ + id: chainId, + name: 'Arbitrum', + nativeCurrency: { + decimals: 18, + name: 'Ethereum', + symbol: nativeSymbol, + }, + rpcUrls: { + default: { + http: [rpcUrl], + }, + public: { + http: [rpcUrl], + }, + }, + }); + + this.publicClient = createPublicClient({ + chain: arbitrumChain, + transport: http(rpcUrl), + }); + + this.logger.log(`ArbitrumDEXService initialized for chain ${chainId} (${nativeSymbol})`); + } + + private async executeWithRetry( + operation: () => Promise, + description: string, + maxRetries = 5, + initialDelay = 2000, + ): Promise { + let retries = 0; + let delay = initialDelay; + + while (true) { + try { + return await operation(); + } catch (error: any) { + retries++; + if (retries > maxRetries) { + this.logger.error(`Failed ${description} after ${maxRetries} retries: ${error.message}`); + throw error; + } + this.logger.warn( + `Error in ${description} (attempt ${retries}/${maxRetries}): ${error.message}. Retrying in ${delay}ms...`, + ); + await new Promise((resolve) => setTimeout(resolve, delay)); + delay *= 2; + } + } + } + + /** + * Get stARB price in USD from backend StArbPriceService + * @returns Price in USD with 6 decimals (USDC wei format, e.g., 800000 = $0.80) + */ + async getCollateralPrice(): Promise { + try { + const price = this.starbPriceService.getCurrentPrice(); // 6 decimals + this.logger.debug(`stARB price (from backend): $${price / 1e6}`); + return BigInt(price); + } catch (error) { + this.logger.error(`Failed to get stARB price: ${error}`); + throw error; + } + } + + /** + * Get swap quote from Arbitrum DEX + * @param starbAmount Amount of stARB to swap (wei format, 18 decimals) + * @returns Expected USDC output (wei format, 6 decimals) + */ + async getQuote(starbAmount: bigint): Promise { + try { + const swapIntegrationAddress = this.contractLoader.getContractAddress('ArbitrumSwapIntegration'); + const swapIntegrationABI = this.contractLoader.getContractAbi('ArbitrumSwapIntegration'); + + const quote = (await this.executeWithRetry(() => this.publicClient.readContract({ + address: swapIntegrationAddress as Address, + abi: swapIntegrationABI, + functionName: 'getQuote', + args: [starbAmount], + }), 'getQuote')) as bigint; + + this.logger.debug( + `Swap quote: ${Number(starbAmount) / 1e18} stARB → ${Number(quote) / 1e6} USDC`, + ); + return quote; + } catch (error) { + this.logger.error(`Failed to get swap quote: ${error}`); + throw error; + } + } + + /** + * Calculate USD value of stARB amount using backend pricing + * @param starbAmount Amount of stARB (wei format, 18 decimals) + * @returns USD value (wei format, 6 decimals for USDC) + */ + async calculateCollateralValueUSD(starbAmount: bigint): Promise { + try { + // Use StArbPriceService's built-in conversion + const valueUSD = this.starbPriceService.starbToUsdc(starbAmount); + + this.logger.debug( + `${Number(starbAmount) / 1e18} stARB = $${Number(valueUSD) / 1e6} (backend pricing)`, + ); + return valueUSD; + } catch (error) { + this.logger.error(`Failed to calculate stARB value: ${error}`); + throw error; + } + } + + /** + * Calculate stARB amount needed for target USDC using backend pricing + * @param targetUSDC Target USDC amount (wei format, 6 decimals) + * @returns stARB amount needed (wei format, 18 decimals) + */ + async calculateCollateralForUSDC(targetUSDC: bigint): Promise { + try { + // Use StArbPriceService's built-in conversion + const starbNeeded = this.starbPriceService.usdcToStarb(targetUSDC); + + this.logger.debug( + `Need ${Number(starbNeeded) / 1e18} stARB for $${Number(targetUSDC) / 1e6} (backend pricing)`, + ); + return starbNeeded; + } catch (error) { + this.logger.error(`Failed to calculate stARB for USDC: ${error}`); + throw error; + } + } + + /** + * Get DEX statistics from ArbitrumSwapIntegration + * @returns Swap statistics + */ + async getDEXStats(): Promise<{ + totalSwaps: bigint; + totalCollateralSwapped: bigint; + totalUSDCReceived: bigint; + }> { + try { + const swapIntegrationAddress = this.contractLoader.getContractAddress('ArbitrumSwapIntegration'); + const swapIntegrationABI = this.contractLoader.getContractAbi('ArbitrumSwapIntegration'); + + const stats = (await this.executeWithRetry(() => this.publicClient.readContract({ + address: swapIntegrationAddress as Address, + abi: swapIntegrationABI, + functionName: 'getSwapStats', + }), 'getSwapStats')) as [bigint, bigint, bigint]; + + return { + totalSwaps: stats[0], + totalCollateralSwapped: stats[1], + totalUSDCReceived: stats[2], + }; + } catch (error) { + this.logger.error(`Failed to get DEX stats: ${error}`); + throw error; + } + } + + /** + * Check if DEX has sufficient liquidity for swap + * @param starbAmount Amount to swap + * @returns true if liquidity is sufficient (>10x swap amount) + */ + async checkLiquidity(starbAmount: bigint): Promise { + try { + const dexAddress = this.contractLoader.getContractAddress('MockArbitrumDEX'); + const dexABI = this.contractLoader.getContractAbi('MockArbitrumDEX'); + + const reserves = (await this.executeWithRetry(() => this.publicClient.readContract({ + address: dexAddress as Address, + abi: dexABI, + functionName: 'getReserves', + }), 'getReserves')) as [bigint, bigint]; + + const usdcReserve = reserves[1]; + const requiredUSDC = await this.getQuote(starbAmount); + const hasLiquidity = usdcReserve >= requiredUSDC * BigInt(10); // 10x buffer + + this.logger.debug( + `Liquidity check: ${hasLiquidity ? 'āœ…' : 'āŒ'} (reserve: ${Number(usdcReserve) / 1e6} USDC, needed: ${Number(requiredUSDC) / 1e6} USDC)`, + ); + + return hasLiquidity; + } catch (error) { + this.logger.error(`Failed to check liquidity: ${error}`); + return false; + } + } + + // ==================================================================== + // Method Aliases for Network-Agnostic Interface Compatibility + // ==================================================================== + + /** + * Alias for getCollateralPrice() - provides interface compatibility with FluxionDEXService + * @returns stARB price in USD with 6 decimals + */ + async getMETHPrice(): Promise { + return this.getCollateralPrice(); + } + + /** + * Alias for calculateCollateralForUSDC() - provides interface compatibility with FluxionDEXService + * @param targetUSDC Target USDC amount (wei format, 6 decimals) + * @returns stARB amount needed (wei format, 18 decimals) + */ + async calculateMETHForUSDC(targetUSDC: bigint): Promise { + return this.calculateCollateralForUSDC(targetUSDC); + } + + /** + * Alias for calculateCollateralValueUSD() - provides interface compatibility with FluxionDEXService + * @param starbAmount Amount of stARB (wei format, 18 decimals) + * @returns USD value (wei format, 6 decimals for USDC) + */ + async calculateMETHValueUSD(starbAmount: bigint): Promise { + return this.calculateCollateralValueUSD(starbAmount); + } +} diff --git a/packages/backend/src/modules/leverage/services/fluxion-dex.service.ts b/packages/backend/src/modules/leverage/services/fluxion-dex.service.ts index 208a91dd..43160fd4 100644 --- a/packages/backend/src/modules/leverage/services/fluxion-dex.service.ts +++ b/packages/backend/src/modules/leverage/services/fluxion-dex.service.ts @@ -1,7 +1,6 @@ import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { createPublicClient, http, Address } from 'viem'; -import { mantleSepolia } from '../../../config/mantle-chain'; +import { createPublicClient, http, Address, defineChain } from 'viem'; import { ContractLoaderService } from '../../blockchain/services/contract-loader.service'; import { MethPriceService } from '../../blockchain/services/meth-price.service'; @@ -21,9 +20,29 @@ export class FluxionDEXService { private contractLoader: ContractLoaderService, private methPriceService: MethPriceService, ) { + // Dynamically construct chain from config + const rpcUrl = this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; + const chainId = this.configService.get('blockchain.chainId') || 5003; + const networkName = this.configService.get('network.networkName') || 'Mantle Sepolia'; + const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; + + const chain = defineChain({ + id: chainId, + name: networkName, + nativeCurrency: { + decimals: 18, + name: nativeSymbol, + symbol: nativeSymbol, + }, + rpcUrls: { + default: { http: [rpcUrl] }, + public: { http: [rpcUrl] }, + }, + }); + this.publicClient = createPublicClient({ - chain: mantleSepolia, - transport: http(this.configService.get('blockchain.rpcUrl')), + chain, + transport: http(rpcUrl), }); } diff --git a/packages/backend/src/modules/leverage/services/harvest-keeper.service.ts b/packages/backend/src/modules/leverage/services/harvest-keeper.service.ts index 985dced3..29af07c6 100644 --- a/packages/backend/src/modules/leverage/services/harvest-keeper.service.ts +++ b/packages/backend/src/modules/leverage/services/harvest-keeper.service.ts @@ -1,10 +1,12 @@ -import { Injectable, Logger, OnModuleInit } from '@nestjs/common'; +import { Injectable, Logger, OnModuleInit, Inject } from '@nestjs/common'; import { SchedulerRegistry } from '@nestjs/schedule'; import { ConfigService } from '@nestjs/config'; import { LeveragePositionService } from './leverage-position.service'; import { LeverageBlockchainService } from './leverage-blockchain.service'; import { FluxionDEXService } from './fluxion-dex.service'; +import { ArbitrumDEXService } from './arbitrum-dex.service'; import { NotificationService } from '../../notifications/services/notification.service'; +import { DEX_SERVICE } from '../leverage.constants'; import { NotificationType } from '../../notifications/enums/notification-type.enum'; import { NotificationSeverity } from '../../notifications/enums/notification-type.enum'; import { NotificationAction } from '../../notifications/enums/notification-action.enum'; @@ -32,7 +34,7 @@ export class HarvestKeeperService implements OnModuleInit { private configService: ConfigService, private positionService: LeveragePositionService, private blockchainService: LeverageBlockchainService, - private dexService: FluxionDEXService, + @Inject(DEX_SERVICE) private dexService: FluxionDEXService | ArbitrumDEXService, private notificationService: NotificationService, private schedulerRegistry: SchedulerRegistry, ) { diff --git a/packages/backend/src/modules/leverage/services/leverage-blockchain.service.ts b/packages/backend/src/modules/leverage/services/leverage-blockchain.service.ts index d8515024..a3cb3501 100644 --- a/packages/backend/src/modules/leverage/services/leverage-blockchain.service.ts +++ b/packages/backend/src/modules/leverage/services/leverage-blockchain.service.ts @@ -1,10 +1,11 @@ -import { Injectable, Logger } from '@nestjs/common'; +import { Injectable, Logger, Inject } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { createPublicClient, http, Hash, Address, decodeEventLog } from 'viem'; -import { mantleSepolia } from '../../../config/mantle-chain'; +import { createPublicClient, http, Hash, Address, decodeEventLog, defineChain } from 'viem'; import { ContractLoaderService } from '../../blockchain/services/contract-loader.service'; import { WalletService } from '../../blockchain/services/wallet.service'; import { MethPriceService } from '../../blockchain/services/meth-price.service'; +import { StArbPriceService } from '../../blockchain/services/starb-price.service'; +import { PRICE_SERVICE } from '../leverage.constants'; /** * @title LeverageBlockchainService @@ -15,16 +16,48 @@ import { MethPriceService } from '../../blockchain/services/meth-price.service'; export class LeverageBlockchainService { private readonly logger = new Logger(LeverageBlockchainService.name); private publicClient; + private readonly vaultContractName: string; + private readonly swapIntegrationName: string; constructor( private configService: ConfigService, private contractLoader: ContractLoaderService, private walletService: WalletService, - private methPriceService: MethPriceService, + @Inject(PRICE_SERVICE) private priceService: MethPriceService | StArbPriceService, ) { + // Determine contract names based on network type + const networkType = this.configService.get('network.networkType'); + if (networkType === 'arbitrum') { + this.vaultContractName = 'StARBLeverageVault'; + this.swapIntegrationName = 'ArbitrumSwapIntegration'; + } else { + this.vaultContractName = 'LeverageVault'; + this.swapIntegrationName = 'FluxionIntegration'; + } + + // Create chain dynamically from config + const rpcUrl = this.configService.get('blockchain.rpcUrl'); + const chainId = this.configService.get('blockchain.chainId'); + const networkName = this.configService.get('network.networkName'); + const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; + + const chain = defineChain({ + id: chainId, + name: networkName, + nativeCurrency: { + decimals: 18, + name: nativeSymbol, + symbol: nativeSymbol, + }, + rpcUrls: { + default: { http: [rpcUrl] }, + public: { http: [rpcUrl] }, + }, + }); + this.publicClient = createPublicClient({ - chain: mantleSepolia, - transport: http(this.configService.get('blockchain.rpcUrl')), + chain, + transport: http(rpcUrl), }); } @@ -76,8 +109,8 @@ export class LeverageBlockchainService { mETHPriceUSD: bigint; }): Promise<{ hash: Hash; positionId?: number }> { const wallet = this.walletService.getPlatformWallet(); - const address = this.contractLoader.getContractAddress('LeverageVault'); - const abi = this.contractLoader.getContractAbi('LeverageVault'); + const address = this.contractLoader.getContractAddress(this.vaultContractName); + const abi = this.contractLoader.getContractAbi(this.vaultContractName); // Convert mETH price from 6 decimals (USDC wei) to 18 decimals (contract expects 18) // e.g., 2856450000 (6 decimals) → 2856450000000000000000 (18 decimals) @@ -163,25 +196,25 @@ export class LeverageBlockchainService { interestPaid: bigint; }> { const wallet = this.walletService.getPlatformWallet(); - const address = this.contractLoader.getContractAddress('LeverageVault'); - const abi = this.contractLoader.getContractAbi('LeverageVault'); + const address = this.contractLoader.getContractAddress(this.vaultContractName); + const abi = this.contractLoader.getContractAbi(this.vaultContractName); this.logger.log(`🌾 Harvesting yield for position ${positionId}...`); try { - // Get current mETH price and convert from 6 to 18 decimals - const methPriceUSDC = BigInt(this.methPriceService.getCurrentPrice()); - const methPriceUSD = methPriceUSDC * BigInt(1e12); // Convert from 6 to 18 decimals + // Get current collateral price and convert from 6 to 18 decimals + const collateralPriceUSDC = BigInt(this.priceService.getCurrentPrice()); + const collateralPriceUSD = collateralPriceUSDC * BigInt(1e12); // Convert from 6 to 18 decimals this.logger.log( - `Using mETH price: $${Number(methPriceUSDC) / 1e6} (${methPriceUSD.toString()} wei)`, + `Using collateral price: $${Number(collateralPriceUSDC) / 1e6} (${collateralPriceUSD.toString()} wei)`, ); const hash = await this.executeWithRetry(() => wallet.writeContract({ address: address as Address, abi, functionName: 'harvestYield', - args: [BigInt(positionId), methPriceUSD], + args: [BigInt(positionId), collateralPriceUSD], }), 'harvestYield write'); const receipt = await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ @@ -251,8 +284,8 @@ export class LeverageBlockchainService { debtRepaid: string; }> { const wallet = this.walletService.getPlatformWallet(); - const address = this.contractLoader.getContractAddress('LeverageVault'); - const abi = this.contractLoader.getContractAbi('LeverageVault'); + const address = this.contractLoader.getContractAddress(this.vaultContractName); + const abi = this.contractLoader.getContractAbi(this.vaultContractName); this.logger.log(`āš ļø Liquidating position ${positionId}...`); @@ -263,10 +296,10 @@ export class LeverageBlockchainService { this.logger.warn(` Price in USD: $${Number(overridePrice) / 1e18}`); methPriceUSD = overridePrice; } else { - // Get current mETH price (6 decimals) and convert to 18 decimals - const methPriceUSDC = BigInt(this.methPriceService.getCurrentPrice()); - methPriceUSD = methPriceUSDC * BigInt(1e12); // Convert from 6 to 18 decimals - this.logger.log(` Using current mETH price: $${Number(methPriceUSDC) / 1e6}`); + // Get current collateral price (6 decimals) and convert to 18 decimals + const collateralPriceUSDC = BigInt(this.priceService.getCurrentPrice()); + methPriceUSD = collateralPriceUSDC * BigInt(1e12); // Convert from 6 to 18 decimals + this.logger.log(` Using current collateral price: $${Number(collateralPriceUSDC) / 1e6}`); } try { @@ -399,8 +432,8 @@ export class LeverageBlockchainService { usdcReceived: bigint; }> { const wallet = this.walletService.getPlatformWallet(); - const leverageVaultAddress = this.contractLoader.getContractAddress('LeverageVault'); - const leverageVaultAbi = this.contractLoader.getContractAbi('LeverageVault'); + const leverageVaultAddress = this.contractLoader.getContractAddress(this.vaultContractName); + const leverageVaultAbi = this.contractLoader.getContractAbi(this.vaultContractName); const yieldVaultAddress = this.contractLoader.getContractAddress('YieldVault'); const yieldVaultAbi = this.contractLoader.getContractAbi('YieldVault'); @@ -736,18 +769,18 @@ export class LeverageBlockchainService { async getHealthFactor(positionId: number): Promise { try { const leverageVaultAddress = - this.contractLoader.getContractAddress('LeverageVault'); - const leverageVaultABI = this.contractLoader.getContractAbi('LeverageVault'); + this.contractLoader.getContractAddress(this.vaultContractName); + const leverageVaultABI = this.contractLoader.getContractAbi(this.vaultContractName); - // Get current mETH price (6 decimals) and convert to 18 decimals - const methPriceUSDC = BigInt(this.methPriceService.getCurrentPrice()); - const methPriceUSD = methPriceUSDC * BigInt(1e12); // Convert from 6 to 18 decimals + // Get current collateral price (6 decimals) and convert to 18 decimals + const collateralPriceUSDC = BigInt(this.priceService.getCurrentPrice()); + const collateralPriceUSD = collateralPriceUSDC * BigInt(1e12); // Convert from 6 to 18 decimals const healthFactor = (await this.executeWithRetry(() => this.publicClient.readContract({ address: leverageVaultAddress as Address, abi: leverageVaultABI, functionName: 'getHealthFactor', - args: [BigInt(positionId), methPriceUSD], + args: [BigInt(positionId), collateralPriceUSD], }), 'getHealthFactor')) as bigint; return Number(healthFactor); diff --git a/packages/backend/src/modules/solvency/solvency.module.ts b/packages/backend/src/modules/solvency/solvency.module.ts index 75711258..c7c9ebac 100644 --- a/packages/backend/src/modules/solvency/solvency.module.ts +++ b/packages/backend/src/modules/solvency/solvency.module.ts @@ -12,7 +12,6 @@ import { PrivateAsset, PrivateAssetSchema } from '../../database/schemas/private import { PrivateAssetRequest, PrivateAssetRequestSchema } from '../../database/schemas/private-asset-request.schema'; import { Asset, AssetSchema } from '../../database/schemas/asset.schema'; import { BlockchainModule } from '../blockchain/blockchain.module'; -import { LeverageModule } from '../leverage/leverage.module'; import { NotificationsModule } from '../notifications/notifications.module'; import { PartnersModule } from '../partners/partners.module'; import { UserPortfolioModule } from '../user-portfolio/user-portfolio.module'; @@ -27,7 +26,6 @@ import { UserPortfolioModule } from '../user-portfolio/user-portfolio.module'; ]), ScheduleModule.forRoot(), forwardRef(() => BlockchainModule), - LeverageModule, // For liquidating leverage positions via admin controller NotificationsModule, forwardRef(() => PartnersModule), // For accessing PartnerLoanService (circular dependency) UserPortfolioModule, diff --git a/packages/backend/src/modules/yield/yield.module.ts b/packages/backend/src/modules/yield/yield.module.ts index 308449d8..dff59052 100644 --- a/packages/backend/src/modules/yield/yield.module.ts +++ b/packages/backend/src/modules/yield/yield.module.ts @@ -13,7 +13,6 @@ import { UserYieldClaim, UserYieldClaimSchema } from '../../database/schemas/use import { Asset, AssetSchema } from '../../database/schemas/asset.schema'; import { BlockchainModule } from '../blockchain/blockchain.module'; import { NotificationsModule } from '../notifications/notifications.module'; -import { LeverageModule } from '../leverage/leverage.module'; import { SolvencyModule } from '../solvency/solvency.module'; import { SecondaryMarketModule } from '../secondary-market/secondary-market.module'; import { UserPortfolioModule } from '../user-portfolio/user-portfolio.module'; @@ -29,7 +28,6 @@ import { UserPortfolioModule } from '../user-portfolio/user-portfolio.module'; { name: Asset.name, schema: AssetSchema }, ]), forwardRef(() => BlockchainModule), - forwardRef(() => LeverageModule), forwardRef(() => SolvencyModule), forwardRef(() => SecondaryMarketModule), NotificationsModule, diff --git a/packages/backend/src/utils/validators/canonical-amount.validator.ts b/packages/backend/src/utils/validators/canonical-amount.validator.ts index b08ee527..d55911ca 100644 --- a/packages/backend/src/utils/validators/canonical-amount.validator.ts +++ b/packages/backend/src/utils/validators/canonical-amount.validator.ts @@ -43,8 +43,8 @@ export function IsCanonicalAmount(validationOptions?: ValidationOptions) { } // Ensure no leading zeros in integer part (except "0.xxxx") - const [integerPart] = value.split('.'); - if (integerPart.length > 1 && integerPart.startsWith('0') && integerPart !== '0') { + const integerPart = value.split('.')[0]; + if (integerPart && integerPart.length > 1 && integerPart.startsWith('0') && integerPart !== '0') { return false; } @@ -91,8 +91,8 @@ export function IsOptionalCanonicalAmount(validationOptions?: ValidationOptions) return false; } - const [integerPart] = value.split('.'); - if (integerPart.length > 1 && integerPart.startsWith('0') && integerPart !== '0') { + const integerPart = value.split('.')[0]; + if (integerPart && integerPart.length > 1 && integerPart.startsWith('0') && integerPart !== '0') { return false; } From 529127650dae0cd99eb2e964d6c030275731b9e2 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Sun, 22 Feb 2026 12:57:16 +0530 Subject: [PATCH 03/21] "all the fixes" --- .../deployed_contracts_arbitrum.json | 28 +++---- packages/arbitrum-contracts/hardhat.config.ts | 4 +- .../scripts/deploy/check_state.ts | 25 ++++++ .../scripts/deploy/deploy_arbitrum.ts | 10 +++ .../scripts/deploy/register_vault.ts | 55 +++++++++++++ .../scripts/deploy/set_factory.ts | 66 ++++++++++++++++ .../src/database/schemas/asset.schema.ts | 2 +- .../src/database/schemas/bid.schema.ts | 2 +- .../src/database/schemas/purchase.schema.ts | 2 +- packages/backend/src/main.ts | 2 +- .../mantle/mantle-admin-strategy.service.ts | 11 ++- .../services/asset-lifecycle.service.ts | 6 +- .../src/modules/auth/utils/wallet.util.ts | 17 +++- .../adapters/evm/evm-blockchain.adapter.ts | 12 ++- .../evm/evm-contract-loader.adapter.ts | 18 +++++ .../adapters/evm/evm-payment.adapter.ts | 21 +++-- .../blockchain/services/blockchain.service.ts | 41 ++++++---- .../services/contract-loader.service.ts | 17 ++++ .../blockchain/services/wallet.service.ts | 24 ++++-- .../controllers/leverage-admin.controller.ts | 47 ++++++----- .../controllers/leverage.controller.ts | 79 +++++++++++++------ .../src/modules/leverage/dto/leverage.dto.ts | 13 ++- .../services/module-registry.service.ts | 5 +- .../services/token-balance.service.ts | 3 +- .../services/solvency-blockchain.service.ts | 10 ++- .../services/user-portfolio.service.ts | 10 +-- 26 files changed, 416 insertions(+), 114 deletions(-) create mode 100644 packages/arbitrum-contracts/scripts/deploy/check_state.ts create mode 100644 packages/arbitrum-contracts/scripts/deploy/register_vault.ts create mode 100644 packages/arbitrum-contracts/scripts/deploy/set_factory.ts diff --git a/packages/arbitrum-contracts/deployed_contracts_arbitrum.json b/packages/arbitrum-contracts/deployed_contracts_arbitrum.json index 0d8dcebc..ce7980d2 100644 --- a/packages/arbitrum-contracts/deployed_contracts_arbitrum.json +++ b/packages/arbitrum-contracts/deployed_contracts_arbitrum.json @@ -2,20 +2,20 @@ "network": "arbitrum", "chainId": "421614", "deployer": "0x23e67597f0898f747Fa3291C8920168adF9455D0", - "timestamp": "2026-02-21T08:41:28.419Z", + "timestamp": "2026-02-21T11:09:06.662Z", "contracts": { - "MockUSDC": "0xb9BfaEDe01f0f2b2162072b73e2b2038Fb42b5cD", - "MockStARB": "0x89C70bB202341c28e7a8dF333b4981BfB49b3c21", - "SeniorPool": "0x77bB1944E2a2FC0e5D0F587699041ee09900ADA8", - "MockArbitrumDEX": "0x9cb153775B639DCa50F1BA7a6daa34af12466450", - "ArbitrumSwapIntegration": "0x01B727f7a5d6F1533fE585EddD5c6E921d228B9D", - "AttestationRegistry": "0x4898723528Fe25756c2e1968605a62ce6c48F576", - "TrustedIssuersRegistry": "0x01374eD3fF1800D2e1A941D2Fef6ebda590820E1", - "IdentityRegistry": "0x88C90da0B337d0EAdd2B87e14D40aA6DEe4F64e9", - "YieldVault": "0xb2A2920Da9b824dc2D7cbfDC47c06a5e6111C2D7", - "TokenFactory": "0x1B014A3a16E5AF7D1207646f35AFD2b08535c1EB", - "PrimaryMarket": "0x06c0495B717c064c00528ddFfD7Fe99228C6B76a", - "SecondaryMarket": "0x0c67Bc77A1Fc89C7eC45248e14b7931C6F5406B5", - "StARBLeverageVault": "0xa3A62151f74DD961f1a3C08474C56C3B9bF45CDd" + "MockUSDC": "0xa6887882e7430862150F7C4FF5AE192966c6e1d2", + "MockStARB": "0x3172772883A4CfD4013280CA95370017f4a863f9", + "SeniorPool": "0x2a2bfe500536BADf9657e50088f0F60F2A082664", + "MockArbitrumDEX": "0xd618e5D470Df53BBA73c98d415924a3467901bd5", + "ArbitrumSwapIntegration": "0xE9d2d78eFfB816E6402b542A514197bB4448427d", + "AttestationRegistry": "0xF0877f80C28613eB0a83AfE2d9D9Cd9b08fFa371", + "TrustedIssuersRegistry": "0x74512695334F45FaF93a8a0dAbb54f9D39fe9613", + "IdentityRegistry": "0xc19a39065e453b79C48CDd115c98d54B582c0efD", + "YieldVault": "0xb82A3aDFA1913Db64084569aaB55bB4223e28189", + "TokenFactory": "0x4AB03540a90A9C701049C7F75b16b58D83e6A272", + "PrimaryMarket": "0x47232472137C68AAE3f52E8f81F51FE4f4B6D89D", + "SecondaryMarket": "0xaaD379B3dE8dFa235813a68b24c9ab9E9B302BEB", + "StARBLeverageVault": "0x8DDD583FfA5b6A442c8D2bf277DffCE890e13DCc" } } \ No newline at end of file diff --git a/packages/arbitrum-contracts/hardhat.config.ts b/packages/arbitrum-contracts/hardhat.config.ts index 5d76074a..01c2bc3f 100644 --- a/packages/arbitrum-contracts/hardhat.config.ts +++ b/packages/arbitrum-contracts/hardhat.config.ts @@ -3,6 +3,7 @@ import "@nomicfoundation/hardhat-toolbox"; import "dotenv/config"; const PRIVATE_KEY = process.env.ADMIN_PRIVATE_KEY || process.env.PRIVATE_KEY || ""; +const ARB_SEPOLIA_RPC = process.env.MANTLE_RPC_URL || process.env.ARB_SEPOLIA_RPC_URL || "https://sepolia-rollup.arbitrum.io/rpc"; const config: HardhatUserConfig = { solidity: { @@ -17,9 +18,10 @@ const config: HardhatUserConfig = { }, networks: { arbitrumSepolia: { - url: "https://sepolia-rollup.arbitrum.io/rpc", + url: ARB_SEPOLIA_RPC, accounts: PRIVATE_KEY ? [PRIVATE_KEY] : [], chainId: 421614, + timeout: 120000, }, arbitrum: { url: "https://arb1.arbitrum.io/rpc", diff --git a/packages/arbitrum-contracts/scripts/deploy/check_state.ts b/packages/arbitrum-contracts/scripts/deploy/check_state.ts new file mode 100644 index 00000000..8ec87bd3 --- /dev/null +++ b/packages/arbitrum-contracts/scripts/deploy/check_state.ts @@ -0,0 +1,25 @@ +import { ethers } from "hardhat"; +import * as fs from "fs"; +import * as path from "path"; + +async function main() { + const [deployer] = await ethers.getSigners(); + const manifestPath = path.join(__dirname, "../../deployed_contracts_arbitrum.json"); + const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8")); + + const tokenFactory = await ethers.getContractAt("TokenFactory", manifest.contracts.TokenFactory); + const yieldVault = await ethers.getContractAt("YieldVault", manifest.contracts.YieldVault); + + const tfOwner = await tokenFactory.owner(); + const yvFactory = await yieldVault.factory(); + + console.log("Deployer: ", deployer.address); + console.log("TokenFactory.owner(): ", tfOwner); + console.log("YieldVault.factory(): ", yvFactory); + console.log("TF owner == deployer: ", tfOwner.toLowerCase() === deployer.address.toLowerCase()); + console.log("YV factory == TF: ", yvFactory.toLowerCase() === manifest.contracts.TokenFactory.toLowerCase()); +} + +main() + .then(() => process.exit(0)) + .catch((e) => { console.error(e); process.exit(1); }); diff --git a/packages/arbitrum-contracts/scripts/deploy/deploy_arbitrum.ts b/packages/arbitrum-contracts/scripts/deploy/deploy_arbitrum.ts index 02234ff0..99e24ac2 100644 --- a/packages/arbitrum-contracts/scripts/deploy/deploy_arbitrum.ts +++ b/packages/arbitrum-contracts/scripts/deploy/deploy_arbitrum.ts @@ -175,6 +175,10 @@ async function main() { // Step 7: Post-deployment configuration console.log("\n7ļøāƒ£ Configuring contracts..."); + // Set TokenFactory on YieldVault (required for YieldVault.registerAsset to work) + await yieldVault.setFactory(deployedContracts.TokenFactory); + console.log(" āœ… TokenFactory set as factory on YieldVault"); + // Set YieldVault on LeverageVault await leverageVault.setYieldVault(deployedContracts.YieldVault); console.log(" āœ… YieldVault address set on StARBLeverageVault"); @@ -187,6 +191,12 @@ async function main() { await seniorPool.setLeverageVault(deployedContracts.StARBLeverageVault); console.log(" āœ… StARBLeverageVault authorized on SeniorPool"); + // Register platform custody (deployer) in IdentityRegistry + // Required so ComplianceModule allows transfers FROM platformCustody in buyTokens + const identityRegistryInstance = await ethers.getContractAt("IdentityRegistry", deployedContracts.IdentityRegistry); + await identityRegistryInstance.registerIdentity(deployer.address); + console.log(" āœ… Platform custody (deployer) registered in IdentityRegistry"); + // Mint test stARB to deployer const testStARBAmount = ethers.parseEther("10000"); // 10K stARB await stARB.mint(deployer.address, testStARBAmount); diff --git a/packages/arbitrum-contracts/scripts/deploy/register_vault.ts b/packages/arbitrum-contracts/scripts/deploy/register_vault.ts new file mode 100644 index 00000000..d6eb9919 --- /dev/null +++ b/packages/arbitrum-contracts/scripts/deploy/register_vault.ts @@ -0,0 +1,55 @@ +import { ethers } from "hardhat"; +import * as fs from "fs"; + +/** + * Register StARBLeverageVault in IdentityRegistry + * + * The compliance module checks both sender and receiver of RWA token transfers. + * When the vault calls PrimaryMarket.buyTokens, the RWAToken is transferred + * from platformCustody → vault, so the vault must be KYC-verified. + */ +async function main() { + const [deployer] = await ethers.getSigners(); + + console.log("šŸ”‘ Deployer:", deployer.address); + + // Load deployed addresses + const manifest = JSON.parse( + fs.readFileSync("./deployed_contracts_arbitrum.json", "utf-8") + ); + + const identityRegistryAddress = manifest.contracts.IdentityRegistry; + const leverageVaultAddress = manifest.contracts.StARBLeverageVault; + + console.log("šŸ“‹ IdentityRegistry:", identityRegistryAddress); + console.log("šŸ“‹ StARBLeverageVault:", leverageVaultAddress); + + const identityRegistry = await ethers.getContractAt( + "IdentityRegistry", + identityRegistryAddress + ); + + // Check current status + const isAlreadyVerified = await identityRegistry.isVerified(leverageVaultAddress); + if (isAlreadyVerified) { + console.log("āœ… StARBLeverageVault is already registered in IdentityRegistry"); + return; + } + + // Register vault + console.log("ā³ Registering StARBLeverageVault in IdentityRegistry..."); + const tx = await identityRegistry.registerIdentity(leverageVaultAddress); + await tx.wait(); + console.log("āœ… Registered! tx:", tx.hash); + + // Verify + const nowVerified = await identityRegistry.isVerified(leverageVaultAddress); + console.log("šŸ” Verification status:", nowVerified); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/packages/arbitrum-contracts/scripts/deploy/set_factory.ts b/packages/arbitrum-contracts/scripts/deploy/set_factory.ts new file mode 100644 index 00000000..107077e4 --- /dev/null +++ b/packages/arbitrum-contracts/scripts/deploy/set_factory.ts @@ -0,0 +1,66 @@ +import { ethers } from "hardhat"; +import * as fs from "fs"; +import * as path from "path"; + +/** + * Post-deployment fix: Set TokenFactory as the authorized factory on YieldVault. + * + * This is a one-time call required because deploy_arbitrum.ts was missing this step. + * YieldVault.setFactory() can only be called once (when factory == address(0)). + */ +async function main() { + const [deployer] = await ethers.getSigners(); + console.log("šŸ”§ Setting TokenFactory on YieldVault"); + console.log("šŸ”‘ Caller:", deployer.address); + + const manifestPath = path.join(__dirname, "../../deployed_contracts_arbitrum.json"); + const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8")); + + const yieldVaultAddress = manifest.contracts.YieldVault; + const tokenFactoryAddress = manifest.contracts.TokenFactory; + + if (!yieldVaultAddress || !tokenFactoryAddress) { + throw new Error("YieldVault or TokenFactory address not found in deployed_contracts_arbitrum.json"); + } + + console.log("šŸ“„ YieldVault: ", yieldVaultAddress); + console.log("šŸ“„ TokenFactory: ", tokenFactoryAddress); + + const yieldVault = await ethers.getContractAt("YieldVault", yieldVaultAddress); + + // Check current factory value + const currentFactory = await yieldVault.factory(); + console.log("\nšŸ” Current factory address:", currentFactory); + + if (currentFactory !== ethers.ZeroAddress) { + if (currentFactory.toLowerCase() === tokenFactoryAddress.toLowerCase()) { + console.log("āœ… Factory already correctly set to TokenFactory. Nothing to do."); + } else { + console.error("āŒ Factory is already set to a DIFFERENT address:", currentFactory); + console.error(" Cannot override — YieldVault.setFactory() is a one-time call."); + } + return; + } + + console.log("\nāš™ļø Calling yieldVault.setFactory(tokenFactory)..."); + const tx = await yieldVault.setFactory(tokenFactoryAddress); + await tx.wait(); + console.log(" āœ… Transaction confirmed:", tx.hash); + + // Verify + const newFactory = await yieldVault.factory(); + console.log(" āœ… YieldVault.factory() is now:", newFactory); + + if (newFactory.toLowerCase() === tokenFactoryAddress.toLowerCase()) { + console.log("\nšŸŽ‰ Success! TokenFactory is now authorized to call YieldVault.registerAsset()"); + } else { + console.error("\nāŒ Verification failed — factory address mismatch"); + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/packages/backend/src/database/schemas/asset.schema.ts b/packages/backend/src/database/schemas/asset.schema.ts index ae42d415..547a432b 100644 --- a/packages/backend/src/database/schemas/asset.schema.ts +++ b/packages/backend/src/database/schemas/asset.schema.ts @@ -28,7 +28,7 @@ export class Asset implements IAssetEVM, IAssetStellar { @Prop({ required: true, enum: AssetType, type: String }) assetType!: AssetType; - @Prop({ type: String, enum: ['mantle', 'stellar'], default: 'mantle' }) + @Prop({ type: String, enum: ['mantle', 'stellar', 'arbitrum'], default: 'mantle' }) network!: string; @Prop({ type: Object }) diff --git a/packages/backend/src/database/schemas/bid.schema.ts b/packages/backend/src/database/schemas/bid.schema.ts index c61f57f3..509b3a8c 100644 --- a/packages/backend/src/database/schemas/bid.schema.ts +++ b/packages/backend/src/database/schemas/bid.schema.ts @@ -36,7 +36,7 @@ export class Bid { @Prop({ type: String }) settlementTxHash?: string; // Transaction hash for settlement - @Prop({ type: String, enum: ['mantle', 'stellar'], default: 'mantle', index: true }) + @Prop({ type: String, enum: ['mantle', 'stellar', 'arbitrum'], default: 'mantle', index: true }) network!: string; @Prop({ type: Date }) diff --git a/packages/backend/src/database/schemas/purchase.schema.ts b/packages/backend/src/database/schemas/purchase.schema.ts index 69d56217..55f5b406 100644 --- a/packages/backend/src/database/schemas/purchase.schema.ts +++ b/packages/backend/src/database/schemas/purchase.schema.ts @@ -47,7 +47,7 @@ export class Purchase { @Prop() soldP2PTradeId?: string; // Reference to P2PTrade when sold - @Prop({ type: String, enum: ['mantle', 'stellar'], default: 'mantle' }) + @Prop({ type: String, enum: ['mantle', 'stellar', 'arbitrum'], default: 'mantle' }) network!: string; @Prop({ type: Boolean }) diff --git a/packages/backend/src/main.ts b/packages/backend/src/main.ts index 2aa0b66c..57dede5e 100644 --- a/packages/backend/src/main.ts +++ b/packages/backend/src/main.ts @@ -19,7 +19,7 @@ async function bootstrap() { 'https://dev.toa-client-mantle.pages.dev', 'https://www.openassets.xyz', 'https://openassets.xyz', - '*' + 'http://10.155.192.113:5173', ], methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], allowedHeaders: [ diff --git a/packages/backend/src/modules/admin/implementations/mantle/mantle-admin-strategy.service.ts b/packages/backend/src/modules/admin/implementations/mantle/mantle-admin-strategy.service.ts index c580e297..4b7178d7 100644 --- a/packages/backend/src/modules/admin/implementations/mantle/mantle-admin-strategy.service.ts +++ b/packages/backend/src/modules/admin/implementations/mantle/mantle-admin-strategy.service.ts @@ -11,6 +11,7 @@ import { DeployTokenDto } from '../../../blockchain/dto/deploy-token.dto'; import { ListOnMarketplaceDto } from '../../../blockchain/dto/list-on-marketplace.dto'; import { NetworkRegistryService } from '../../../blockchain/services/network-registry.service'; import { ConfigService } from '@nestjs/config'; +import { privateKeyToAccount } from 'viem/accounts'; import { AssetStatus, NotificationType, @@ -261,9 +262,15 @@ export class MantleAdminStrategy implements IAdminDomainStrategy { this.logger.log(` Net Distribution: $${settlement.netDistribution.toFixed(2)} (${netDistributionUsdcWei} USDC wei)`); // Get admin wallet address for fee transfer - const adminWalletAddress = this.configService.get('blockchain.adminWallet'); + // Prefer explicit ADMIN_WALLET_ADDRESS config; fall back to deriving from private key + let adminWalletAddress = this.configService.get('blockchain.adminWallet'); if (!adminWalletAddress) { - throw new HttpException('Admin wallet address not configured', HttpStatus.INTERNAL_SERVER_ERROR); + const pk = this.configService.get('blockchain.adminPrivateKey'); + if (!pk) { + throw new HttpException('Admin wallet address not configured', HttpStatus.INTERNAL_SERVER_ERROR); + } + adminWalletAddress = privateKeyToAccount(pk as `0x${string}`).address; + this.logger.log(`[Mantle] Derived admin wallet address from private key: ${adminWalletAddress}`); } // Step 1: Transfer platform fee to admin wallet diff --git a/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts b/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts index 21312dea..6a1cc8c6 100644 --- a/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts +++ b/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts @@ -24,7 +24,7 @@ import { RegisterAssetDto } from '../../blockchain/dto/register-asset.dto'; import { AttestationService } from '../../compliance-engine/services/attestation.service'; import { AnnouncementService } from '../../announcements/services/announcement.service'; import { NotificationService } from '../../notifications/services/notification.service'; -import { detectNetworkType } from '../../auth/utils/wallet.util'; +import { getConfiguredNetworkType } from '../../auth/utils/wallet.util'; import { fromCanonical } from '../../blockchain/utils/numeric-conversion'; import { PAYMENT_ADAPTER, BLOCKCHAIN_ADAPTER } from '../../blockchain/blockchain.constants'; import { PaymentAdapter } from '../../blockchain/adapters/payment-adapter.interface'; @@ -105,8 +105,8 @@ export class AssetLifecycleService { const assetId = uuidv4(); this.logger.log(`Creating ${dto.assetType} asset ${assetId} for originator ${userWallet}`); - // Detect network type (for future adapter usage) - const network = detectNetworkType(userWallet); + // Get configured network type from environment + const network = getConfiguredNetworkType(); // All DTO values are now in canonical 4-decimal format // Parse them as floats for calculations diff --git a/packages/backend/src/modules/auth/utils/wallet.util.ts b/packages/backend/src/modules/auth/utils/wallet.util.ts index 7009a28b..641eeb6f 100644 --- a/packages/backend/src/modules/auth/utils/wallet.util.ts +++ b/packages/backend/src/modules/auth/utils/wallet.util.ts @@ -1,18 +1,22 @@ export enum NetworkType { MANTLE = 'mantle', STELLAR = 'stellar', + ARBITRUM = 'arbitrum', UNKNOWN = 'unknown', } /** * Detects the network type based on the wallet address format. + * NOTE: Cannot distinguish between EVM chains (Mantle, Arbitrum) by address alone. + * Use getConfiguredNetworkType() for accurate network detection in multi-EVM scenarios. */ export function detectNetworkType(address: string): NetworkType { if (!address) return NetworkType.UNKNOWN; // EVM address: starts with 0x, exactly 42 characters + // WARNING: This returns MANTLE but could be any EVM chain (Arbitrum, etc.) if (address.startsWith('0x') && address.length === 42) { - return NetworkType.MANTLE; + return NetworkType.MANTLE; // Generic EVM detection - use getConfiguredNetworkType() instead } // Stellar address: starts with G, exactly 56 characters @@ -36,7 +40,7 @@ export function detectNetworkType(address: string): NetworkType { export function normalizeAddress(address: string): string { const network = detectNetworkType(address); - if (network === NetworkType.MANTLE) { + if (network === NetworkType.MANTLE || network === NetworkType.ARBITRUM) { return address.toLowerCase(); } @@ -46,3 +50,12 @@ export function normalizeAddress(address: string): string { return address; } + +/** + * Returns the configured network type from environment/config. + * Use this instead of detectNetworkType() when you need the actual active network. + */ +export function getConfiguredNetworkType(): NetworkType { + const configured = process.env.NETWORK_TYPE as NetworkType; + return configured || NetworkType.MANTLE; +} diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts index 804f1da1..3fac3653 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts @@ -194,14 +194,22 @@ export class EvmBlockchainAdapter implements BlockchainAdapter { const abi = this.contractAdapter.getContractInterface('PrimaryMarketplace'); const listingTypeEnum = listingType === ListingType.STATIC ? 0 : 1; - const dummyAssetId = '0x' + '0'.repeat(64); + + // Look up the real assetId from the DB using the token address + const asset = await this.assetModel.findOne({ 'token.address': new RegExp(`^${tokenIdentifier}$`, 'i') }); + if (!asset) { + throw new Error(`Asset not found for token ${tokenIdentifier}`); + } + const assetIdBytes32 = ('0x' + asset.assetId.replace(/-/g, '').padEnd(64, '0')) as `0x${string}`; + + this.logger.log(`Creating listing for asset ${asset.assetId} (token ${tokenIdentifier})...`); const txId = await this.executeWithRetry(() => (wallet as any).writeContract({ address: address as Address, abi, functionName: 'createListing', args: [ - dummyAssetId, + assetIdBytes32, tokenIdentifier as Address, listingTypeEnum, fromCanonical(price.toString(), 6), // USDC Price (6 decimals) diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts index ff62b470..ad4354fb 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts @@ -41,6 +41,22 @@ export class EvmContractAdapter implements ContractAdapter { this.logger.error('Failed to load contracts', e); this.contracts = envContracts || {}; } + + // Normalize naming aliases: Arbitrum manifest uses 'PrimaryMarket', code uses 'PrimaryMarketplace' + if (this.contracts['PrimaryMarket'] && !this.contracts['PrimaryMarketplace']) { + this.contracts['PrimaryMarketplace'] = this.contracts['PrimaryMarket']; + } + if (this.contracts['PrimaryMarketplace'] && !this.contracts['PrimaryMarket']) { + this.contracts['PrimaryMarket'] = this.contracts['PrimaryMarketplace']; + } + // Arbitrum uses 'MockUSDC', code uses 'USDC' + if (this.contracts['MockUSDC'] && !this.contracts['USDC']) { + this.contracts['USDC'] = this.contracts['MockUSDC']; + } + // Arbitrum uses 'StARBLeverageVault', code may use 'LeverageVault' + if (this.contracts['StARBLeverageVault'] && !this.contracts['LeverageVault']) { + this.contracts['LeverageVault'] = this.contracts['StARBLeverageVault']; + } } private loadAbis() { @@ -64,6 +80,8 @@ export class EvmContractAdapter implements ContractAdapter { PrimaryMarket: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', RWAToken: 'core/RWAToken.sol/RWAToken.json', SecondaryMarket: 'marketplace/SecondaryMarket.sol/SecondaryMarket.json', + USDC: 'test/MockUSDC.sol/MockUSDC.json', + MockUSDC: 'test/MockUSDC.sol/MockUSDC.json', }; for (const [name, relPath] of Object.entries(mapping)) { diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-payment.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-payment.adapter.ts index 20e53c88..278717c3 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-payment.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-payment.adapter.ts @@ -38,7 +38,7 @@ export class EvmPaymentAdapter implements PaymentAdapter { ) {} private getUsdcContract(): { contract: ethers.Contract; wallet: ethers.Wallet; address: string } { - const platformPrivateKey = this.configService.get('PLATFORM_PRIVATE_KEY'); + const platformPrivateKey = this.configService.get('blockchain.platformPrivateKey'); const rpcUrl = this.configService.get('blockchain.rpcUrl'); if (!platformPrivateKey) { @@ -49,15 +49,26 @@ export class EvmPaymentAdapter implements PaymentAdapter { throw new Error('blockchain.rpcUrl not configured'); } - // Read deployed contracts for USDC address - const deployedContractsPath = path.join(process.cwd(), '../contracts/deployed_contracts.json'); - + // Read deployed contracts for USDC address — path depends on active network + const networkType = this.configService.get('network.networkType'); + const monorepoRoot = path.join(process.cwd(), '../..'); + + let deployedContractsPath: string; + if (networkType === 'arbitrum') { + deployedContractsPath = path.join(monorepoRoot, 'packages/arbitrum-contracts/deployed_contracts_arbitrum.json'); + } else { + deployedContractsPath = path.join(monorepoRoot, 'packages/contracts/deployed_contracts.json'); + } + if (!fs.existsSync(deployedContractsPath)) { throw new Error(`deployed_contracts.json not found at ${deployedContractsPath}`); } const deployedContracts = JSON.parse(fs.readFileSync(deployedContractsPath, 'utf-8')); - const usdcAddress = deployedContracts.contracts?.USDC; + // Support flat contracts object (Arbitrum) and nested networks structure (Mantle multi-network) + const contractsMap = deployedContracts.contracts ?? {}; + // Arbitrum uses 'MockUSDC', Mantle uses 'USDC' + const usdcAddress = contractsMap.USDC ?? contractsMap.MockUSDC; if (!usdcAddress) { throw new Error('USDC address not found in deployed_contracts.json'); diff --git a/packages/backend/src/modules/blockchain/services/blockchain.service.ts b/packages/backend/src/modules/blockchain/services/blockchain.service.ts index 6c542aa6..173cd479 100644 --- a/packages/backend/src/modules/blockchain/services/blockchain.service.ts +++ b/packages/backend/src/modules/blockchain/services/blockchain.service.ts @@ -1,7 +1,6 @@ import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { createPublicClient, http, Hash, Address, decodeEventLog, parseAbi } from 'viem'; -import { mantleSepolia } from '../../../config/mantle-chain'; +import { createPublicClient, http, Hash, Address, decodeEventLog, parseAbi, defineChain } from 'viem'; import { ContractLoaderService } from './contract-loader.service'; import { WalletService } from './wallet.service'; import { RegisterAssetDto } from '../dto/register-asset.dto'; @@ -9,6 +8,7 @@ import { DeployTokenDto } from '../dto/deploy-token.dto'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; +import { fromCanonical } from '../utils/numeric-conversion'; @Injectable() export class BlockchainService { @@ -21,9 +21,19 @@ export class BlockchainService { private walletService: WalletService, @InjectModel(Asset.name) private assetModel: Model, ) { + const rpcUrl = this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; + const chainId = this.configService.get('blockchain.chainId') || 5003; + const networkName = this.configService.get('network.networkName') || 'Mantle Sepolia'; + const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; + const chain = defineChain({ + id: chainId, + name: networkName, + nativeCurrency: { decimals: 18, name: nativeSymbol, symbol: nativeSymbol }, + rpcUrls: { default: { http: [rpcUrl] }, public: { http: [rpcUrl] } }, + }); this.publicClient = createPublicClient({ - chain: mantleSepolia, - transport: http(this.configService.get('blockchain.rpcUrl')), + chain, + transport: http(rpcUrl), }); } @@ -131,11 +141,9 @@ export class BlockchainService { let totalSupplyWei: bigint; if (dto.totalSupply) { - // Use provided value (already in wei format) - totalSupplyWei = BigInt(dto.totalSupply); - this.logger.log(`Using provided totalSupply: ${dto.totalSupply} wei`); + totalSupplyWei = fromCanonical(dto.totalSupply, 18); + this.logger.log(`Using provided totalSupply: ${dto.totalSupply} → ${totalSupplyWei} wei`); } else { - // Get from asset's tokenParams (already stored in wei format during upload) const asset = await this.assetModel.findOne({ assetId: dto.assetId }); if (!asset) { throw new Error(`Asset ${dto.assetId} not found`); @@ -145,8 +153,8 @@ export class BlockchainService { throw new Error(`Asset ${dto.assetId} missing tokenParams.totalSupply`); } - totalSupplyWei = BigInt(asset.tokenParams.totalSupply); - this.logger.log(`Using asset's totalSupply: ${asset.tokenParams.totalSupply} wei (${Number(totalSupplyWei) / 1e18} tokens)`); + totalSupplyWei = fromCanonical(asset.tokenParams.totalSupply, 18); + this.logger.log(`Using asset's totalSupply: ${asset.tokenParams.totalSupply} → ${totalSupplyWei} wei`); } const issuer = dto.issuer || wallet.account.address; // Default to admin wallet @@ -326,9 +334,8 @@ export class BlockchainService { const assetIdBytes32 = ('0x' + asset.assetId.replace(/-/g, '').padEnd(64, '0')) as Hash; this.logger.log(`AssetId bytes32: ${assetIdBytes32}`); - // Get totalSupply (already in wei from database - 18 decimals) const totalSupplyRaw = asset.tokenParams?.totalSupply || asset.token?.supply || '100000000000000000000'; - const totalSupplyWei = BigInt(totalSupplyRaw); // Already in wei, no multiplication needed + const totalSupplyWei = fromCanonical(totalSupplyRaw, 18); this.logger.log(`Total supply: raw=${totalSupplyRaw}, wei=${totalSupplyWei.toString()}`); // Determine listing type enum (0 = STATIC, 1 = AUCTION) @@ -359,11 +366,11 @@ export class BlockchainService { assetIdBytes32, tokenAddress as Address, listingTypeEnum, - BigInt(price), // priceOrReserve - BigInt(minPrice || '0'), // minPrice (0 for STATIC, actual min for AUCTION) - BigInt(duration || '0'), // duration (0 for STATIC is fine, or ignored) - totalSupplyWei, // totalSupply - BigInt(minInvestment), // minInvestment + fromCanonical(price, 6), // priceOrReserve in USDC wei (6 decimals) + fromCanonical(minPrice || '0', 6), // minPrice in USDC wei (0 for STATIC) + BigInt(duration || '0'), // duration in seconds (integer) + totalSupplyWei, // totalSupply in token wei (18 decimals) + fromCanonical(minInvestment, 6), // minInvestment in USDC wei (6 decimals) ], }), 'createListing write'); diff --git a/packages/backend/src/modules/blockchain/services/contract-loader.service.ts b/packages/backend/src/modules/blockchain/services/contract-loader.service.ts index 85c68e6b..3933312e 100644 --- a/packages/backend/src/modules/blockchain/services/contract-loader.service.ts +++ b/packages/backend/src/modules/blockchain/services/contract-loader.service.ts @@ -97,6 +97,23 @@ export class ContractLoaderService implements OnModuleInit { this.logger.error('Failed to load deployed_contracts.json', e); this.contracts = envContracts || {}; } + + // Normalize naming aliases so backend lookups work regardless of manifest key conventions: + // Arbitrum uses 'PrimaryMarket', Mantle uses 'PrimaryMarketplace' — treat as identical + if (this.contracts['PrimaryMarket'] && !this.contracts['PrimaryMarketplace']) { + this.contracts['PrimaryMarketplace'] = this.contracts['PrimaryMarket']; + } + if (this.contracts['PrimaryMarketplace'] && !this.contracts['PrimaryMarket']) { + this.contracts['PrimaryMarket'] = this.contracts['PrimaryMarketplace']; + } + // Arbitrum uses 'MockUSDC', shared backend code uses 'USDC' + if (this.contracts['MockUSDC'] && !this.contracts['USDC']) { + this.contracts['USDC'] = this.contracts['MockUSDC']; + } + // Arbitrum uses 'StARBLeverageVault', backend may reference 'LeverageVault' + if (this.contracts['StARBLeverageVault'] && !this.contracts['LeverageVault']) { + this.contracts['LeverageVault'] = this.contracts['StARBLeverageVault']; + } } private loadAbis() { diff --git a/packages/backend/src/modules/blockchain/services/wallet.service.ts b/packages/backend/src/modules/blockchain/services/wallet.service.ts index 28379c53..696801d3 100644 --- a/packages/backend/src/modules/blockchain/services/wallet.service.ts +++ b/packages/backend/src/modules/blockchain/services/wallet.service.ts @@ -1,23 +1,35 @@ import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { createWalletClient, http } from 'viem'; +import { createWalletClient, http, defineChain } from 'viem'; import { privateKeyToAccount } from 'viem/accounts'; -import { mantleSepolia } from '../../../config/mantle-chain'; @Injectable() export class WalletService { private readonly logger = new Logger(WalletService.name); - + constructor(private configService: ConfigService) {} + private getChain() { + const rpcUrl = this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; + const chainId = this.configService.get('blockchain.chainId') || 5003; + const networkName = this.configService.get('network.networkName') || 'Mantle Sepolia'; + const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; + return defineChain({ + id: chainId, + name: networkName, + nativeCurrency: { decimals: 18, name: nativeSymbol, symbol: nativeSymbol }, + rpcUrls: { default: { http: [rpcUrl] }, public: { http: [rpcUrl] } }, + }); + } + getAdminWallet() { const pk = this.configService.get('blockchain.adminPrivateKey'); if (!pk) throw new Error('ADMIN_PRIVATE_KEY not configured'); - + const account = privateKeyToAccount(pk as `0x${string}`); return createWalletClient({ account, - chain: mantleSepolia, + chain: this.getChain(), transport: http(this.configService.get('blockchain.rpcUrl')) }); } @@ -29,7 +41,7 @@ export class WalletService { const account = privateKeyToAccount(pk as `0x${string}`); return createWalletClient({ account, - chain: mantleSepolia, + chain: this.getChain(), transport: http(this.configService.get('blockchain.rpcUrl')) }); } diff --git a/packages/backend/src/modules/leverage/controllers/leverage-admin.controller.ts b/packages/backend/src/modules/leverage/controllers/leverage-admin.controller.ts index 9305ae24..81aa6b55 100644 --- a/packages/backend/src/modules/leverage/controllers/leverage-admin.controller.ts +++ b/packages/backend/src/modules/leverage/controllers/leverage-admin.controller.ts @@ -7,10 +7,11 @@ import { HttpStatus, Logger, Param, + Inject, } from '@nestjs/common'; import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard'; import { AdminRoleGuard } from '../../admin/guards/admin-role.guard'; -import { MethPriceService } from '../../blockchain/services/meth-price.service'; +import { PRICE_SERVICE } from '../leverage.constants'; import { LeverageBlockchainService } from '../services/leverage-blockchain.service'; import { LeveragePositionService } from '../services/leverage-position.service'; @@ -20,7 +21,11 @@ export class LeverageAdminController { private readonly logger = new Logger(LeverageAdminController.name); constructor( - private methPriceService: MethPriceService, + @Inject(PRICE_SERVICE) private priceService: { + setTestPrice: (price: number) => void; + getCurrentPrice: () => Promise; + resetTestPrice: () => void; + }, private leverageBlockchainService: LeverageBlockchainService, private leveragePositionService: LeveragePositionService, ) {} @@ -28,9 +33,9 @@ export class LeverageAdminController { /** * Manually update mETH price (for testing liquidation scenarios) */ - @Post('update-meth-price') + @Post('update-collateral-price') @HttpCode(HttpStatus.OK) - async updateMethPrice(@Body('price') price: string) { + async updateCollateralPrice(@Body('price') price: string) { if (!price) { throw new Error('Price is required'); } @@ -40,15 +45,15 @@ export class LeverageAdminController { throw new Error('Invalid price value'); } - this.logger.warn(`āš ļø Manual mETH price update requested: $${price}`); + this.logger.warn(`āš ļø Manual collateral price update requested: $${price}`); // Convert to 6 decimals (USDC format) const priceInUSDC = Math.floor(priceNumber * 1e6); - // Update price in service - this.methPriceService.setTestPrice(priceInUSDC); + // Update price in service (works for both mETH and stARB) + this.priceService.setTestPrice(priceInUSDC); - this.logger.log(`āœ… mETH price manually set to: $${price} (${priceInUSDC} USDC)`); + this.logger.log(`āœ… Collateral price manually set to: $${price} (${priceInUSDC} USDC)`); this.logger.warn('āš ļø This price will be used for liquidations and health checks'); this.logger.warn('āš ļø Remember: The DEX still uses its own price for actual swaps!'); @@ -56,19 +61,19 @@ export class LeverageAdminController { success: true, price: price, priceInUSDC: priceInUSDC.toString(), - message: 'mETH price updated successfully', + message: 'Collateral price updated successfully', warning: 'DEX may use different price for actual swaps', }; } /** - * Get current mETH price + * Get current collateral price (mETH or stARB depending on network) */ - @Post('get-meth-price') + @Post('get-collateral-price') @HttpCode(HttpStatus.OK) - async getMethPrice() { - const currentPrice = this.methPriceService.getCurrentPrice(); - const priceInUSD = currentPrice / 1e6; + async getCollateralPrice() { + const currentPrice = await this.priceService.getCurrentPrice(); + const priceInUSD = Number(currentPrice) / 1e6; return { success: true, @@ -79,20 +84,20 @@ export class LeverageAdminController { } /** - * Reset mETH price to automatic updates + * Reset collateral price to automatic updates */ - @Post('reset-meth-price') + @Post('reset-collateral-price') @HttpCode(HttpStatus.OK) - async resetMethPrice() { - this.logger.warn('āš ļø Resetting mETH price to automatic CSV updates'); + async resetCollateralPrice() { + this.logger.warn('āš ļø Resetting collateral price to automatic CSV updates'); - this.methPriceService.resetTestPrice(); + this.priceService.resetTestPrice(); - this.logger.log('āœ… mETH price reset to automatic mode'); + this.logger.log('āœ… Collateral price reset to automatic mode'); return { success: true, - message: 'mETH price reset to automatic updates', + message: 'Collateral price reset to automatic updates', }; } diff --git a/packages/backend/src/modules/leverage/controllers/leverage.controller.ts b/packages/backend/src/modules/leverage/controllers/leverage.controller.ts index 6518725c..087f6c78 100644 --- a/packages/backend/src/modules/leverage/controllers/leverage.controller.ts +++ b/packages/backend/src/modules/leverage/controllers/leverage.controller.ts @@ -1,12 +1,13 @@ -import { Controller, Post, Get, Body, Param, UseGuards, Request, Logger, Inject } from '@nestjs/common'; +import { Controller, Post, Get, Body, Param, UseGuards, Request, Logger, Inject, Query } from '@nestjs/common'; import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard'; import { LeveragePositionService } from '../services/leverage-position.service'; import { LeverageBlockchainService } from '../services/leverage-blockchain.service'; -import { InitiateLeveragePurchaseDto, GetSwapQuoteDto, UnwindPositionDto } from '../dto/leverage.dto'; +import { InitiateLeveragePurchaseDto } from '../dto/leverage.dto'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; -import { DEX_SERVICE } from '../leverage.constants'; +import { DEX_SERVICE, PRICE_SERVICE } from '../leverage.constants'; +import { fromCanonical } from '../../blockchain/utils/numeric-conversion'; @Controller('leverage') @UseGuards(JwtAuthGuard) @@ -17,6 +18,7 @@ export class LeverageController { constructor( private readonly positionService: LeveragePositionService, @Inject(DEX_SERVICE) private readonly dexService: { calculateMETHValueUSD: (amount: bigint) => Promise; getMETHPrice: () => Promise; getQuote: (amount: bigint) => Promise }, + @Inject(PRICE_SERVICE) private readonly priceService: { getCurrentPriceUSD: () => number; getPriceChartData: (days?: number) => { date: string; price: number }[]; getStats: () => { current: number; min: number; max: number; avg: number; changePercent: number } }, private readonly blockchainService: LeverageBlockchainService, @InjectModel(Asset.name) private assetModel: Model, ) { } @@ -28,7 +30,7 @@ export class LeverageController { @Post('initiate') async initiateLeveragePurchase(@Request() req: any, @Body() dto: InitiateLeveragePurchaseDto) { const userAddress = req.user.walletAddress; - const lockKey = `${userAddress}:${dto.assetId}:${dto.tokenAmount}:${dto.pricePerToken}:${dto.mETHCollateral}`; + const lockKey = `${userAddress}:${dto.assetId}:${dto.tokenAmount}:${dto.pricePerToken}:${dto.collateral}`; if (this.pendingPurchases.has(lockKey)) { this.logger.warn(`Duplicate leverage initiate blocked for ${lockKey}`); @@ -60,7 +62,7 @@ export class LeverageController { this.logger.log(`Token Amount: ${dto.tokenAmount}`); this.logger.log(`Price Per Token (request): ${dto.pricePerToken}`); - this.logger.log(`mETH Collateral: ${dto.mETHCollateral}`); + this.logger.log(`mETH Collateral: ${dto.collateral}`); this.logger.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); // Get actual on-chain listing price (single source of truth) @@ -70,37 +72,44 @@ export class LeverageController { this.logger.log(`šŸ’° On-chain price per token: ${actualPricePerToken} USDC wei (${Number(actualPricePerToken) / 1e6} USDC)`); - if (dto.pricePerToken && BigInt(dto.pricePerToken) !== actualPricePerToken) { + if (dto.pricePerToken && fromCanonical(dto.pricePerToken, 6) !== actualPricePerToken) { this.logger.warn(`āš ļø Price mismatch! Request: ${dto.pricePerToken}, On-chain: ${actualPricePerToken}. Using on-chain value.`); } // Calculate total USDC needed using ACTUAL on-chain price - const tokenAmountBigInt = BigInt(dto.tokenAmount); + // tokenAmount is human-readable (e.g. "100.0000"), convert to wei (18 decimals) + const tokenAmountBigInt = fromCanonical(dto.tokenAmount, 18); const pricePerTokenBigInt = actualPricePerToken; const totalUSDCNeeded = (tokenAmountBigInt * pricePerTokenBigInt) / BigInt(10 ** 18); this.logger.log(`šŸ’° Total USDC needed: ${totalUSDCNeeded.toString()} (${Number(totalUSDCNeeded) / 1e6} USDC)`); - // Validate mETH collateral meets 150% LTV requirement - const mETHCollateralBigInt = BigInt(dto.mETHCollateral); - this.logger.log(`šŸ” Calculating mETH collateral value...`); - const mETHValueUSD = await this.dexService.calculateMETHValueUSD(mETHCollateralBigInt); - const requiredCollateral = (totalUSDCNeeded * BigInt(150)) / BigInt(100); - - this.logger.log(`šŸ“ˆ mETH Collateral Value: ${mETHValueUSD.toString()} USDC wei (${Number(mETHValueUSD) / 1e6} USDC)`); - this.logger.log(`šŸ“Š Required Collateral (150% LTV): ${requiredCollateral.toString()} USDC wei (${Number(requiredCollateral) / 1e6} USDC)`); - - if (mETHValueUSD < requiredCollateral) { - this.logger.error(`āŒ Insufficient collateral!`); - this.logger.error(` Required: ${Number(requiredCollateral) / 1e6} USDC worth`); - this.logger.error(` Provided: ${Number(mETHValueUSD) / 1e6} USDC worth`); - throw new Error( - `Insufficient collateral. Required: ${requiredCollateral.toString()} USDC worth of mETH, ` + - `Provided: ${mETHValueUSD.toString()} USDC worth`, + // Collateral: if user provides 0, auto-calculate minimum 150% LTV from position size. + // On Arbitrum the platform wallet provides stARB from its reserves, not the user. + const requiredCollateralUSDC = (totalUSDCNeeded * BigInt(150)) / BigInt(100); + let mETHCollateralBigInt = fromCanonical(dto.collateral, 18); + + if (mETHCollateralBigInt === 0n) { + // Convert required USDC (6 decimals) to stARB (18 decimals) using current price. + // Use ceiling division so the contract's own LTV check (stARB * price / 1e30 >= required) + // never fails due to rounding: ceil(a/b) = (a + b - 1) / b + // Also use 10n**18n instead of BigInt(1e18) — 1e18 > MAX_SAFE_INTEGER so BigInt() is unsafe. + const collateralPriceUSDC = BigInt(Math.floor(this.priceService.getCurrentPriceUSD() * 1e6)); + const numerator = requiredCollateralUSDC * (10n ** 18n); + mETHCollateralBigInt = (numerator + collateralPriceUSDC - 1n) / collateralPriceUSDC; // ceiling + this.logger.log( + `ā„¹ļø No collateral provided — auto-calculated ${Number(mETHCollateralBigInt) / 1e18} stARB ` + + `($${Number(requiredCollateralUSDC) / 1e6} @ $${Number(collateralPriceUSDC) / 1e6}/stARB)`, ); } - this.logger.log(`āœ… Collateral validation passed`); + this.logger.log(`šŸ” Calculating collateral value...`); + const mETHValueUSD = await this.dexService.calculateMETHValueUSD(mETHCollateralBigInt); + + this.logger.log(`šŸ“ˆ Collateral Value: ${mETHValueUSD.toString()} USDC wei (${Number(mETHValueUSD) / 1e6} USDC)`); + this.logger.log(`šŸ“Š Required Collateral (150% LTV): ${requiredCollateralUSDC.toString()} USDC wei (${Number(requiredCollateralUSDC) / 1e6} USDC)`); + + this.logger.log(`āœ… Collateral set`); // Get current mETH price for contract (6 decimals USDC wei format) const mETHPriceUSD = await this.dexService.getMETHPrice(); @@ -143,7 +152,7 @@ export class LeverageController { assetId: dto.assetId, rwaTokenAddress: rwaTokenAddress, // Use DB value rwaTokenAmount: dto.tokenAmount, - mETHCollateral: dto.mETHCollateral, + mETHCollateral: dto.collateral, usdcBorrowed: totalUSDCNeeded.toString(), initialLTV, currentHealthFactor: healthFactor, @@ -312,6 +321,26 @@ export class LeverageController { }; } + /** + * GET /leverage/stARB-price + * Get current stARB price, chart data, and stats + */ + @Get('stARB-price') + async getStARBPrice(@Query('days') days?: string) { + const chartDays = days ? parseInt(days, 10) : 30; + const priceUSD = this.priceService.getCurrentPriceUSD(); + const chartData = this.priceService.getPriceChartData(chartDays); + const stats = this.priceService.getStats(); + + return { + price: Math.floor(priceUSD * 1e6).toString(), + priceUSD, + priceFormatted: `$${priceUSD.toFixed(4)}`, + chartData, + stats, + }; + } + /** * POST /leverage/unwind/:id * Manually unwind/close a position (future feature) diff --git a/packages/backend/src/modules/leverage/dto/leverage.dto.ts b/packages/backend/src/modules/leverage/dto/leverage.dto.ts index 926f0ab0..94d12cc9 100644 --- a/packages/backend/src/modules/leverage/dto/leverage.dto.ts +++ b/packages/backend/src/modules/leverage/dto/leverage.dto.ts @@ -18,8 +18,17 @@ export class InitiateLeveragePurchaseDto { pricePerToken!: string; // Price per token in USDC (6 decimals) @IsString() - @IsNotEmpty() - mETHCollateral!: string; // mETH collateral amount (18 decimals) + @IsOptional() + mETHCollateral?: string; // mETH collateral amount (18 decimals) — Mantle + + @IsString() + @IsOptional() + stARBCollateral?: string; // stARB collateral amount (18 decimals) — Arbitrum + + /** Normalised accessor — use this in the controller regardless of network */ + get collateral(): string { + return this.mETHCollateral || this.stARBCollateral || '0'; + } } export class GetSwapQuoteDto { diff --git a/packages/backend/src/modules/registry/services/module-registry.service.ts b/packages/backend/src/modules/registry/services/module-registry.service.ts index 4c0f73c9..ccb8268e 100644 --- a/packages/backend/src/modules/registry/services/module-registry.service.ts +++ b/packages/backend/src/modules/registry/services/module-registry.service.ts @@ -34,14 +34,15 @@ export class ModuleRegistryService implements OnModuleInit { private async resolveServices() { try { // Resolve Asset Origination Service - const assetToken = this.networkType === NetworkType.MANTLE + const isEvm = this.networkType === NetworkType.MANTLE || this.networkType === NetworkType.ARBITRUM; + const assetToken = isEvm ? MANTLE_ASSET_ORIGINATION_TOKEN : STELLAR_ASSET_ORIGINATION_TOKEN; await this.resolveService(ASSET_ORIGINATION_SERVICE, assetToken); // Resolve Admin Domain Strategy - const adminToken = this.networkType === NetworkType.MANTLE + const adminToken = isEvm ? MANTLE_ADMIN_STRATEGY_TOKEN : STELLAR_ADMIN_STRATEGY_TOKEN; diff --git a/packages/backend/src/modules/secondary-market/services/token-balance.service.ts b/packages/backend/src/modules/secondary-market/services/token-balance.service.ts index b249588c..59aa1c6c 100644 --- a/packages/backend/src/modules/secondary-market/services/token-balance.service.ts +++ b/packages/backend/src/modules/secondary-market/services/token-balance.service.ts @@ -9,6 +9,7 @@ import { P2POrder, P2POrderDocument } from '../../../database/schemas/p2p-order. import { LeveragePosition } from '../../../database/schemas/leverage-position.schema'; import { ContractLoaderService } from '../../blockchain/services/contract-loader.service'; import { OrderStatus, WalletAddress } from '@openassets/types'; +import { fromCanonical } from '../../blockchain/utils/numeric-conversion'; export interface TokenBalanceInfo { assetId: string; @@ -146,7 +147,7 @@ export class TokenBalanceService { }); for (const position of leveragePositions) { - inLeverageVault += BigInt(position.rwaTokenAmount); + inLeverageVault += fromCanonical(position.rwaTokenAmount, 18); } this.logger.debug(`[Balance Service] Found ${leveragePositions.length} active leverage positions, total: ${(Number(inLeverageVault) / 1e18).toFixed(4)} tokens`); } catch (error: any) { diff --git a/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts b/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts index ec7ba88a..72ef8940 100644 --- a/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts +++ b/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts @@ -717,9 +717,15 @@ export class SolvencyBlockchainService { }>; }> { try { - const oaidAddress = this.contractLoader.getContractAddress('OAID'); + let oaidAddress: string; + try { + oaidAddress = this.contractLoader.getContractAddress('OAID'); + } catch { + this.logger.warn('OAID contract not configured on this network — returning empty credit lines'); + return { totalCreditLimit: '0', totalCreditUsed: '0', totalAvailableCredit: '0', creditLines: [] }; + } if (!oaidAddress) { - throw new Error('OAID contract address not found'); + return { totalCreditLimit: '0', totalCreditUsed: '0', totalAvailableCredit: '0', creditLines: [] }; } const oaidAbi = this.contractLoader.getContractAbi('OAID'); diff --git a/packages/backend/src/modules/user-portfolio/services/user-portfolio.service.ts b/packages/backend/src/modules/user-portfolio/services/user-portfolio.service.ts index a10079df..acbe8243 100644 --- a/packages/backend/src/modules/user-portfolio/services/user-portfolio.service.ts +++ b/packages/backend/src/modules/user-portfolio/services/user-portfolio.service.ts @@ -215,7 +215,7 @@ export class UserPortfolioService { const position = await this.leveragePositionModel.findById(holding.leveragePositionId); if (!position) return {}; - const mETHCollateralCanonical = toCanonical(position.mETHCollateral, 18).value; + const mETHCollateralCanonical = position.mETHCollateral; // already canonical const usdcBorrowedCanonical = toCanonical(position.usdcBorrowed, 6).value; const totalInterestPaidCanonical = toCanonical(position.totalInterestPaid, 6).value; @@ -562,8 +562,8 @@ export class UserPortfolioService { network, holdingType: HoldingType.LEVERAGE, status: pos.status === 'ACTIVE' ? HoldingStatus.ACTIVE : HoldingStatus.SETTLED, - tokenBalance: toCanonical(pos.rwaTokenAmount, 18).value, - totalInvested: '0.0000', + tokenBalance: pos.rwaTokenAmount, + totalInvested: '0.0000', leveragePositionId: pos._id, firstEntryAt: pos.createdAt, lastActivityAt: pos.updatedAt || pos.createdAt, @@ -703,7 +703,7 @@ export class UserPortfolioService { network, holdingType: HoldingType.LEVERAGE, status: HoldingStatus.ACTIVE, - tokenBalance: toCanonical(position.rwaTokenAmount, 18).value, + tokenBalance: position.rwaTokenAmount, totalInvested: '0.0000', leveragePositionId: position._id, firstEntryAt: position.createdAt || new Date(), @@ -713,7 +713,7 @@ export class UserPortfolioService { } else { holding.status = position.status === 'ACTIVE' ? HoldingStatus.ACTIVE : (position.status === 'SETTLED' ? HoldingStatus.SETTLED : HoldingStatus.LIQUIDATED); - holding.tokenBalance = toCanonical(position.rwaTokenAmount, 18).value; + holding.tokenBalance = position.rwaTokenAmount; holding.lastActivityAt = new Date(); } From 835e840b5d643cb6647a01a3e2ac89ad1ec65d50 Mon Sep 17 00:00:00 2001 From: ryuk Date: Sun, 22 Feb 2026 13:29:08 +0530 Subject: [PATCH 04/21] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 14f207c7..d546aa88 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mantle-rwa-platform", "private": true, - "packageManager": "yarn@1.22.22", + "packageManager": "yarn@4.6.0", "type": "module", "engines": { "node": "22.x" From b4d69c4b8c58e8403b1caca65e7d888ab9b08cf1 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Sun, 22 Feb 2026 13:44:42 +0530 Subject: [PATCH 05/21] "yarn lock" --- .gitignore | 1 - yarn.lock | 9809 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 9809 insertions(+), 1 deletion(-) create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 868c65a1..5382f390 100644 --- a/.gitignore +++ b/.gitignore @@ -32,7 +32,6 @@ yarn-error.log* .vscode package-lock.json -yarn.lock .yarn/ diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..0c8bb046 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,9809 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@^1.11.0": + version "1.11.1" + resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz" + integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@angular-devkit/core@17.3.11": + version "17.3.11" + resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz" + integrity sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ== + dependencies: + ajv "8.12.0" + ajv-formats "2.1.1" + jsonc-parser "3.2.1" + picomatch "4.0.1" + rxjs "7.8.1" + source-map "0.7.4" + +"@angular-devkit/schematics-cli@17.3.11": + version "17.3.11" + resolved "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-17.3.11.tgz" + integrity sha512-kcOMqp+PHAKkqRad7Zd7PbpqJ0LqLaNZdY1+k66lLWmkEBozgq8v4ASn/puPWf9Bo0HpCiK+EzLf0VHE8Z/y6Q== + dependencies: + "@angular-devkit/core" "17.3.11" + "@angular-devkit/schematics" "17.3.11" + ansi-colors "4.1.3" + inquirer "9.2.15" + symbol-observable "4.0.0" + yargs-parser "21.1.1" + +"@angular-devkit/schematics@17.3.11": + version "17.3.11" + resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.11.tgz" + integrity sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ== + dependencies: + "@angular-devkit/core" "17.3.11" + jsonc-parser "3.2.1" + magic-string "0.30.8" + ora "5.4.1" + rxjs "7.8.1" + +"@arbitrum/contracts@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/arbitrum-contracts": + version "1.0.0" + resolved "file:packages/arbitrum-contracts" + dependencies: + "@openzeppelin/contracts" "5.4.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.27.2": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz" + integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0 || ^8.0.0-0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-beta.1", "@babel/core@^7.23.9", "@babel/core@^7.27.4", "@babel/core@>=7.0.0-beta.0 <8": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz" + integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.5" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.28.3" + "@babel/helpers" "^7.28.4" + "@babel/parser" "^7.28.5" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.27.5", "@babel/generator@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz" + integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== + dependencies: + "@babel/parser" "^7.28.5" + "@babel/types" "^7.28.5" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.28.3": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz" + integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.28.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helpers@^7.28.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz" + integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" + +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== + dependencies: + "@babel/types" "^7.28.5" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz" + integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.5" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.5" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.5" + debug "^4.3.1" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@borewit/text-codec@^0.1.0": + version "0.1.1" + resolved "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz" + integrity sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA== + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.9.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/eslint-utils@^4.8.0": + version "4.9.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/eslint-utils@^4.9.1": + version "4.9.1" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz" + integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.12.2", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.12.2" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== + +"@eslint/config-array@^0.21.1": + version "0.21.1" + resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz" + integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== + dependencies: + "@eslint/object-schema" "^2.1.7" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/config-helpers@^0.4.2": + version "0.4.2" + resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz" + integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== + dependencies: + "@eslint/core" "^0.17.0" + +"@eslint/core@^0.17.0": + version "0.17.0" + resolved "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz" + integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/eslintrc@^3.3.1": + version "3.3.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz" + integrity sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.1" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@^9.39.2", "@eslint/js@9.39.2": + version "9.39.2" + resolved "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz" + integrity sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA== + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@eslint/object-schema@^2.1.7": + version "2.1.7" + resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz" + integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== + +"@eslint/plugin-kit@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz" + integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== + dependencies: + "@eslint/core" "^0.17.0" + levn "^0.4.1" + +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/rlp@^5.0.2": + version "5.0.2" + resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz" + integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== + +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + +"@ethereumjs/util@^9.1.0": + version "9.1.0" + resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz" + integrity sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog== + dependencies: + "@ethereumjs/rlp" "^5.0.2" + ethereum-cryptography "^2.2.1" + +"@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.8.0", "@ethersproject/abi@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz" + integrity sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q== + dependencies: + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/abstract-provider@^5.8.0", "@ethersproject/abstract-provider@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz" + integrity sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/networks" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/web" "^5.8.0" + +"@ethersproject/abstract-signer@^5.8.0", "@ethersproject/abstract-signer@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz" + integrity sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + +"@ethersproject/address@^5.0.2", "@ethersproject/address@^5.8.0", "@ethersproject/address@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz" + integrity sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + +"@ethersproject/base64@^5.8.0", "@ethersproject/base64@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz" + integrity sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ== + dependencies: + "@ethersproject/bytes" "^5.8.0" + +"@ethersproject/basex@^5.8.0", "@ethersproject/basex@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz" + integrity sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + +"@ethersproject/bignumber@^5.8.0", "@ethersproject/bignumber@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz" + integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.8.0", "@ethersproject/bytes@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz" + integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/constants@^5.8.0", "@ethersproject/constants@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz" + integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + +"@ethersproject/contracts@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz" + integrity sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ== + dependencies: + "@ethersproject/abi" "^5.8.0" + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + +"@ethersproject/hash@^5.8.0", "@ethersproject/hash@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz" + integrity sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/base64" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/hdnode@^5.8.0", "@ethersproject/hdnode@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz" + integrity sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/basex" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/pbkdf2" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/wordlists" "^5.8.0" + +"@ethersproject/json-wallets@^5.8.0", "@ethersproject/json-wallets@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz" + integrity sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hdnode" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/pbkdf2" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@^5.8.0", "@ethersproject/keccak256@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz" + integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng== + dependencies: + "@ethersproject/bytes" "^5.8.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.8.0", "@ethersproject/logger@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz" + integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== + +"@ethersproject/networks@^5.8.0", "@ethersproject/networks@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz" + integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/pbkdf2@^5.8.0", "@ethersproject/pbkdf2@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz" + integrity sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + +"@ethersproject/properties@^5.8.0", "@ethersproject/properties@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz" + integrity sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/providers@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz" + integrity sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/base64" "^5.8.0" + "@ethersproject/basex" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/networks" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/web" "^5.8.0" + bech32 "1.1.4" + ws "8.18.0" + +"@ethersproject/random@^5.8.0", "@ethersproject/random@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz" + integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/rlp@^5.8.0", "@ethersproject/rlp@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz" + integrity sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/sha2@^5.8.0", "@ethersproject/sha2@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz" + integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@^5.8.0", "@ethersproject/signing-key@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz" + integrity sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + bn.js "^5.2.1" + elliptic "6.6.1" + hash.js "1.1.7" + +"@ethersproject/solidity@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz" + integrity sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/strings@^5.8.0", "@ethersproject/strings@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz" + integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/transactions@^5.8.0", "@ethersproject/transactions@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz" + integrity sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg== + dependencies: + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + +"@ethersproject/units@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz" + integrity sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/wallet@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz" + integrity sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/hdnode" "^5.8.0" + "@ethersproject/json-wallets" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/wordlists" "^5.8.0" + +"@ethersproject/web@^5.8.0", "@ethersproject/web@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz" + integrity sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw== + dependencies: + "@ethersproject/base64" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/wordlists@^5.8.0", "@ethersproject/wordlists@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz" + integrity sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.7" + resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz" + integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.4.0" + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== + +"@ioredis/commands@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz" + integrity sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz" + integrity sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + jest-message-util "30.2.0" + jest-util "30.2.0" + slash "^3.0.0" + +"@jest/core@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz" + integrity sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/pattern" "30.0.1" + "@jest/reporters" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + ci-info "^4.2.0" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-changed-files "30.2.0" + jest-config "30.2.0" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-resolve-dependencies "30.2.0" + jest-runner "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + jest-watcher "30.2.0" + micromatch "^4.0.8" + pretty-format "30.2.0" + slash "^3.0.0" + +"@jest/diff-sequences@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== + +"@jest/environment@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz" + integrity sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g== + dependencies: + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + jest-mock "30.2.0" + +"@jest/expect-utils@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz" + integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA== + dependencies: + "@jest/get-type" "30.1.0" + +"@jest/expect@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz" + integrity sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA== + dependencies: + expect "30.2.0" + jest-snapshot "30.2.0" + +"@jest/fake-timers@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz" + integrity sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw== + dependencies: + "@jest/types" "30.2.0" + "@sinonjs/fake-timers" "^13.0.0" + "@types/node" "*" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" + +"@jest/get-type@30.1.0": + version "30.1.0" + resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz" + integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== + +"@jest/globals@^28.0.0 || ^29.0.0 || ^30.0.0", "@jest/globals@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz" + integrity sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw== + dependencies: + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/types" "30.2.0" + jest-mock "30.2.0" + +"@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz" + integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== + dependencies: + "@types/node" "*" + jest-regex-util "30.0.1" + +"@jest/reporters@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz" + integrity sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@jridgewell/trace-mapping" "^0.3.25" + "@types/node" "*" + chalk "^4.1.2" + collect-v8-coverage "^1.0.2" + exit-x "^0.2.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^5.0.0" + istanbul-reports "^3.1.3" + jest-message-util "30.2.0" + jest-util "30.2.0" + jest-worker "30.2.0" + slash "^3.0.0" + string-length "^4.0.2" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@30.0.5": + version "30.0.5" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz" + integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== + dependencies: + "@sinclair/typebox" "^0.34.0" + +"@jest/snapshot-utils@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz" + integrity sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug== + dependencies: + "@jest/types" "30.2.0" + chalk "^4.1.2" + graceful-fs "^4.2.11" + natural-compare "^1.4.0" + +"@jest/source-map@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz" + integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + callsites "^3.1.0" + graceful-fs "^4.2.11" + +"@jest/test-result@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz" + integrity sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg== + dependencies: + "@jest/console" "30.2.0" + "@jest/types" "30.2.0" + "@types/istanbul-lib-coverage" "^2.0.6" + collect-v8-coverage "^1.0.2" + +"@jest/test-sequencer@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz" + integrity sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q== + dependencies: + "@jest/test-result" "30.2.0" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + slash "^3.0.0" + +"@jest/transform@^29.0.0 || ^30.0.0", "@jest/transform@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz" + integrity sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/types" "30.2.0" + "@jridgewell/trace-mapping" "^0.3.25" + babel-plugin-istanbul "^7.0.1" + chalk "^4.1.2" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-regex-util "30.0.1" + jest-util "30.2.0" + micromatch "^4.0.8" + pirates "^4.0.7" + slash "^3.0.0" + write-file-atomic "^5.0.1" + +"@jest/types@^29.0.0 || ^30.0.0", "@jest/types@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz" + integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg== + dependencies: + "@jest/pattern" "30.0.1" + "@jest/schemas" "30.0.5" + "@types/istanbul-lib-coverage" "^2.0.6" + "@types/istanbul-reports" "^3.0.4" + "@types/node" "*" + "@types/yargs" "^17.0.33" + chalk "^4.1.2" + +"@jimp/core@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz" + integrity sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w== + dependencies: + "@jimp/file-ops" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + await-to-js "^3.0.0" + exif-parser "^0.1.12" + file-type "^16.0.0" + mime "3" + +"@jimp/diff@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz" + integrity sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw== + dependencies: + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + pixelmatch "^5.3.0" + +"@jimp/file-ops@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz" + integrity sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ== + +"@jimp/js-bmp@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz" + integrity sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + bmp-ts "^1.0.9" + +"@jimp/js-gif@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz" + integrity sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + gifwrap "^0.10.1" + omggif "^1.0.10" + +"@jimp/js-jpeg@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz" + integrity sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + jpeg-js "^0.4.4" + +"@jimp/js-png@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz" + integrity sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + pngjs "^7.0.0" + +"@jimp/js-tiff@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz" + integrity sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + utif2 "^4.1.0" + +"@jimp/plugin-blit@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz" + integrity sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA== + dependencies: + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-blur@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz" + integrity sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/utils" "1.6.0" + +"@jimp/plugin-circle@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz" + integrity sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw== + dependencies: + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-color@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz" + integrity sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + tinycolor2 "^1.6.0" + zod "^3.23.8" + +"@jimp/plugin-contain@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz" + integrity sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/plugin-blit" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-cover@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz" + integrity sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/plugin-crop" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-crop@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz" + integrity sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-displace@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz" + integrity sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q== + dependencies: + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-dither@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz" + integrity sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ== + dependencies: + "@jimp/types" "1.6.0" + +"@jimp/plugin-fisheye@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz" + integrity sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA== + dependencies: + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-flip@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz" + integrity sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg== + dependencies: + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-hash@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz" + integrity sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/js-bmp" "1.6.0" + "@jimp/js-jpeg" "1.6.0" + "@jimp/js-png" "1.6.0" + "@jimp/js-tiff" "1.6.0" + "@jimp/plugin-color" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + any-base "^1.1.0" + +"@jimp/plugin-mask@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz" + integrity sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA== + dependencies: + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-print@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz" + integrity sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/js-jpeg" "1.6.0" + "@jimp/js-png" "1.6.0" + "@jimp/plugin-blit" "1.6.0" + "@jimp/types" "1.6.0" + parse-bmfont-ascii "^1.0.6" + parse-bmfont-binary "^1.0.6" + parse-bmfont-xml "^1.1.6" + simple-xml-to-json "^1.2.2" + zod "^3.23.8" + +"@jimp/plugin-quantize@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz" + integrity sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg== + dependencies: + image-q "^4.0.0" + zod "^3.23.8" + +"@jimp/plugin-resize@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz" + integrity sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-rotate@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz" + integrity sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/plugin-crop" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-threshold@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz" + integrity sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/plugin-color" "1.6.0" + "@jimp/plugin-hash" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/types@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz" + integrity sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg== + dependencies: + zod "^3.23.8" + +"@jimp/utils@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz" + integrity sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA== + dependencies: + "@jimp/types" "1.6.0" + tinycolor2 "^1.6.0" + +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.11" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz" + integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@ljharb/through@^2.3.12": + version "2.3.14" + resolved "https://registry.npmjs.org/@ljharb/through/-/through-2.3.14.tgz" + integrity sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A== + dependencies: + call-bind "^1.0.8" + +"@lukeed/csprng@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz" + integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== + +"@mantle/backend@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/backend": + version "0.0.1" + resolved "file:packages/backend" + dependencies: + "@mantle/contracts" "*" + "@nestjs/bullmq" "^11.0.4" + "@nestjs/common" "^10.0.0" + "@nestjs/config" "^4.0.2" + "@nestjs/core" "^10.0.0" + "@nestjs/jwt" "^11.0.2" + "@nestjs/mongoose" "^11.0.4" + "@nestjs/passport" "^11.0.5" + "@nestjs/platform-express" "^10.0.0" + "@nestjs/schedule" "^6.1.0" + "@nestjs/swagger" "^7.4.2" + "@octokit/rest" "^22.0.1" + "@openassets/types" "*" + "@stellar/stellar-sdk" "^14.5.0" + "@types/multer" "^2.0.0" + "@types/pdf-parse" "^1.1.5" + "@types/xml2js" "^0.4.14" + axios "^1.6.0" + bullmq "^5.66.2" + class-transformer "^0.5.1" + class-validator "^0.14.3" + fast-levenshtein "^3.0.0" + ioredis "^5.8.2" + jimp "^1.6.0" + jsqr "^1.4.0" + mongoose "^9.0.2" + passport "^0.7.0" + passport-jwt "^4.0.1" + pdf-parse "^2.4.5" + reflect-metadata "^0.1.13" + rxjs "^7.8.1" + swagger-ui-express "^5.0.1" + uuid "^13.0.0" + viem "^2.43.2" + xml2js "^0.6.2" + +"@mantle/contracts@*", "@mantle/contracts@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/contracts": + version "1.0.0" + resolved "file:packages/contracts" + dependencies: + "@openzeppelin/contracts" "5.4.0" + +"@mantle/stellar-contracts@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/stellar-contracts": + version "1.0.0" + resolved "file:packages/stellar-contracts" + +"@microsoft/tsdoc@^0.15.0": + version "0.15.1" + resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz" + integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw== + +"@mongodb-js/saslprep@^1.3.0": + version "1.4.4" + resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.4.tgz" + integrity sha512-p7X/ytJDIdwUfFL/CLOhKgdfJe1Fa8uw9seJYvdOmnP9JBWGWHW69HkOixXS6Wy9yvGf1MbhcS6lVmrhy4jm2g== + dependencies: + sparse-bitfield "^3.0.3" + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz" + integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== + +"@napi-rs/canvas-darwin-arm64@0.1.80": + version "0.1.80" + resolved "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.80.tgz" + integrity sha512-O64APRTXRUiAz0P8gErkfEr3lipLJgM6pjATwavZ22ebhjYl/SUbpgM0xcWPQBNMP1n29afAC/Us5PX1vg+JNQ== + +"@napi-rs/canvas-darwin-arm64@0.1.85": + version "0.1.85" + +"@napi-rs/canvas@^0.1.80": + version "0.1.85" + optionalDependencies: + "@napi-rs/canvas-android-arm64" "0.1.85" + "@napi-rs/canvas-darwin-arm64" "0.1.85" + "@napi-rs/canvas-darwin-x64" "0.1.85" + "@napi-rs/canvas-linux-arm-gnueabihf" "0.1.85" + "@napi-rs/canvas-linux-arm64-gnu" "0.1.85" + "@napi-rs/canvas-linux-arm64-musl" "0.1.85" + "@napi-rs/canvas-linux-riscv64-gnu" "0.1.85" + "@napi-rs/canvas-linux-x64-gnu" "0.1.85" + "@napi-rs/canvas-linux-x64-musl" "0.1.85" + "@napi-rs/canvas-win32-arm64-msvc" "0.1.85" + "@napi-rs/canvas-win32-x64-msvc" "0.1.85" + +"@napi-rs/canvas@0.1.80": + version "0.1.80" + resolved "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.80.tgz" + integrity sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww== + optionalDependencies: + "@napi-rs/canvas-android-arm64" "0.1.80" + "@napi-rs/canvas-darwin-arm64" "0.1.80" + "@napi-rs/canvas-darwin-x64" "0.1.80" + "@napi-rs/canvas-linux-arm-gnueabihf" "0.1.80" + "@napi-rs/canvas-linux-arm64-gnu" "0.1.80" + "@napi-rs/canvas-linux-arm64-musl" "0.1.80" + "@napi-rs/canvas-linux-riscv64-gnu" "0.1.80" + "@napi-rs/canvas-linux-x64-gnu" "0.1.80" + "@napi-rs/canvas-linux-x64-musl" "0.1.80" + "@napi-rs/canvas-win32-x64-msvc" "0.1.80" + +"@nestjs/bull-shared@^11.0.4": + version "11.0.4" + resolved "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.4.tgz" + integrity sha512-VBJcDHSAzxQnpcDfA0kt9MTGUD1XZzfByV70su0W0eDCQ9aqIEBlzWRW21tv9FG9dIut22ysgDidshdjlnczLw== + dependencies: + tslib "2.8.1" + +"@nestjs/bullmq@^11.0.4": + version "11.0.4" + resolved "https://registry.npmjs.org/@nestjs/bullmq/-/bullmq-11.0.4.tgz" + integrity sha512-wBzK9raAVG0/6NTMdvLGM4/FQ1lsB35/pYS8L6a0SDgkTiLpd7mAjQ8R692oMx5s7IjvgntaZOuTUrKYLNfIkA== + dependencies: + "@nestjs/bull-shared" "^11.0.4" + tslib "2.8.1" + +"@nestjs/cli@^10.0.0": + version "10.4.9" + resolved "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.9.tgz" + integrity sha512-s8qYd97bggqeK7Op3iD49X2MpFtW4LVNLAwXFkfbRxKME6IYT7X0muNTJ2+QfI8hpbNx9isWkrLWIp+g5FOhiA== + dependencies: + "@angular-devkit/core" "17.3.11" + "@angular-devkit/schematics" "17.3.11" + "@angular-devkit/schematics-cli" "17.3.11" + "@nestjs/schematics" "^10.0.1" + chalk "4.1.2" + chokidar "3.6.0" + cli-table3 "0.6.5" + commander "4.1.1" + fork-ts-checker-webpack-plugin "9.0.2" + glob "10.4.5" + inquirer "8.2.6" + node-emoji "1.11.0" + ora "5.4.1" + tree-kill "1.2.2" + tsconfig-paths "4.2.0" + tsconfig-paths-webpack-plugin "4.2.0" + typescript "5.7.2" + webpack "5.97.1" + webpack-node-externals "3.0.0" + +"@nestjs/common@^10.0.0", "@nestjs/common@^10.0.0 || ^11.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", "@nestjs/common@^9.0.0 || ^10.0.0": + version "10.4.20" + resolved "https://registry.npmjs.org/@nestjs/common/-/common-10.4.20.tgz" + integrity sha512-hxJxZF7jcKGuUzM9EYbuES80Z/36piJbiqmPy86mk8qOn5gglFebBTvcx7PWVbRNSb4gngASYnefBj/Y2HAzpQ== + dependencies: + file-type "20.4.1" + iterare "1.2.1" + tslib "2.8.1" + uid "2.0.2" + +"@nestjs/config@^4.0.2": + version "4.0.2" + resolved "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz" + integrity sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA== + dependencies: + dotenv "16.4.7" + dotenv-expand "12.0.1" + lodash "4.17.21" + +"@nestjs/core@^10.0.0", "@nestjs/core@^10.0.0 || ^11.0.0", "@nestjs/core@^9.0.0 || ^10.0.0": + version "10.4.20" + resolved "https://registry.npmjs.org/@nestjs/core/-/core-10.4.20.tgz" + integrity sha512-kRdtyKA3+Tu70N3RQ4JgmO1E3LzAMs/eppj7SfjabC7TgqNWoS4RLhWl4BqmsNVmjj6D5jgfPVtHtgYkU3AfpQ== + dependencies: + "@nuxtjs/opencollective" "0.3.2" + fast-safe-stringify "2.1.1" + iterare "1.2.1" + path-to-regexp "3.3.0" + tslib "2.8.1" + uid "2.0.2" + +"@nestjs/jwt@^11.0.2": + version "11.0.2" + resolved "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.2.tgz" + integrity sha512-rK8aE/3/Ma45gAWfCksAXUNbOoSOUudU0Kn3rT39htPF7wsYXtKfjALKeKKJbFrIWbLjsbqfXX5bIJNvgBugGA== + dependencies: + "@types/jsonwebtoken" "9.0.10" + jsonwebtoken "9.0.3" + +"@nestjs/mapped-types@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz" + integrity sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg== + +"@nestjs/mongoose@^11.0.4": + version "11.0.4" + resolved "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-11.0.4.tgz" + integrity sha512-LUOlUeSOfbjdIu22QwOmczv2CzJQr9LUBo2mOfbXrGCu2svpr5Hiu71zBFrb/9UC+H8BjGMKbBOq1nEbMF6ZJA== + +"@nestjs/passport@^11.0.5": + version "11.0.5" + resolved "https://registry.npmjs.org/@nestjs/passport/-/passport-11.0.5.tgz" + integrity sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ== + +"@nestjs/platform-express@^10.0.0": + version "10.4.20" + resolved "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.20.tgz" + integrity sha512-rh97mX3rimyf4xLMLHuTOBKe6UD8LOJ14VlJ1F/PTd6C6ZK9Ak6EHuJvdaGcSFQhd3ZMBh3I6CuujKGW9pNdIg== + dependencies: + body-parser "1.20.3" + cors "2.8.5" + express "4.21.2" + multer "2.0.2" + tslib "2.8.1" + +"@nestjs/schedule@^6.1.0": + version "6.1.0" + resolved "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.0.tgz" + integrity sha512-W25Ydc933Gzb1/oo7+bWzzDiOissE+h/dhIAPugA39b9MuIzBbLybuXpc1AjoQLczO3v0ldmxaffVl87W0uqoQ== + dependencies: + cron "4.3.5" + +"@nestjs/schematics@^10.0.0": + version "10.2.3" + resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz" + integrity sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg== + dependencies: + "@angular-devkit/core" "17.3.11" + "@angular-devkit/schematics" "17.3.11" + comment-json "4.2.5" + jsonc-parser "3.3.1" + pluralize "8.0.0" + +"@nestjs/schematics@^10.0.1": + version "10.2.3" + resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz" + integrity sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg== + dependencies: + "@angular-devkit/core" "17.3.11" + "@angular-devkit/schematics" "17.3.11" + comment-json "4.2.5" + jsonc-parser "3.3.1" + pluralize "8.0.0" + +"@nestjs/swagger@^7.4.2": + version "7.4.2" + resolved "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.4.2.tgz" + integrity sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ== + dependencies: + "@microsoft/tsdoc" "^0.15.0" + "@nestjs/mapped-types" "2.0.5" + js-yaml "4.1.0" + lodash "4.17.21" + path-to-regexp "3.3.0" + swagger-ui-dist "5.17.14" + +"@nestjs/testing@^10.0.0": + version "10.4.20" + resolved "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.20.tgz" + integrity sha512-nMkRDukDKskdPruM6EsgMq7yJua+CPZM6I6FrLP8yXw8BiVSPv9Nm0CtcGGwt3kgZF9hfxKjGqLjsvVBsv6Vfw== + dependencies: + tslib "2.8.1" + +"@noble/ciphers@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz" + integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== + +"@noble/curves@^1.9.6": + version "1.9.7" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@~1.4.0", "@noble/curves@1.4.2": + version "1.4.2" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/curves@~1.8.1": + version "1.8.2" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz" + integrity sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g== + dependencies: + "@noble/hashes" "1.7.2" + +"@noble/curves@~1.9.0": + version "1.9.7" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz" + integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/hashes@^1.1.5", "@noble/hashes@^1.2.0", "@noble/hashes@^1.4.0", "@noble/hashes@^1.8.0", "@noble/hashes@~1.8.0", "@noble/hashes@1.8.0": + version "1.8.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + +"@noble/hashes@~1.2.0", "@noble/hashes@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/hashes@~1.4.0", "@noble/hashes@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/hashes@~1.7.1", "@noble/hashes@1.7.2": + version "1.7.2" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz" + integrity sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ== + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/secp256k1@~1.7.0": + version "1.7.2" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.2.tgz" + integrity sha512-/qzwYl5eFLH8OWIecQWM31qld2g1NfjgylK+TNhqtaUKP37Nm+Y+z30Fjhw0Ct8p9yCQEm2N3W/AckdIb3SMcQ== + +"@noble/secp256k1@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nomicfoundation/edr-darwin-arm64@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-darwin-x64@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-linux-x64-musl@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr@0.12.0-next.17": + version "0.12.0-next.17" + dependencies: + "@nomicfoundation/edr-darwin-arm64" "0.12.0-next.17" + "@nomicfoundation/edr-darwin-x64" "0.12.0-next.17" + "@nomicfoundation/edr-linux-arm64-gnu" "0.12.0-next.17" + "@nomicfoundation/edr-linux-arm64-musl" "0.12.0-next.17" + "@nomicfoundation/edr-linux-x64-gnu" "0.12.0-next.17" + "@nomicfoundation/edr-linux-x64-musl" "0.12.0-next.17" + "@nomicfoundation/edr-win32-x64-msvc" "0.12.0-next.17" + +"@nomicfoundation/hardhat-chai-matchers@^2.0.0", "@nomicfoundation/hardhat-chai-matchers@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.1.0.tgz" + integrity sha512-GPhBNafh1fCnVD9Y7BYvoLnblnvfcq3j8YDbO1gGe/1nOFWzGmV7gFu5DkwFXF+IpYsS+t96o9qc/mPu3V3Vfw== + dependencies: + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + +"@nomicfoundation/hardhat-errors@^3.0.0": + version "3.0.6" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.6.tgz" + integrity sha512-3x+OVdZv7Rgy3z6os9pB6kiHLxs6q0PCXHRu+WLZflr44PG9zW+7V9o+ehrUqmmivlHcIFr3Qh4M2wZVuoCYww== + dependencies: + "@nomicfoundation/hardhat-utils" "^3.0.1" + +"@nomicfoundation/hardhat-ethers@^3.0.0", "@nomicfoundation/hardhat-ethers@^3.0.8", "@nomicfoundation/hardhat-ethers@^3.1.0": + version "3.1.3" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.1.3.tgz" + integrity sha512-208JcDeVIl+7Wu3MhFUUtiA8TJ7r2Rn3Wr+lSx9PfsDTKkbsAsWPY6N6wQ4mtzDv0/pB9nIbJhkjoHe1EsgNsA== + dependencies: + debug "^4.1.1" + lodash.isequal "^4.5.0" + +"@nomicfoundation/hardhat-network-helpers@^1.0.0", "@nomicfoundation/hardhat-network-helpers@^1.0.12": + version "1.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.1.2.tgz" + integrity sha512-p7HaUVDbLj7ikFivQVNhnfMHUBgiHYMwQWvGn9AriieuopGOELIrwj2KjyM2a6z70zai5YKO264Vwz+3UFJZPQ== + dependencies: + ethereumjs-util "^7.1.4" + +"@nomicfoundation/hardhat-toolbox@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-3.0.0.tgz" + integrity sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA== + +"@nomicfoundation/hardhat-utils@^3.0.1", "@nomicfoundation/hardhat-utils@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.5.tgz" + integrity sha512-5zkQSuSxkwK7fQxKswJ1GGc/3AuWBSmxA7GhczTPLx28dAXQnubRU8nA48SkCkKesJq5x4TROP+XheSE2VkLUA== + dependencies: + "@streamparser/json-node" "^0.0.22" + debug "^4.3.2" + env-paths "^2.2.0" + ethereum-cryptography "^2.2.1" + fast-equals "^5.0.1" + json-stream-stringify "^3.1.6" + rfdc "^1.3.1" + undici "^6.16.1" + +"@nomicfoundation/hardhat-verify@^1.0.0", "@nomicfoundation/hardhat-verify@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-1.1.1.tgz" + integrity sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + lodash.clonedeep "^4.5.0" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + +"@nomicfoundation/hardhat-viem@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-viem/-/hardhat-viem-3.0.1.tgz" + integrity sha512-sUyi3Xn31vItf925YRgHp7x6FIFfG9B+jacWYyJ0RBi7BWCrC/aSUX4jRRmpzaZ4opLQ8KXAZdxS91Yka7AYtw== + dependencies: + "@nomicfoundation/hardhat-errors" "^3.0.0" + "@nomicfoundation/hardhat-utils" "^3.0.5" + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz" + integrity sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz" + integrity sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz" + integrity sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz" + integrity sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz" + integrity sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz" + integrity sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz" + integrity sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz" + integrity sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.2" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.2" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.2" + +"@nuxtjs/opencollective@0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" + integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== + dependencies: + chalk "^4.1.0" + consola "^2.15.0" + node-fetch "^2.6.1" + +"@octokit/auth-token@^6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz" + integrity sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w== + +"@octokit/core@^7.0.6", "@octokit/core@>=6": + version "7.0.6" + resolved "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz" + integrity sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q== + dependencies: + "@octokit/auth-token" "^6.0.0" + "@octokit/graphql" "^9.0.3" + "@octokit/request" "^10.0.6" + "@octokit/request-error" "^7.0.2" + "@octokit/types" "^16.0.0" + before-after-hook "^4.0.0" + universal-user-agent "^7.0.0" + +"@octokit/endpoint@^11.0.2": + version "11.0.2" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz" + integrity sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ== + dependencies: + "@octokit/types" "^16.0.0" + universal-user-agent "^7.0.2" + +"@octokit/graphql@^9.0.3": + version "9.0.3" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz" + integrity sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA== + dependencies: + "@octokit/request" "^10.0.6" + "@octokit/types" "^16.0.0" + universal-user-agent "^7.0.0" + +"@octokit/openapi-types@^27.0.0": + version "27.0.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz" + integrity sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA== + +"@octokit/plugin-paginate-rest@^14.0.0": + version "14.0.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz" + integrity sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw== + dependencies: + "@octokit/types" "^16.0.0" + +"@octokit/plugin-request-log@^6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz" + integrity sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q== + +"@octokit/plugin-rest-endpoint-methods@^17.0.0": + version "17.0.0" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz" + integrity sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw== + dependencies: + "@octokit/types" "^16.0.0" + +"@octokit/request-error@^7.0.2": + version "7.1.0" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz" + integrity sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw== + dependencies: + "@octokit/types" "^16.0.0" + +"@octokit/request@^10.0.6": + version "10.0.7" + resolved "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz" + integrity sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA== + dependencies: + "@octokit/endpoint" "^11.0.2" + "@octokit/request-error" "^7.0.2" + "@octokit/types" "^16.0.0" + fast-content-type-parse "^3.0.0" + universal-user-agent "^7.0.2" + +"@octokit/rest@^22.0.1": + version "22.0.1" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz" + integrity sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw== + dependencies: + "@octokit/core" "^7.0.6" + "@octokit/plugin-paginate-rest" "^14.0.0" + "@octokit/plugin-request-log" "^6.0.0" + "@octokit/plugin-rest-endpoint-methods" "^17.0.0" + +"@octokit/types@^16.0.0": + version "16.0.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz" + integrity sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg== + dependencies: + "@octokit/openapi-types" "^27.0.0" + +"@openassets/types@*", "@openassets/types@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/types": + version "1.0.0" + resolved "file:packages/types" + +"@openzeppelin/contracts@5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz" + integrity sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A== + +"@paralleldrive/cuid2@^2.2.2": + version "2.3.1" + resolved "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz" + integrity sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw== + dependencies: + "@noble/hashes" "^1.1.5" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.2.9": + version "0.2.9" + resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz" + integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== + +"@scure/base@~1.1.0", "@scure/base@~1.1.6": + version "1.1.9" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== + +"@scure/base@~1.2.5": + version "1.2.6" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== + +"@scure/bip32@^1.7.0", "@scure/bip32@1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz" + integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== + dependencies: + "@noble/curves" "~1.9.0" + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip32@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz" + integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== + dependencies: + "@noble/curves" "~1.4.0" + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +"@scure/bip39@^1.6.0", "@scure/bip39@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz" + integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== + dependencies: + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz" + integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== + dependencies: + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sinclair/typebox@^0.34.0": + version "0.34.41" + +"@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^13.0.0": + version "13.0.5" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@solidity-parser/parser@^0.14.0": + version "0.14.5" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@solidity-parser/parser@^0.20.1": + version "0.20.2" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz" + integrity sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA== + +"@stellar/js-xdr@^3.1.2": + version "3.1.2" + resolved "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.2.tgz" + integrity sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ== + +"@stellar/stellar-base@^14.0.4": + version "14.0.4" + resolved "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-14.0.4.tgz" + integrity sha512-UbNW6zbdOBXJwLAV2mMak0bIC9nw3IZVlQXkv2w2dk1jgCbJjy3oRVC943zeGE5JAm0Z9PHxrIjmkpGhayY7kw== + dependencies: + "@noble/curves" "^1.9.6" + "@stellar/js-xdr" "^3.1.2" + base32.js "^0.1.0" + bignumber.js "^9.3.1" + buffer "^6.0.3" + sha.js "^2.4.12" + +"@stellar/stellar-sdk@^14.5.0": + version "14.5.0" + resolved "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-14.5.0.tgz" + integrity sha512-Uzjq+An/hUA+Q5ERAYPtT0+MMiwWnYYWMwozmZMjxjdL2MmSjucBDF8Q04db6K/ekU4B5cHuOfsdlrfaxQYblw== + dependencies: + "@stellar/stellar-base" "^14.0.4" + axios "^1.13.3" + bignumber.js "^9.3.1" + commander "^14.0.2" + eventsource "^2.0.2" + feaxios "^0.0.23" + randombytes "^2.1.0" + toml "^3.0.0" + urijs "^1.19.1" + +"@streamparser/json-node@^0.0.22": + version "0.0.22" + resolved "https://registry.npmjs.org/@streamparser/json-node/-/json-node-0.0.22.tgz" + integrity sha512-sJT2ptNRwqB1lIsQrQlCoWk5rF4tif9wDh+7yluAGijJamAhrHGYpFB/Zg3hJeceoZypi74ftXk8DHzwYpbZSg== + dependencies: + "@streamparser/json" "^0.0.22" + +"@streamparser/json@^0.0.22": + version "0.0.22" + resolved "https://registry.npmjs.org/@streamparser/json/-/json-0.0.22.tgz" + integrity sha512-b6gTSBjJ8G8SuO3Gbbj+zXbVx8NSs1EbpbMKpzGLWMdkR+98McH9bEjSz3+0mPJf68c5nxa3CrJHp5EQNXM6zQ== + +"@tokenizer/inflate@^0.2.6": + version "0.2.7" + resolved "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz" + integrity sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg== + dependencies: + debug "^4.4.0" + fflate "^0.8.2" + token-types "^6.0.0" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@tsconfig/node10@^1.0.7": + version "1.0.12" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz" + integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@typechain/ethers-v6@^0.4.0", "@typechain/ethers-v6@^0.4.3", "@typechain/ethers-v6@^0.5.1": + version "0.5.1" + resolved "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz" + integrity sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/hardhat@^8.0.0": + version "8.0.3" + resolved "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-8.0.3.tgz" + integrity sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng== + dependencies: + fs-extra "^9.1.0" + +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.27.0" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*": + version "7.28.0" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz" + integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== + dependencies: + "@babel/types" "^7.28.2" + +"@types/bn.js@^5.1.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q== + dependencies: + "@types/node" "*" + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/chai-as-promised@^7.1.3": + version "7.1.8" + resolved "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz" + integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== + dependencies: + "@types/chai" "*" + +"@types/chai@*": + version "5.2.3" + resolved "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz" + integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== + dependencies: + "@types/deep-eql" "*" + assertion-error "^2.0.1" + +"@types/chai@^4.2.0", "@types/chai@^4.3.11": + version "4.3.20" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz" + integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/cookiejar@^2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz" + integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== + +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== + +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@>=8.0.0": + version "9.6.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.6", "@types/estree@^1.0.8": + version "1.0.8" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/express-serve-static-core@^4.17.33": + version "4.19.7" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz" + integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express-serve-static-core@^5.0.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz" + integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.6" + resolved "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz" + integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "^2" + +"@types/express@^4.17.17": + version "4.17.25" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "^1" + +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^30.0.0": + version "30.0.0" + resolved "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz" + integrity sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA== + dependencies: + expect "^30.0.0" + pretty-format "^30.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/jsonwebtoken@*", "@types/jsonwebtoken@9.0.10": + version "9.0.10" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz" + integrity sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA== + dependencies: + "@types/ms" "*" + "@types/node" "*" + +"@types/luxon@~3.7.0": + version "3.7.1" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz" + integrity sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg== + +"@types/methods@^1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz" + integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/minimatch@*": + version "5.1.2" + +"@types/mocha@^10.0.10", "@types/mocha@>=9.1.0": + version "10.0.10" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz" + integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== + +"@types/ms@*": + version "2.1.0" + resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + +"@types/multer@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@types/multer/-/multer-2.0.0.tgz" + integrity sha512-C3Z9v9Evij2yST3RSBktxP9STm6OdMc5uR1xF1SGr98uv8dUlAL2hqwrZ3GVB3uyMyiegnscEK6PGtYvNrjTjw== + dependencies: + "@types/express" "*" + +"@types/node@*", "@types/node@^25.0.3", "@types/node@>=12.0.0": + version "25.0.3" + resolved "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz" + integrity sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA== + dependencies: + undici-types "~7.16.0" + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^20.0.0": + version "20.19.33" + resolved "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz" + integrity sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw== + dependencies: + undici-types "~6.21.0" + +"@types/node@^20.3.1": + version "20.19.27" + resolved "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz" + integrity sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug== + dependencies: + undici-types "~6.21.0" + +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/node@16.9.1": + version "16.9.1" + resolved "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz" + integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== + +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + +"@types/passport-jwt@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-4.0.1.tgz" + integrity sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ== + dependencies: + "@types/jsonwebtoken" "*" + "@types/passport-strategy" "*" + +"@types/passport-strategy@*": + version "0.2.38" + resolved "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.38.tgz" + integrity sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA== + dependencies: + "@types/express" "*" + "@types/passport" "*" + +"@types/passport@*", "@types/passport@^1.0.17": + version "1.0.17" + resolved "https://registry.npmjs.org/@types/passport/-/passport-1.0.17.tgz" + integrity sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg== + dependencies: + "@types/express" "*" + +"@types/pbkdf2@^3.0.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== + dependencies: + "@types/node" "*" + +"@types/pdf-parse@^1.1.5": + version "1.1.5" + resolved "https://registry.npmjs.org/@types/pdf-parse/-/pdf-parse-1.1.5.tgz" + integrity sha512-kBfrSXsloMnUJOKi25s3+hRmkycHfLK6A09eRGqF/N8BkQoPUmaCr+q8Cli5FnfohEz/rsv82zAiPz/LXtOGhA== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/qs@*", "@types/qs@^6.2.31": + version "6.14.0" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/secp256k1@^4.0.1": + version "4.0.7" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.7.tgz" + integrity sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw== + dependencies: + "@types/node" "*" + +"@types/semver@^7.5.0": + version "7.7.1" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz" + integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== + +"@types/send@*": + version "1.2.1" + resolved "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@^1": + version "1.15.10" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + +"@types/serve-static@^2": + version "2.2.0" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz" + integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + +"@types/stack-utils@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/superagent@^8.1.0": + version "8.1.9" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz" + integrity sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ== + dependencies: + "@types/cookiejar" "^2.1.5" + "@types/methods" "^1.1.4" + "@types/node" "*" + form-data "^4.0.0" + +"@types/supertest@^6.0.3": + version "6.0.3" + resolved "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz" + integrity sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w== + dependencies: + "@types/methods" "^1.1.4" + "@types/superagent" "^8.1.0" + +"@types/uuid@^11.0.0": + version "11.0.0" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-11.0.0.tgz" + integrity sha512-HVyk8nj2m+jcFRNazzqyVKiZezyhDKrGUA3jlEcg/nZ6Ms+qHwocba1Y/AaVaznJTAM9xpdFSh+ptbNrhOGvZA== + dependencies: + uuid "*" + +"@types/validator@^13.15.3": + version "13.15.10" + resolved "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz" + integrity sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA== + +"@types/webidl-conversions@*": + version "7.0.3" + resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz" + integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== + +"@types/whatwg-url@^13.0.0": + version "13.0.0" + resolved "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-13.0.0.tgz" + integrity sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q== + dependencies: + "@types/webidl-conversions" "*" + +"@types/xml2js@^0.4.14": + version "0.4.14" + resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz" + integrity sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.33": + version "17.0.35" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^6.0.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz" + integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/eslint-plugin@^8.50.0", "@typescript-eslint/eslint-plugin@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz" + integrity sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw== + dependencies: + "@eslint-community/regexpp" "^4.12.2" + "@typescript-eslint/scope-manager" "8.56.0" + "@typescript-eslint/type-utils" "8.56.0" + "@typescript-eslint/utils" "8.56.0" + "@typescript-eslint/visitor-keys" "8.56.0" + ignore "^7.0.5" + natural-compare "^1.4.0" + ts-api-utils "^2.4.0" + +"@typescript-eslint/parser@^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== + dependencies: + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^8.50.0", "@typescript-eslint/parser@^8.56.0", "@typescript-eslint/parser@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz" + integrity sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg== + dependencies: + "@typescript-eslint/scope-manager" "8.56.0" + "@typescript-eslint/types" "8.56.0" + "@typescript-eslint/typescript-estree" "8.56.0" + "@typescript-eslint/visitor-keys" "8.56.0" + debug "^4.4.3" + +"@typescript-eslint/project-service@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz" + integrity sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.56.0" + "@typescript-eslint/types" "^8.56.0" + debug "^4.4.3" + +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + +"@typescript-eslint/scope-manager@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz" + integrity sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w== + dependencies: + "@typescript-eslint/types" "8.56.0" + "@typescript-eslint/visitor-keys" "8.56.0" + +"@typescript-eslint/tsconfig-utils@^8.56.0", "@typescript-eslint/tsconfig-utils@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz" + integrity sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg== + +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz" + integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== + dependencies: + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/type-utils@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz" + integrity sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA== + dependencies: + "@typescript-eslint/types" "8.56.0" + "@typescript-eslint/typescript-estree" "8.56.0" + "@typescript-eslint/utils" "8.56.0" + debug "^4.4.3" + ts-api-utils "^2.4.0" + +"@typescript-eslint/types@^8.56.0", "@typescript-eslint/types@8.50.0", "@typescript-eslint/types@8.56.0": + version "8.50.0" + +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/typescript-estree@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz" + integrity sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q== + dependencies: + "@typescript-eslint/project-service" "8.56.0" + "@typescript-eslint/tsconfig-utils" "8.56.0" + "@typescript-eslint/types" "8.56.0" + "@typescript-eslint/visitor-keys" "8.56.0" + debug "^4.4.3" + minimatch "^9.0.5" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.4.0" + +"@typescript-eslint/utils@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + semver "^7.5.4" + +"@typescript-eslint/utils@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz" + integrity sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ== + dependencies: + "@eslint-community/eslint-utils" "^4.9.1" + "@typescript-eslint/scope-manager" "8.56.0" + "@typescript-eslint/types" "8.56.0" + "@typescript-eslint/typescript-estree" "8.56.0" + +"@typescript-eslint/visitor-keys@6.21.0": + version "8.50.0" + dependencies: + "@typescript-eslint/types" "8.50.0" + eslint-visitor-keys "^4.2.1" + +"@typescript-eslint/visitor-keys@8.56.0": + version "8.56.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz" + integrity sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg== + dependencies: + "@typescript-eslint/types" "8.56.0" + eslint-visitor-keys "^5.0.0" + +"@ungap/structured-clone@^1.2.0", "@ungap/structured-clone@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@unrs/resolver-binding-darwin-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz" + integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== + +"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abbrev@1: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== + +abitype@^1.2.3, abitype@1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz" + integrity sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-phases@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz" + integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-formats@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@8.12.0: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ajv@^8.8.2, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-colors@^4.1.1, ansi-colors@^4.1.3, ansi-colors@4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.2.2" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + +ansi-styles@^3.2.1: + 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== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.3" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz" + integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== + +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-dev" + dependencies: + source-map-support "^0.5.16" + +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== + +anymatch@^3.1.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" + integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-timsort@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz" + integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +asap@^2.0.0, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-function@^1.0.0: + version "1.0.0" + +async-generator-function@^1.0.0: + version "1.0.0" + +async@1.x: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +await-to-js@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz" + integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g== + +axios@^1.13.3, axios@^1.5.1, axios@^1.6.0: + version "1.13.5" + resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz" + integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== + dependencies: + follow-redirects "^1.15.11" + form-data "^4.0.5" + proxy-from-env "^1.1.0" + +"babel-jest@^29.0.0 || ^30.0.0", babel-jest@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz" + integrity sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw== + dependencies: + "@jest/transform" "30.2.0" + "@types/babel__core" "^7.20.5" + babel-plugin-istanbul "^7.0.1" + babel-preset-jest "30.2.0" + chalk "^4.1.2" + graceful-fs "^4.2.11" + slash "^3.0.0" + +babel-plugin-istanbul@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz" + integrity sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-instrument "^6.0.2" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz" + integrity sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA== + dependencies: + "@types/babel__core" "^7.20.5" + +babel-preset-current-node-syntax@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz" + integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + +babel-preset-jest@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz" + integrity sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ== + dependencies: + babel-plugin-jest-hoist "30.2.0" + babel-preset-current-node-syntax "^1.2.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.11" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz" + integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== + dependencies: + safe-buffer "^5.0.1" + +base32.js@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz" + integrity sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +baseline-browser-mapping@^2.9.0: + version "2.9.11" + resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz" + integrity sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +before-after-hook@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz" + integrity sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ== + +bignumber.js@^9.3.1: + version "9.3.1" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bip39@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz" + integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== + dependencies: + "@noble/hashes" "^1.2.0" + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bmp-ts@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz" + integrity sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw== + +bn.js@^4.11.9: + version "4.12.2" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz" + integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.2" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-stdout@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserslist@^4.24.0, browserslist@^4.28.1, "browserslist@>= 4.21.0": + version "4.28.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz" + integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== + dependencies: + baseline-browser-mapping "^2.9.0" + caniuse-lite "^1.0.30001759" + electron-to-chromium "^1.5.263" + node-releases "^2.0.27" + update-browserslist-db "^1.2.0" + +bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +bson@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/bson/-/bson-7.0.0.tgz" + integrity sha512-Kwc6Wh4lQ5OmkqqKhYGKIuELXl+EPYSCObVE6bWsp1T/cGkOCBN0I8wF/T44BiuhHyNi1mmKVPXk60d41xZ7kw== + +buffer-equal-constant-time@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +"bullmq@^3.0.0 || ^4.0.0 || ^5.0.0", bullmq@^5.66.2: + version "5.66.2" + dependencies: + cron-parser "4.9.0" + ioredis "5.8.2" + msgpackr "1.11.5" + node-abort-controller "3.1.1" + semver "7.7.3" + tslib "2.8.1" + uuid "11.1.0" + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@~3.1.2, bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0, callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001759: + version "1.0.30001761" + +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== + dependencies: + nofilter "^3.1.0" + +chai-as-promised@^7.1.1: + version "7.1.2" + resolved "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz" + integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== + dependencies: + check-error "^1.0.2" + +chai@^4.2.0, chai@^4.3.10, "chai@>= 2.1.2 < 6": + version "4.5.0" + resolved "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.1.0" + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0: + version "5.6.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +check-error@^1.0.2, check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@^3.5.2, chokidar@^3.5.3, chokidar@3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^4.2.0: + version "4.3.1" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz" + integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.7" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz" + integrity sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.2" + +cjs-module-lexer@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz" + integrity sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ== + +class-transformer@*, "class-transformer@^0.4.0 || ^0.5.0", class-transformer@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz" + integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== + +class-validator@*, "class-validator@^0.13.0 || ^0.14.0", class-validator@^0.14.3: + version "0.14.3" + resolved "https://registry.npmjs.org/class-validator/-/class-validator-0.14.3.tgz" + integrity sha512-rXXekcjofVN1LTOSw+u4u9WXVEUvNBVjORW154q/IdmYWy1nMbOU9aNtZB0t8m+FJQ9q91jlr2f9CwwUFdFMRA== + dependencies: + "@types/validator" "^13.15.3" + libphonenumber-js "^1.11.1" + validator "^13.15.20" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cli-table3@0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz" + integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +cluster-key-slot@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz" + integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz" + integrity sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +colors@^1.1.2, colors@1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@^14.0.2: + version "14.0.3" + resolved "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz" + integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^8.1.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commander@4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +comment-json@4.2.5: + version "4.2.5" + resolved "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz" + integrity sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw== + dependencies: + array-timsort "^1.0.3" + core-util-is "^1.0.3" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + +component-emitter@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +consola@^2.15.0: + version "2.15.3" + resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +cookiejar@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +core-util-is@^1.0.3, core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@2.8.5: + version "2.8.5" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^8.2.0: + version "8.3.6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.7, create-hmac@1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cron-parser@4.9.0: + version "4.9.0" + resolved "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz" + integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== + dependencies: + luxon "^3.2.1" + +cron@4.3.5: + version "4.3.5" + resolved "https://registry.npmjs.org/cron/-/cron-4.3.5.tgz" + integrity sha512-hKPP7fq1+OfyCqoePkKfVq7tNAdFwiQORr4lZUHwrf0tebC65fYEeWgOrXOL6prn1/fegGOdTfrM6e34PJfksg== + dependencies: + "@types/luxon" "~3.7.0" + luxon "~3.7.0" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +death@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/death/-/death-1.1.0.tgz" + integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.7, debug@^4.4.0, debug@^4.4.3, debug@4: + version "4.4.3" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +dedent@^1.6.0: + version "1.7.1" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz" + integrity sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg== + +deep-eql@^4.0.1, deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2, deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@~2.0.0, depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.1: + version "2.1.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + +detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +dezalgo@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + +difflib@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz" + integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== + dependencies: + heap ">= 0.2.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dotenv-expand@12.0.1: + version "12.0.1" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz" + integrity sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ== + dependencies: + dotenv "^16.4.5" + +dotenv@^16.4.5: + version "16.6.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz" + integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== + +dotenv@^17.2.3: + version "17.3.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz" + integrity sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA== + +dotenv@16.4.7: + version "16.4.7" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +ed25519-hd-key@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.3.0.tgz" + integrity sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg== + dependencies: + create-hmac "1.1.7" + tweetnacl "1.0.3" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.5.263: + version "1.5.267" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz" + integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw== + +elliptic@^6.5.7, elliptic@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.17.4, enhanced-resolve@^5.7.0: + version "5.18.4" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz" + integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@^2.3.0: + version "2.4.1" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +error-ex@^1.3.1: + version "1.3.4" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz" + integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== + dependencies: + is-arrayish "^0.2.1" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.7.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + +es-module-lexer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz" + integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" + integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +eslint-config-prettier@^9.0.0, "eslint-config-prettier@>= 7.0.0 <10.0.0 || >=10.1.0": + version "9.1.2" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz" + integrity sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ== + +eslint-plugin-prettier@^5.0.0: + version "5.5.4" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz" + integrity sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.11.7" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +eslint-visitor-keys@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz" + integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== + +"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0 || ^10.0.0", eslint@^9.39.2: + version "9.39.2" + resolved "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz" + integrity sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw== + dependencies: + "@eslint-community/eslint-utils" "^4.8.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.1" + "@eslint/config-helpers" "^0.4.2" + "@eslint/core" "^0.17.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.39.2" + "@eslint/plugin-kit" "^0.4.1" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.6" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + json-stable-stringify-without-jsonify "^1.0.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + +"eslint@^7.0.0 || ^8.0.0", eslint@^8.42.0, eslint@>=7.0.0, eslint@>=8.0.0: + version "8.57.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^10.0.1, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== + dependencies: + acorn "^8.15.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.1" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esprima@2.7.x: + version "2.7.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esquery@^1.4.2, esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" + integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-gas-reporter@^0.2.25: + version "0.2.27" + resolved "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz" + integrity sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw== + dependencies: + "@solidity-parser/parser" "^0.14.0" + axios "^1.5.1" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^5.7.2" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^10.2.0" + req-cwd "^2.0.0" + sha1 "^1.1.1" + sync-request "^6.0.0" + +ethereum-bloom-filters@^1.0.6: + version "1.2.0" + resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz" + integrity sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA== + dependencies: + "@noble/hashes" "^1.4.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2, ethereum-cryptography@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz" + integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== + dependencies: + "@noble/curves" "1.4.2" + "@noble/hashes" "1.4.0" + "@scure/bip32" "1.4.0" + "@scure/bip39" "1.3.0" + +ethereumjs-util@^7.1.4: + version "7.1.5" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@^5.7.2: + version "5.8.0" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz" + integrity sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg== + dependencies: + "@ethersproject/abi" "5.8.0" + "@ethersproject/abstract-provider" "5.8.0" + "@ethersproject/abstract-signer" "5.8.0" + "@ethersproject/address" "5.8.0" + "@ethersproject/base64" "5.8.0" + "@ethersproject/basex" "5.8.0" + "@ethersproject/bignumber" "5.8.0" + "@ethersproject/bytes" "5.8.0" + "@ethersproject/constants" "5.8.0" + "@ethersproject/contracts" "5.8.0" + "@ethersproject/hash" "5.8.0" + "@ethersproject/hdnode" "5.8.0" + "@ethersproject/json-wallets" "5.8.0" + "@ethersproject/keccak256" "5.8.0" + "@ethersproject/logger" "5.8.0" + "@ethersproject/networks" "5.8.0" + "@ethersproject/pbkdf2" "5.8.0" + "@ethersproject/properties" "5.8.0" + "@ethersproject/providers" "5.8.0" + "@ethersproject/random" "5.8.0" + "@ethersproject/rlp" "5.8.0" + "@ethersproject/sha2" "5.8.0" + "@ethersproject/signing-key" "5.8.0" + "@ethersproject/solidity" "5.8.0" + "@ethersproject/strings" "5.8.0" + "@ethersproject/transactions" "5.8.0" + "@ethersproject/units" "5.8.0" + "@ethersproject/wallet" "5.8.0" + "@ethersproject/web" "5.8.0" + "@ethersproject/wordlists" "5.8.0" + +ethers@^6.1.0, ethers@^6.14.0, ethers@^6.16.0, ethers@^6.4.0, ethers@6.x: + version "6.16.0" + resolved "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz" + integrity sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@^3.2.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz" + integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exif-parser@^0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz" + integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw== + +exit-x@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz" + integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== + +expect@^30.0.0, expect@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz" + integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== + dependencies: + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" + +"express@>=4.0.0 || >=5.0.0-beta", express@4.21.2: + version "4.21.2" + resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.12" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +external-editor@^3.0.3, external-editor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-content-type-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz" + integrity sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + 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== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-equals@^5.0.1: + version "5.4.0" + resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz" + integrity sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw== + +fast-glob@^3.0.3, fast-glob@^3.2.9: + version "3.3.3" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: + 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== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-levenshtein@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz" + integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== + dependencies: + fastest-levenshtein "^1.0.7" + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-safe-stringify@^2.1.1, fast-safe-stringify@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + +fastest-levenshtein@^1.0.7: + version "1.0.16" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastq@^1.6.0: + version "1.19.1" + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + +feaxios@^0.0.23: + version "0.0.23" + resolved "https://registry.npmjs.org/feaxios/-/feaxios-0.0.23.tgz" + integrity sha512-eghR0A21fvbkcQBgZuMfQhrXxJzC0GNUGC9fXhBge33D+mFDTwl0aJ35zoQQn575BhyjQitRc5N4f+L4cP708g== + dependencies: + is-retry-allowed "^3.0.0" + +fflate@^0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz" + integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== + +figures@^3.0.0, figures@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + +file-type@^16.0.0: + version "16.5.4" + resolved "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + +file-type@20.4.1: + version "20.4.1" + resolved "https://registry.npmjs.org/file-type/-/file-type-20.4.1.tgz" + integrity sha512-hw9gNZXUfZ02Jo0uafWLaFVPter5/k2rfcrjFJJHX/77xtSDOfJuEFb6oKlFV86FLP1SuyHMW1PSk0U9M5tKkQ== + dependencies: + "@tokenizer/inflate" "^0.2.6" + strtok3 "^10.2.0" + token-types "^6.0.0" + uint8array-extras "^1.4.0" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +follow-redirects@^1.12.1, follow-redirects@^1.15.11: + version "1.15.11" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +fork-ts-checker-webpack-plugin@9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz" + integrity sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg== + dependencies: + "@babel/code-frame" "^7.16.7" + chalk "^4.1.2" + chokidar "^3.5.3" + cosmiconfig "^8.2.0" + deepmerge "^4.2.2" + fs-extra "^10.0.0" + memfs "^3.4.1" + minimatch "^3.0.4" + node-abort-controller "^3.0.1" + schema-utils "^3.1.1" + semver "^7.3.5" + tapable "^2.2.1" + +form-data@^2.2.0: + version "2.5.5" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz" + integrity sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.35" + safe-buffer "^5.2.1" + +form-data@^4.0.0, form-data@^4.0.4, form-data@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +formidable@^3.5.4: + version "3.5.4" + resolved "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz" + integrity sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug== + dependencies: + "@paralleldrive/cuid2" "^2.2.2" + dezalgo "^1.0.4" + once "^1.4.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.5.tgz" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz" + integrity sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw== + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.3, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +generator-function@^2.0.0: + version "2.0.1" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.1" + dependencies: + async-function "^1.0.0" + async-generator-function "^1.0.0" + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + generator-function "^2.0.0" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== + dependencies: + chalk "^2.4.2" + node-emoji "^1.10.0" + +gifwrap@^0.10.1: + version "0.10.1" + resolved "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz" + integrity sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw== + dependencies: + image-q "^4.0.0" + omggif "^1.0.10" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.3.10: + version "10.5.0" + resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz" + integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@10.4.5: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +handlebars@^4.0.1, handlebars@^4.7.8: + version "4.7.8" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +hardhat-gas-reporter@^1.0.10, hardhat-gas-reporter@^1.0.8: + version "1.0.10" + resolved "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz" + integrity sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA== + dependencies: + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" + sha1 "^1.1.1" + +hardhat@^2.0.2, hardhat@^2.0.4, hardhat@^2.11.0, hardhat@^2.22.3, hardhat@^2.26.0, hardhat@^2.28.0, hardhat@^2.9.9, hardhat@^3.0.0: + version "2.28.0" + dependencies: + "@ethereumjs/util" "^9.1.0" + "@ethersproject/abi" "^5.1.2" + "@nomicfoundation/edr" "0.12.0-next.17" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + boxen "^5.1.2" + chokidar "^4.0.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + find-up "^5.0.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + json-stream-stringify "^3.1.4" + keccak "^3.0.2" + lodash "^4.17.11" + micro-eth-signer "^0.14.0" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + picocolors "^1.1.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.8.26" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tinyglobby "^0.2.6" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash-base@^3.0.0, hash-base@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz" + integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg== + dependencies: + inherits "^2.0.4" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + to-buffer "^1.2.1" + +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7, hash.js@1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +"heap@>= 0.2.0": + version "0.2.7" + resolved "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@^0.4.24, iconv-lite@~0.4.24, iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: + version "5.3.2" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +ignore@^7.0.5: + version "7.0.5" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + +image-q@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz" + integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== + dependencies: + "@types/node" "16.9.1" + +immutable@^4.0.0-rc.12: + version "4.3.7" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== + +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@8.2.6: + version "8.2.6" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +inquirer@9.2.15: + version "9.2.15" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz" + integrity sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg== + dependencies: + "@ljharb/through" "^2.3.12" + ansi-escapes "^4.3.2" + chalk "^5.3.0" + cli-cursor "^3.1.0" + cli-width "^4.1.0" + external-editor "^3.1.0" + figures "^3.2.0" + lodash "^4.17.21" + mute-stream "1.0.0" + ora "^5.4.1" + run-async "^3.0.0" + rxjs "^7.8.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +ioredis@^5.8.2, ioredis@5.8.2: + version "5.8.2" + resolved "https://registry.npmjs.org/ioredis/-/ioredis-5.8.2.tgz" + integrity sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q== + dependencies: + "@ioredis/commands" "1.4.0" + cluster-key-slot "^1.1.0" + debug "^4.3.4" + denque "^2.1.0" + lodash.defaults "^4.2.0" + lodash.isarguments "^3.1.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + +ipaddr.js@1.9.1: + 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== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + 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== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-retry-allowed@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-3.0.0.tgz" + integrity sha512-9xH0xvoggby+u0uGF7cZXdrutWiBiaFG8ZT4YFPXL8NzkyAwX3AKGLeFQLvzDpM430+nDFBZ1LHkie/8ocL06A== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-typed-array@^1.1.14: + version "1.1.15" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isows@1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz" + integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^6.0.0, istanbul-lib-instrument@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^5.0.0: + version "5.0.6" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== + dependencies: + "@jridgewell/trace-mapping" "^0.3.23" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + +istanbul-reports@^3.1.3: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz" + integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterare@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" + integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jest-changed-files@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz" + integrity sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ== + dependencies: + execa "^5.1.1" + jest-util "30.2.0" + p-limit "^3.1.0" + +jest-circus@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz" + integrity sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg== + dependencies: + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + co "^4.6.0" + dedent "^1.6.0" + is-generator-fn "^2.1.0" + jest-each "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + p-limit "^3.1.0" + pretty-format "30.2.0" + pure-rand "^7.0.0" + slash "^3.0.0" + stack-utils "^2.0.6" + +jest-cli@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz" + integrity sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA== + dependencies: + "@jest/core" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + chalk "^4.1.2" + exit-x "^0.2.2" + import-local "^3.2.0" + jest-config "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + yargs "^17.7.2" + +jest-config@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz" + integrity sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/get-type" "30.1.0" + "@jest/pattern" "30.0.1" + "@jest/test-sequencer" "30.2.0" + "@jest/types" "30.2.0" + babel-jest "30.2.0" + chalk "^4.1.2" + ci-info "^4.2.0" + deepmerge "^4.3.1" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-circus "30.2.0" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-runner "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + micromatch "^4.0.8" + parse-json "^5.2.0" + pretty-format "30.2.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz" + integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== + dependencies: + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + pretty-format "30.2.0" + +jest-docblock@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz" + integrity sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA== + dependencies: + detect-newline "^3.1.0" + +jest-each@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz" + integrity sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" + chalk "^4.1.2" + jest-util "30.2.0" + pretty-format "30.2.0" + +jest-environment-node@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz" + integrity sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA== + dependencies: + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + jest-mock "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + +jest-haste-map@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz" + integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + anymatch "^3.1.3" + fb-watchman "^2.0.2" + graceful-fs "^4.2.11" + jest-regex-util "30.0.1" + jest-util "30.2.0" + jest-worker "30.2.0" + micromatch "^4.0.8" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.3" + +jest-leak-detector@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz" + integrity sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ== + dependencies: + "@jest/get-type" "30.1.0" + pretty-format "30.2.0" + +jest-matcher-utils@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz" + integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg== + dependencies: + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + jest-diff "30.2.0" + pretty-format "30.2.0" + +jest-message-util@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz" + integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@jest/types" "30.2.0" + "@types/stack-utils" "^2.0.3" + chalk "^4.1.2" + graceful-fs "^4.2.11" + micromatch "^4.0.8" + pretty-format "30.2.0" + slash "^3.0.0" + stack-utils "^2.0.6" + +jest-mock-extended@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jest-mock-extended/-/jest-mock-extended-4.0.0.tgz" + integrity sha512-7BZpfuvLam+/HC+NxifIi9b+5VXj/utUDMPUqrDJehGWVuXPtLS9Jqlob2mJLrI/pg2k1S8DMfKDvEB88QNjaQ== + dependencies: + ts-essentials "^10.0.2" + +jest-mock@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz" + integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + jest-util "30.2.0" + +jest-pnp-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== + +jest-resolve-dependencies@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz" + integrity sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w== + dependencies: + jest-regex-util "30.0.1" + jest-snapshot "30.2.0" + +jest-resolve@*, jest-resolve@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz" + integrity sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A== + dependencies: + chalk "^4.1.2" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-pnp-resolver "^1.2.3" + jest-util "30.2.0" + jest-validate "30.2.0" + slash "^3.0.0" + unrs-resolver "^1.7.11" + +jest-runner@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz" + integrity sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/environment" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + emittery "^0.13.1" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-haste-map "30.2.0" + jest-leak-detector "30.2.0" + jest-message-util "30.2.0" + jest-resolve "30.2.0" + jest-runtime "30.2.0" + jest-util "30.2.0" + jest-watcher "30.2.0" + jest-worker "30.2.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz" + integrity sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg== + dependencies: + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/globals" "30.2.0" + "@jest/source-map" "30.0.1" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + cjs-module-lexer "^2.1.0" + collect-v8-coverage "^1.0.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz" + integrity sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA== + dependencies: + "@babel/core" "^7.27.4" + "@babel/generator" "^7.27.5" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/types" "^7.27.3" + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + "@jest/snapshot-utils" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + babel-preset-current-node-syntax "^1.2.0" + chalk "^4.1.2" + expect "30.2.0" + graceful-fs "^4.2.11" + jest-diff "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-util "30.2.0" + pretty-format "30.2.0" + semver "^7.7.2" + synckit "^0.11.8" + +"jest-util@^29.0.0 || ^30.0.0", jest-util@^30.2.0, jest-util@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz" + integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + ci-info "^4.2.0" + graceful-fs "^4.2.11" + picomatch "^4.0.2" + +jest-validate@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz" + integrity sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" + camelcase "^6.3.0" + chalk "^4.1.2" + leven "^3.1.0" + pretty-format "30.2.0" + +jest-watcher@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz" + integrity sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg== + dependencies: + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + emittery "^0.13.1" + jest-util "30.2.0" + string-length "^4.0.2" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz" + integrity sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g== + dependencies: + "@types/node" "*" + "@ungap/structured-clone" "^1.3.0" + jest-util "30.2.0" + merge-stream "^2.0.0" + supports-color "^8.1.1" + +"jest@^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 || ^30.0.0", "jest@^29.0.0 || ^30.0.0", jest@^30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz" + integrity sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A== + dependencies: + "@jest/core" "30.2.0" + "@jest/types" "30.2.0" + import-local "^3.2.0" + jest-cli "30.2.0" + +jimp@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz" + integrity sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/diff" "1.6.0" + "@jimp/js-bmp" "1.6.0" + "@jimp/js-gif" "1.6.0" + "@jimp/js-jpeg" "1.6.0" + "@jimp/js-png" "1.6.0" + "@jimp/js-tiff" "1.6.0" + "@jimp/plugin-blit" "1.6.0" + "@jimp/plugin-blur" "1.6.0" + "@jimp/plugin-circle" "1.6.0" + "@jimp/plugin-color" "1.6.0" + "@jimp/plugin-contain" "1.6.0" + "@jimp/plugin-cover" "1.6.0" + "@jimp/plugin-crop" "1.6.0" + "@jimp/plugin-displace" "1.6.0" + "@jimp/plugin-dither" "1.6.0" + "@jimp/plugin-fisheye" "1.6.0" + "@jimp/plugin-flip" "1.6.0" + "@jimp/plugin-hash" "1.6.0" + "@jimp/plugin-mask" "1.6.0" + "@jimp/plugin-print" "1.6.0" + "@jimp/plugin-quantize" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/plugin-rotate" "1.6.0" + "@jimp/plugin-threshold" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + +jpeg-js@^0.4.4: + version "0.4.4" + resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz" + integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== + +js-sha3@^0.8.0, js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.2" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz" + integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0, js-yaml@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + dependencies: + argparse "^2.0.1" + +js-yaml@3.x: + version "3.14.2" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz" + integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + 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== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stream-stringify@^3.1.4, json-stream-stringify@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz" + integrity sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog== + +json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-parser@3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== + +jsonc-parser@3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz" + integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonschema@^1.2.4: + version "1.5.0" + resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz" + integrity sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw== + +jsonwebtoken@^9.0.0, jsonwebtoken@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz" + integrity sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g== + dependencies: + jws "^4.0.1" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^7.5.4" + +jsqr@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz" + integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A== + +jwa@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz" + integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== + dependencies: + buffer-equal-constant-time "^1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz" + integrity sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA== + dependencies: + jwa "^2.0.1" + safe-buffer "^5.0.1" + +kareem@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/kareem/-/kareem-3.0.0.tgz" + integrity sha512-RKhaOBSPN8L7y4yAgNhDT2602G5FD6QbOIISbjN9D6mjHPeqeg7K+EB5IGSU5o81/X2Gzm3ICnAvQW3x3OP8HA== + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.5.3, keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +libphonenumber-js@^1.11.1: + version "1.12.33" + resolved "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.33.tgz" + integrity sha512-r9kw4OA6oDO4dPXkOrXTkArQAafIKAU71hChInV4FxZ69dxCfbwQGDPzqR5/vea94wU705/3AZroEbSoeVWrQw== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0, loader-runner@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz" + integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" + integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +luxon@^3.2.1, luxon@~3.7.0: + version "3.7.2" + resolved "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz" + integrity sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew== + +magic-string@0.30.8: + version "0.30.8" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz" + integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.1.1, make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.1: + version "3.5.3" + dependencies: + fs-monkey "^1.0.4" + +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@^1.1.2, methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micro-eth-signer@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz" + integrity sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw== + dependencies: + "@noble/curves" "~1.8.1" + "@noble/hashes" "~1.7.1" + micro-packed "~0.7.2" + +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + +micro-packed@~0.7.2: + version "0.7.3" + resolved "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz" + integrity sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg== + dependencies: + "@scure/base" "~1.2.5" + +micromatch@^4.0.0, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@3: + version "3.0.0" + resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2, "minimatch@2 || 3": + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1, minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.5: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mkdirp@^0.5.6, mkdirp@0.5.x: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@^10.0.0, mocha@^10.2.0: + version "10.8.2" + resolved "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz" + integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" + +mongodb-connection-string-url@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-7.0.0.tgz" + integrity sha512-irhhjRVLE20hbkRl4zpAYLnDMM+zIZnp0IDB9akAFFUZp/3XdOfwwddc7y6cNvF2WCEtfTYRwYbIfYa2kVY0og== + dependencies: + "@types/whatwg-url" "^13.0.0" + whatwg-url "^14.1.0" + +mongodb@~7.0: + version "7.0.0" + resolved "https://registry.npmjs.org/mongodb/-/mongodb-7.0.0.tgz" + integrity sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg== + dependencies: + "@mongodb-js/saslprep" "^1.3.0" + bson "^7.0.0" + mongodb-connection-string-url "^7.0.0" + +"mongoose@^7.0.0 || ^8.0.0 || ^9.0.0", mongoose@^9.0.2: + version "9.0.2" + dependencies: + kareem "3.0.0" + mongodb "~7.0" + mpath "0.9.0" + mquery "6.0.0" + ms "2.1.3" + sift "17.1.3" + +mpath@0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz" + integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== + +mquery@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/mquery/-/mquery-6.0.0.tgz" + integrity sha512-b2KQNsmgtkscfeDgkYMcWGn9vZI9YoXh802VDEwE6qc50zxBFQ0Oo8ROkawbPAsXCY1/Z1yp0MagqsZStPWJjw== + +ms@^2.1.1, ms@^2.1.3, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +msgpackr-extract@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz" + integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== + dependencies: + node-gyp-build-optional-packages "5.2.2" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" + +msgpackr@1.11.5: + version "1.11.5" + resolved "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz" + integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== + optionalDependencies: + msgpackr-extract "^3.0.2" + +multer@2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz" + integrity sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw== + dependencies: + append-field "^1.0.0" + busboy "^1.6.0" + concat-stream "^2.0.0" + mkdirp "^0.5.6" + object-assign "^4.1.1" + type-is "^1.6.18" + xtend "^4.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +mute-stream@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +napi-postinstall@^0.3.0: + version "0.3.4" + resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz" + integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-abort-controller@^3.0.1, node-abort-controller@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + +node-emoji@^1.10.0, node-emoji@1.11.0: + version "1.11.0" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-fetch@^2.6.1: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build-optional-packages@5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz" + integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== + dependencies: + detect-libc "^2.0.1" + +node-gyp-build@^4.2.0: + version "4.8.4" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.27: + version "2.0.27" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== + +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +nopt@3.x: + version "3.0.6" + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +obliterator@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz" + integrity sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw== + +omggif@^1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.4.0, once@1.x: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@^5.4.1, ora@5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +ox@0.10.6: + version "0.10.6" + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.2.3" + eventemitter3 "5.0.1" + +ox@0.11.1: + version "0.11.1" + resolved "https://registry.npmjs.org/ox/-/ox-0.11.1.tgz" + integrity sha512-1l1gOLAqg0S0xiN1dH5nkPna8PucrZgrIJOfS49MLNiMevxu07Iz4ZjuJS9N+xifvT+PsZyIptS7WHM8nC+0+A== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.2.3" + eventemitter3 "5.0.1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pako@^1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-bmfont-ascii@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz" + integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA== + +parse-bmfont-binary@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz" + integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA== + +parse-bmfont-xml@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz" + integrity sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA== + dependencies: + xml-parse-from-string "^1.0.0" + xml2js "^0.5.0" + +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +passport-jwt@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz" + integrity sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ== + dependencies: + jsonwebtoken "^9.0.0" + passport-strategy "^1.0.0" + +passport-strategy@^1.0.0, passport-strategy@1.x.x: + version "1.0.0" + resolved "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== + +"passport@^0.5.0 || ^0.6.0 || ^0.7.0", passport@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz" + integrity sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ== + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + utils-merge "^1.0.1" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + +path-to-regexp@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" + integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pause@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== + +pbkdf2@^3.0.17: + version "3.1.5" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz" + integrity sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ== + dependencies: + create-hash "^1.2.0" + create-hmac "^1.1.7" + ripemd160 "^2.0.3" + safe-buffer "^5.2.1" + sha.js "^2.4.12" + to-buffer "^1.2.1" + +pdf-parse@^2.4.5: + version "2.4.5" + resolved "https://registry.npmjs.org/pdf-parse/-/pdf-parse-2.4.5.tgz" + integrity sha512-mHU89HGh7v+4u2ubfnevJ03lmPgQ5WU4CxAVmTSh/sxVTEDYd1er/dKS/A6vg77NX47KTEoihq8jZBLr8Cxuwg== + dependencies: + "@napi-rs/canvas" "0.1.80" + pdfjs-dist "5.4.296" + +pdfjs-dist@5.4.296: + version "5.4.296" + resolved "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.4.296.tgz" + integrity sha512-DlOzet0HO7OEnmUmB6wWGJrrdvbyJKftI1bhMitK7O2N8W2gc757yyYBbINy9IDafXAV9wmKr9t7xsTaNKRG5Q== + optionalDependencies: + "@napi-rs/canvas" "^0.1.80" + +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== + +picocolors@^1.1.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +"picomatch@^3 || ^4", picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +picomatch@^4.0.2: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +picomatch@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz" + integrity sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + +pixelmatch@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz" + integrity sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q== + dependencies: + pngjs "^6.0.0" + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pluralize@8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +pngjs@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz" + integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== + +pngjs@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz" + integrity sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow== + +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + dependencies: + fast-diff "^1.1.2" + +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +prettier@^3.0.0, prettier@>=3.0.0: + version "3.7.4" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz" + integrity sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA== + +pretty-format@^30.0.0, pretty-format@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz" + integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== + dependencies: + "@jest/schemas" "30.0.5" + ansi-styles "^5.2.0" + react-is "^18.3.1" + +process-nextick-args@~2.0.0: + 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== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@^2.1.0, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pure-rand@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz" + integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== + +qs@^6.11.2: + version "6.14.0" + dependencies: + side-channel "^1.1.0" + +qs@^6.4.0: + version "6.14.0" + dependencies: + side-channel "^1.1.0" + +qs@6.13.0: + version "6.13.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@^2.4.1: + version "2.5.3" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz" + integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + +readable-web-to-node-stream@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz" + integrity sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw== + dependencies: + readable-stream "^4.7.0" + +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz" + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz" + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== + dependencies: + redis-errors "^1.0.0" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +"reflect-metadata@^0.1.12 || ^0.2.0", reflect-metadata@^0.1.13: + version "0.1.14" + resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz" + integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz" + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== + dependencies: + req-from "^2.0.0" + +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz" + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== + dependencies: + resolve-from "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.1.6: + version "1.22.11" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== + dependencies: + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rfdc@^1.3.1: + version "1.4.1" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz" + integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA== + dependencies: + hash-base "^3.1.2" + inherits "^2.0.4" + +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.0.0, rxjs@^7.1.0, rxjs@^7.5.5, rxjs@^7.8.1: + version "7.8.2" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +rxjs@7.8.1: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@>=0.6.0: + version "1.4.3" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz" + integrity sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ== + +sc-istanbul@^0.4.5: + version "0.4.6" + resolved "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz" + integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.3.0: + version "4.3.3" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +schema-utils@^4.3.3: + version "4.3.3" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +scrypt-js@^3.0.0, scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.4" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz" + integrity sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw== + dependencies: + elliptic "^6.5.7" + node-addon-api "^5.0.0" + node-gyp-build "^4.2.0" + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.7.2, semver@^7.7.3, semver@7.7.3: + version "7.7.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@~1.2.0, setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.12, sha.js@^2.4.8: + version "2.4.12" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz" + integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.0" + +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shelljs@^0.8.3: + version "0.8.5" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.0.6, side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +sift@17.1.3: + version "17.1.3" + resolved "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz" + integrity sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ== + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-xml-to-json@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz" + integrity sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +solc@0.8.26: + version "0.8.26" + resolved "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz" + integrity sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g== + dependencies: + command-exists "^1.2.8" + commander "^8.1.0" + follow-redirects "^1.12.1" + js-sha3 "0.8.0" + memorystream "^0.3.1" + semver "^5.5.0" + tmp "0.0.33" + +solidity-coverage@^0.8.1, solidity-coverage@^0.8.17: + version "0.8.17" + resolved "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.17.tgz" + integrity sha512-5P8vnB6qVX9tt1MfuONtCTEaEGO/O4WuEidPHIAJjx4sktHHKhO3rFvnE0q8L30nWJPTrcqGQMT7jpE29B2qow== + dependencies: + "@ethersproject/abi" "^5.0.9" + "@solidity-parser/parser" "^0.20.1" + chalk "^2.4.2" + death "^1.1.0" + difflib "^0.2.4" + fs-extra "^8.1.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" + jsonschema "^1.2.4" + lodash "^4.17.21" + mocha "^10.2.0" + node-emoji "^1.10.0" + pify "^4.0.1" + recursive-readdir "^2.2.2" + sc-istanbul "^0.4.5" + semver "^7.3.4" + shelljs "^0.8.3" + web3-utils "^1.3.6" + +source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@^0.5.21, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.6" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz" + integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz" + integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== + dependencies: + amdefine ">=0.0.4" + +source-map@0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" + integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== + dependencies: + memory-pager "^1.0.2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stacktrace-parser@^0.1.10: + version "0.1.11" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz" + integrity sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg== + dependencies: + type-fest "^0.7.1" + +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + +statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string_decoder@^1.1.1, string_decoder@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-length@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.2" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" + integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strtok3@^10.2.0: + version "10.3.4" + resolved "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz" + integrity sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg== + dependencies: + "@tokenizer/token" "^0.3.0" + +strtok3@^6.2.4: + version "6.3.0" + resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.1.0" + +superagent@^10.2.3: + version "10.2.3" + resolved "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz" + integrity sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig== + dependencies: + component-emitter "^1.3.1" + cookiejar "^2.1.4" + debug "^4.3.7" + fast-safe-stringify "^2.1.1" + form-data "^4.0.4" + formidable "^3.5.4" + methods "^1.1.2" + mime "2.6.0" + qs "^6.11.2" + +supertest@^7.1.4: + version "7.1.4" + resolved "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz" + integrity sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg== + dependencies: + methods "^1.1.2" + superagent "^10.2.3" + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" + integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swagger-ui-dist@>=5.0.0, swagger-ui-dist@5.17.14: + version "5.17.14" + resolved "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.14.tgz" + integrity sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw== + +swagger-ui-express@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.1.tgz" + integrity sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA== + dependencies: + swagger-ui-dist ">=5.0.0" + +symbol-observable@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +synckit@^0.11.7, synckit@^0.11.8: + version "0.11.11" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz" + integrity sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw== + dependencies: + "@pkgr/core" "^0.2.9" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^6.8.0: + version "6.9.0" + resolved "https://registry.npmjs.org/table/-/table-6.9.0.tgz" + integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz" + integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== + +terser-webpack-plugin@^5.3.10: + version "5.3.16" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz" + integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser-webpack-plugin@^5.3.16: + version "5.3.16" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz" + integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@^5.31.1: + version "5.44.1" + resolved "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz" + integrity sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.15.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tinycolor2@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + +tinyglobby@^0.2.15, tinyglobby@^0.2.6: + version "0.2.15" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +tmp@^0.0.33, tmp@0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz" + integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@~1.0.1, toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +token-types@^4.1.1: + version "4.2.1" + resolved "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz" + integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +token-types@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz" + integrity sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ== + dependencies: + "@borewit/text-codec" "^0.1.0" + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@^5.1.0: + version "5.1.1" + resolved "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz" + integrity sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw== + dependencies: + punycode "^2.3.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-api-utils@^1.0.1: + version "1.4.3" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== + +ts-api-utils@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz" + integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== + +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^10.0.2: + version "10.1.1" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-10.1.1.tgz" + integrity sha512-4aTB7KLHKmUvkjNj8V+EdnmuVTiECzn3K+zIbRthumvHu+j44x3w63xpfs0JL3NGIzGXqoQ7AV591xHO+XrOTw== + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-jest@^29.4.6: + version "29.4.6" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz" + integrity sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA== + dependencies: + bs-logger "^0.2.6" + fast-json-stable-stringify "^2.1.0" + handlebars "^4.7.8" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.7.3" + type-fest "^4.41.0" + yargs-parser "^21.1.1" + +ts-loader@^9.4.3: + version "9.5.4" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz" + integrity sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + +ts-node@*, ts-node@^10.9.2, ts-node@>=8.0.0, ts-node@>=9.0.0: + version "10.9.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +ts-node@^10.9.0: + version "10.9.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +ts-node@^10.9.1: + version "10.9.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths-webpack-plugin@4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz" + integrity sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.7.0" + tapable "^2.2.1" + tsconfig-paths "^4.1.2" + +tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0, tsconfig-paths@4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0, tslib@2.8.1: + version "2.8.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tweetnacl@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-fest@^4.41.0: + version "4.41.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + +type-is@^1.6.18, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typechain@^8.2.0, typechain@^8.3.1, typechain@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript-eslint@^8.50.0: + version "8.56.0" + resolved "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz" + integrity sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg== + dependencies: + "@typescript-eslint/eslint-plugin" "8.56.0" + "@typescript-eslint/parser" "8.56.0" + "@typescript-eslint/typescript-estree" "8.56.0" + "@typescript-eslint/utils" "8.56.0" + +typescript@*, "typescript@^3.0.0 || ^4.0.0 || ^5.0.0", typescript@^5.0.0, typescript@^5.1.3, typescript@^5.9.3, typescript@>=2.7, typescript@>=3.7.0, typescript@>=4.2.0, "typescript@>=4.3 <6", typescript@>=4.3.0, typescript@>=4.5.0, typescript@>=4.7.0, typescript@>=4.8.2, typescript@>=4.8.4, "typescript@>=4.8.4 <6.0.0", typescript@>=5.0.4, typescript@>=5.4.0: + version "5.9.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== + +typescript@>=4.9.5, typescript@>3.6.0, typescript@5.7.2: + version "5.7.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.19.3" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== + +uid@2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz" + integrity sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g== + dependencies: + "@lukeed/csprng" "^1.0.0" + +uint8array-extras@^1.4.0: + version "1.5.0" + resolved "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz" + integrity sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +undici-types@~6.21.0, undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== + +undici@^5.14.0: + version "5.29.0" + resolved "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz" + integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== + dependencies: + "@fastify/busboy" "^2.0.0" + +undici@^6.16.1: + version "6.22.0" + resolved "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz" + integrity sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw== + +universal-user-agent@^7.0.0, universal-user-agent@^7.0.2: + version "7.0.3" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz" + integrity sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@~1.0.0, unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unrs-resolver@^1.7.11: + version "1.11.1" + resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz" + integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== + dependencies: + napi-postinstall "^0.3.0" + optionalDependencies: + "@unrs/resolver-binding-android-arm-eabi" "1.11.1" + "@unrs/resolver-binding-android-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-x64" "1.11.1" + "@unrs/resolver-binding-freebsd-x64" "1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-arm64-musl" "1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-musl" "1.11.1" + "@unrs/resolver-binding-wasm32-wasi" "1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1" + "@unrs/resolver-binding-win32-x64-msvc" "1.11.1" + +update-browserslist-db@^1.2.0: + version "1.2.3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urijs@^1.19.1: + version "1.19.11" + resolved "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz" + integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +utif2@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz" + integrity sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w== + dependencies: + pako "^1.0.11" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@^1.0.1, utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@*, uuid@^13.0.0: + version "13.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz" + integrity sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz" + integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +validator@^13.15.20: + version "13.15.26" + resolved "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz" + integrity sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +viem@^2.30.0, viem@^2.43.3: + version "2.43.3" + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.2.3" + isows "1.0.7" + ox "0.11.1" + ws "8.18.3" + +viem@^2.43.2: + version "2.43.2" + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.2.3" + isows "1.0.7" + ox "0.10.6" + ws "8.18.3" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.4.1, watchpack@^2.4.4: + version "2.4.4" + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +web3-utils@^1.3.6: + version "1.10.4" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz" + integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +webpack-node-externals@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" + integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== + +webpack-sources@^3.2.3, webpack-sources@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz" + integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== + +webpack@^5.0.0, webpack@^5.1.0: + version "5.104.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz" + integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.8" + "@types/json-schema" "^7.0.15" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.15.0" + acorn-import-phases "^1.0.3" + browserslist "^4.28.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.4" + es-module-lexer "^2.0.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.3.1" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^4.3.3" + tapable "^2.3.0" + terser-webpack-plugin "^5.3.16" + watchpack "^2.4.4" + webpack-sources "^3.3.3" + +webpack@^5.11.0, webpack@5.97.1: + version "5.97.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz" + integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.14.0" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.1" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + +whatwg-url@^14.1.0: + version "14.2.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz" + integrity sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw== + dependencies: + tr46 "^5.1.0" + webidl-conversions "^7.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-typed-array@^1.1.16: + version "1.1.19" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + +which@^1.1.1, which@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +word-wrap@^1.2.5, word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + +ws@*, ws@8.18.3: + version "8.18.3" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + +ws@^7.4.6: + version "7.5.10" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +ws@8.18.0: + version "8.18.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xml-parse-from-string@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz" + integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== + +xml2js@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz" + integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1, yargs-parser@21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +"zod@^3.22.0 || ^4.0.0", zod@^3.23.8: + version "3.25.76" + resolved "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz" + integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== From 2169b4a280c1fb70417b019ffd96cdd8e78276c6 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Sun, 22 Feb 2026 13:59:24 +0530 Subject: [PATCH 06/21] "updated with new yarn" --- packages/backend/package.json | 2 +- yarn.lock | 23775 +++++++++++++++++++------------- 2 files changed, 13967 insertions(+), 9810 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 1b2326ba..c03c3562 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -21,7 +21,6 @@ }, "dependencies": { "@mantle/contracts": "*", - "@openassets/types": "*", "@nestjs/bullmq": "^11.0.4", "@nestjs/common": "^10.0.0", "@nestjs/config": "^4.0.2", @@ -33,6 +32,7 @@ "@nestjs/schedule": "^6.1.0", "@nestjs/swagger": "^7.4.2", "@octokit/rest": "^22.0.1", + "@openassets/types": "*", "@stellar/stellar-sdk": "^14.5.0", "@types/multer": "^2.0.0", "@types/pdf-parse": "^1.1.5", diff --git a/yarn.lock b/yarn.lock index 0c8bb046..eb90cd75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,9809 +1,13966 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@adraffy/ens-normalize@^1.11.0": - version "1.11.1" - resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz" - integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== - -"@adraffy/ens-normalize@1.10.1": - version "1.10.1" - resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz" - integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== - -"@angular-devkit/core@17.3.11": - version "17.3.11" - resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz" - integrity sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ== - dependencies: - ajv "8.12.0" - ajv-formats "2.1.1" - jsonc-parser "3.2.1" - picomatch "4.0.1" - rxjs "7.8.1" - source-map "0.7.4" - -"@angular-devkit/schematics-cli@17.3.11": - version "17.3.11" - resolved "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-17.3.11.tgz" - integrity sha512-kcOMqp+PHAKkqRad7Zd7PbpqJ0LqLaNZdY1+k66lLWmkEBozgq8v4ASn/puPWf9Bo0HpCiK+EzLf0VHE8Z/y6Q== - dependencies: - "@angular-devkit/core" "17.3.11" - "@angular-devkit/schematics" "17.3.11" - ansi-colors "4.1.3" - inquirer "9.2.15" - symbol-observable "4.0.0" - yargs-parser "21.1.1" - -"@angular-devkit/schematics@17.3.11": - version "17.3.11" - resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.11.tgz" - integrity sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ== - dependencies: - "@angular-devkit/core" "17.3.11" - jsonc-parser "3.2.1" - magic-string "0.30.8" - ora "5.4.1" - rxjs "7.8.1" - -"@arbitrum/contracts@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/arbitrum-contracts": - version "1.0.0" - resolved "file:packages/arbitrum-contracts" - dependencies: - "@openzeppelin/contracts" "5.4.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== - dependencies: - "@babel/helper-validator-identifier" "^7.27.1" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/compat-data@^7.27.2": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz" - integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== - -"@babel/core@^7.0.0", "@babel/core@^7.0.0 || ^8.0.0-0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-beta.1", "@babel/core@^7.23.9", "@babel/core@^7.27.4", "@babel/core@>=7.0.0-beta.0 <8": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz" - integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helpers" "^7.28.4" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.5" - "@babel/types" "^7.28.5" - "@jridgewell/remapping" "^2.3.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.27.5", "@babel/generator@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz" - integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== - dependencies: - "@babel/parser" "^7.28.5" - "@babel/types" "^7.28.5" - "@jridgewell/gen-mapping" "^0.3.12" - "@jridgewell/trace-mapping" "^0.3.28" - jsesc "^3.0.2" - -"@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== - dependencies: - "@babel/compat-data" "^7.27.2" - "@babel/helper-validator-option" "^7.27.1" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== - -"@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-transforms@^7.28.3": - version "7.28.3" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz" - integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.28.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== - -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - -"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== - -"@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== - -"@babel/helpers@^7.28.4": - version "7.28.4" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz" - integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== - dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" - -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz" - integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== - dependencies: - "@babel/types" "^7.28.5" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz" - integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz" - integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz" - integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/template@^7.27.2": - version "7.27.2" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" - -"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz" - integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.5" - debug "^4.3.1" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@borewit/text-codec@^0.1.0": - version "0.1.1" - resolved "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz" - integrity sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA== - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.9.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz" - integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/eslint-utils@^4.8.0": - version "4.9.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz" - integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/eslint-utils@^4.9.1": - version "4.9.1" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz" - integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.12.2", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.12.2" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz" - integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== - -"@eslint/config-array@^0.21.1": - version "0.21.1" - resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz" - integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== - dependencies: - "@eslint/object-schema" "^2.1.7" - debug "^4.3.1" - minimatch "^3.1.2" - -"@eslint/config-helpers@^0.4.2": - version "0.4.2" - resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz" - integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== - dependencies: - "@eslint/core" "^0.17.0" - -"@eslint/core@^0.17.0": - version "0.17.0" - resolved "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz" - integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== - dependencies: - "@types/json-schema" "^7.0.15" - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/eslintrc@^3.3.1": - version "3.3.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz" - integrity sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^10.0.1" - globals "^14.0.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.1" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@^9.39.2", "@eslint/js@9.39.2": - version "9.39.2" - resolved "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz" - integrity sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA== - -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== - -"@eslint/object-schema@^2.1.7": - version "2.1.7" - resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz" - integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== - -"@eslint/plugin-kit@^0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz" - integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== - dependencies: - "@eslint/core" "^0.17.0" - levn "^0.4.1" - -"@ethereumjs/rlp@^4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" - integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== - -"@ethereumjs/rlp@^5.0.2": - version "5.0.2" - resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz" - integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== - -"@ethereumjs/util@^8.1.0": - version "8.1.0" - resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz" - integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== - dependencies: - "@ethereumjs/rlp" "^4.0.1" - ethereum-cryptography "^2.0.0" - micro-ftch "^0.3.1" - -"@ethereumjs/util@^9.1.0": - version "9.1.0" - resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz" - integrity sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog== - dependencies: - "@ethereumjs/rlp" "^5.0.2" - ethereum-cryptography "^2.2.1" - -"@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.8.0", "@ethersproject/abi@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz" - integrity sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q== - dependencies: - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@ethersproject/abstract-provider@^5.8.0", "@ethersproject/abstract-provider@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz" - integrity sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/networks" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/web" "^5.8.0" - -"@ethersproject/abstract-signer@^5.8.0", "@ethersproject/abstract-signer@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz" - integrity sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - -"@ethersproject/address@^5.0.2", "@ethersproject/address@^5.8.0", "@ethersproject/address@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz" - integrity sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - -"@ethersproject/base64@^5.8.0", "@ethersproject/base64@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz" - integrity sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ== - dependencies: - "@ethersproject/bytes" "^5.8.0" - -"@ethersproject/basex@^5.8.0", "@ethersproject/basex@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz" - integrity sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - -"@ethersproject/bignumber@^5.8.0", "@ethersproject/bignumber@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz" - integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@^5.8.0", "@ethersproject/bytes@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz" - integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A== - dependencies: - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/constants@^5.8.0", "@ethersproject/constants@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz" - integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - -"@ethersproject/contracts@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz" - integrity sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ== - dependencies: - "@ethersproject/abi" "^5.8.0" - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - -"@ethersproject/hash@^5.8.0", "@ethersproject/hash@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz" - integrity sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/base64" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@ethersproject/hdnode@^5.8.0", "@ethersproject/hdnode@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz" - integrity sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/basex" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/pbkdf2" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/wordlists" "^5.8.0" - -"@ethersproject/json-wallets@^5.8.0", "@ethersproject/json-wallets@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz" - integrity sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hdnode" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/pbkdf2" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@^5.8.0", "@ethersproject/keccak256@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz" - integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng== - dependencies: - "@ethersproject/bytes" "^5.8.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@^5.8.0", "@ethersproject/logger@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz" - integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== - -"@ethersproject/networks@^5.8.0", "@ethersproject/networks@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz" - integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== - dependencies: - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/pbkdf2@^5.8.0", "@ethersproject/pbkdf2@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz" - integrity sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - -"@ethersproject/properties@^5.8.0", "@ethersproject/properties@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz" - integrity sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw== - dependencies: - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/providers@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz" - integrity sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/base64" "^5.8.0" - "@ethersproject/basex" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/networks" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/web" "^5.8.0" - bech32 "1.1.4" - ws "8.18.0" - -"@ethersproject/random@^5.8.0", "@ethersproject/random@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz" - integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/rlp@^5.8.0", "@ethersproject/rlp@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz" - integrity sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/sha2@^5.8.0", "@ethersproject/sha2@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz" - integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@^5.8.0", "@ethersproject/signing-key@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz" - integrity sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - bn.js "^5.2.1" - elliptic "6.6.1" - hash.js "1.1.7" - -"@ethersproject/solidity@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz" - integrity sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@ethersproject/strings@^5.8.0", "@ethersproject/strings@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz" - integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/transactions@^5.8.0", "@ethersproject/transactions@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz" - integrity sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg== - dependencies: - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - -"@ethersproject/units@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz" - integrity sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/wallet@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz" - integrity sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/hdnode" "^5.8.0" - "@ethersproject/json-wallets" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/wordlists" "^5.8.0" - -"@ethersproject/web@^5.8.0", "@ethersproject/web@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz" - integrity sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw== - dependencies: - "@ethersproject/base64" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@ethersproject/wordlists@^5.8.0", "@ethersproject/wordlists@5.8.0": - version "5.8.0" - resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz" - integrity sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@fastify/busboy@^2.0.0": - version "2.1.1" - resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz" - integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== - -"@humanfs/core@^0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" - integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== - -"@humanfs/node@^0.16.6": - version "0.16.7" - resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz" - integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== - dependencies: - "@humanfs/core" "^0.19.1" - "@humanwhocodes/retry" "^0.4.0" - -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== - dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2": - version "0.4.3" - resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz" - integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== - -"@ioredis/commands@1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz" - integrity sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz" - integrity sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ== - dependencies: - "@jest/types" "30.2.0" - "@types/node" "*" - chalk "^4.1.2" - jest-message-util "30.2.0" - jest-util "30.2.0" - slash "^3.0.0" - -"@jest/core@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz" - integrity sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ== - dependencies: - "@jest/console" "30.2.0" - "@jest/pattern" "30.0.1" - "@jest/reporters" "30.2.0" - "@jest/test-result" "30.2.0" - "@jest/transform" "30.2.0" - "@jest/types" "30.2.0" - "@types/node" "*" - ansi-escapes "^4.3.2" - chalk "^4.1.2" - ci-info "^4.2.0" - exit-x "^0.2.2" - graceful-fs "^4.2.11" - jest-changed-files "30.2.0" - jest-config "30.2.0" - jest-haste-map "30.2.0" - jest-message-util "30.2.0" - jest-regex-util "30.0.1" - jest-resolve "30.2.0" - jest-resolve-dependencies "30.2.0" - jest-runner "30.2.0" - jest-runtime "30.2.0" - jest-snapshot "30.2.0" - jest-util "30.2.0" - jest-validate "30.2.0" - jest-watcher "30.2.0" - micromatch "^4.0.8" - pretty-format "30.2.0" - slash "^3.0.0" - -"@jest/diff-sequences@30.0.1": - version "30.0.1" - resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz" - integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== - -"@jest/environment@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz" - integrity sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g== - dependencies: - "@jest/fake-timers" "30.2.0" - "@jest/types" "30.2.0" - "@types/node" "*" - jest-mock "30.2.0" - -"@jest/expect-utils@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz" - integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA== - dependencies: - "@jest/get-type" "30.1.0" - -"@jest/expect@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz" - integrity sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA== - dependencies: - expect "30.2.0" - jest-snapshot "30.2.0" - -"@jest/fake-timers@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz" - integrity sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw== - dependencies: - "@jest/types" "30.2.0" - "@sinonjs/fake-timers" "^13.0.0" - "@types/node" "*" - jest-message-util "30.2.0" - jest-mock "30.2.0" - jest-util "30.2.0" - -"@jest/get-type@30.1.0": - version "30.1.0" - resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz" - integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== - -"@jest/globals@^28.0.0 || ^29.0.0 || ^30.0.0", "@jest/globals@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz" - integrity sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw== - dependencies: - "@jest/environment" "30.2.0" - "@jest/expect" "30.2.0" - "@jest/types" "30.2.0" - jest-mock "30.2.0" - -"@jest/pattern@30.0.1": - version "30.0.1" - resolved "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz" - integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== - dependencies: - "@types/node" "*" - jest-regex-util "30.0.1" - -"@jest/reporters@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz" - integrity sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "30.2.0" - "@jest/test-result" "30.2.0" - "@jest/transform" "30.2.0" - "@jest/types" "30.2.0" - "@jridgewell/trace-mapping" "^0.3.25" - "@types/node" "*" - chalk "^4.1.2" - collect-v8-coverage "^1.0.2" - exit-x "^0.2.2" - glob "^10.3.10" - graceful-fs "^4.2.11" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^5.0.0" - istanbul-reports "^3.1.3" - jest-message-util "30.2.0" - jest-util "30.2.0" - jest-worker "30.2.0" - slash "^3.0.0" - string-length "^4.0.2" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@30.0.5": - version "30.0.5" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz" - integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== - dependencies: - "@sinclair/typebox" "^0.34.0" - -"@jest/snapshot-utils@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz" - integrity sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug== - dependencies: - "@jest/types" "30.2.0" - chalk "^4.1.2" - graceful-fs "^4.2.11" - natural-compare "^1.4.0" - -"@jest/source-map@30.0.1": - version "30.0.1" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz" - integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.25" - callsites "^3.1.0" - graceful-fs "^4.2.11" - -"@jest/test-result@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz" - integrity sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg== - dependencies: - "@jest/console" "30.2.0" - "@jest/types" "30.2.0" - "@types/istanbul-lib-coverage" "^2.0.6" - collect-v8-coverage "^1.0.2" - -"@jest/test-sequencer@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz" - integrity sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q== - dependencies: - "@jest/test-result" "30.2.0" - graceful-fs "^4.2.11" - jest-haste-map "30.2.0" - slash "^3.0.0" - -"@jest/transform@^29.0.0 || ^30.0.0", "@jest/transform@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz" - integrity sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA== - dependencies: - "@babel/core" "^7.27.4" - "@jest/types" "30.2.0" - "@jridgewell/trace-mapping" "^0.3.25" - babel-plugin-istanbul "^7.0.1" - chalk "^4.1.2" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.11" - jest-haste-map "30.2.0" - jest-regex-util "30.0.1" - jest-util "30.2.0" - micromatch "^4.0.8" - pirates "^4.0.7" - slash "^3.0.0" - write-file-atomic "^5.0.1" - -"@jest/types@^29.0.0 || ^30.0.0", "@jest/types@30.2.0": - version "30.2.0" - resolved "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz" - integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg== - dependencies: - "@jest/pattern" "30.0.1" - "@jest/schemas" "30.0.5" - "@types/istanbul-lib-coverage" "^2.0.6" - "@types/istanbul-reports" "^3.0.4" - "@types/node" "*" - "@types/yargs" "^17.0.33" - chalk "^4.1.2" - -"@jimp/core@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz" - integrity sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w== - dependencies: - "@jimp/file-ops" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - await-to-js "^3.0.0" - exif-parser "^0.1.12" - file-type "^16.0.0" - mime "3" - -"@jimp/diff@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz" - integrity sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw== - dependencies: - "@jimp/plugin-resize" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - pixelmatch "^5.3.0" - -"@jimp/file-ops@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz" - integrity sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ== - -"@jimp/js-bmp@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz" - integrity sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - bmp-ts "^1.0.9" - -"@jimp/js-gif@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz" - integrity sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/types" "1.6.0" - gifwrap "^0.10.1" - omggif "^1.0.10" - -"@jimp/js-jpeg@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz" - integrity sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/types" "1.6.0" - jpeg-js "^0.4.4" - -"@jimp/js-png@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz" - integrity sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/types" "1.6.0" - pngjs "^7.0.0" - -"@jimp/js-tiff@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz" - integrity sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/types" "1.6.0" - utif2 "^4.1.0" - -"@jimp/plugin-blit@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz" - integrity sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA== - dependencies: - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-blur@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz" - integrity sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/utils" "1.6.0" - -"@jimp/plugin-circle@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz" - integrity sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw== - dependencies: - "@jimp/types" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-color@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz" - integrity sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - tinycolor2 "^1.6.0" - zod "^3.23.8" - -"@jimp/plugin-contain@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz" - integrity sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/plugin-blit" "1.6.0" - "@jimp/plugin-resize" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-cover@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz" - integrity sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/plugin-crop" "1.6.0" - "@jimp/plugin-resize" "1.6.0" - "@jimp/types" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-crop@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz" - integrity sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-displace@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz" - integrity sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q== - dependencies: - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-dither@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz" - integrity sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ== - dependencies: - "@jimp/types" "1.6.0" - -"@jimp/plugin-fisheye@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz" - integrity sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA== - dependencies: - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-flip@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz" - integrity sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg== - dependencies: - "@jimp/types" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-hash@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz" - integrity sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/js-bmp" "1.6.0" - "@jimp/js-jpeg" "1.6.0" - "@jimp/js-png" "1.6.0" - "@jimp/js-tiff" "1.6.0" - "@jimp/plugin-color" "1.6.0" - "@jimp/plugin-resize" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - any-base "^1.1.0" - -"@jimp/plugin-mask@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz" - integrity sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA== - dependencies: - "@jimp/types" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-print@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz" - integrity sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/js-jpeg" "1.6.0" - "@jimp/js-png" "1.6.0" - "@jimp/plugin-blit" "1.6.0" - "@jimp/types" "1.6.0" - parse-bmfont-ascii "^1.0.6" - parse-bmfont-binary "^1.0.6" - parse-bmfont-xml "^1.1.6" - simple-xml-to-json "^1.2.2" - zod "^3.23.8" - -"@jimp/plugin-quantize@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz" - integrity sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg== - dependencies: - image-q "^4.0.0" - zod "^3.23.8" - -"@jimp/plugin-resize@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz" - integrity sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/types" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-rotate@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz" - integrity sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/plugin-crop" "1.6.0" - "@jimp/plugin-resize" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - zod "^3.23.8" - -"@jimp/plugin-threshold@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz" - integrity sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/plugin-color" "1.6.0" - "@jimp/plugin-hash" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - zod "^3.23.8" - -"@jimp/types@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz" - integrity sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg== - dependencies: - zod "^3.23.8" - -"@jimp/utils@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz" - integrity sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA== - dependencies: - "@jimp/types" "1.6.0" - tinycolor2 "^1.6.0" - -"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": - version "0.3.13" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" - integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/remapping@^2.3.5": - version "2.3.5" - resolved "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" - integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/source-map@^0.3.3": - version "0.3.11" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz" - integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.5" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" - integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": - version "0.3.31" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" - integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@ljharb/through@^2.3.12": - version "2.3.14" - resolved "https://registry.npmjs.org/@ljharb/through/-/through-2.3.14.tgz" - integrity sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A== - dependencies: - call-bind "^1.0.8" - -"@lukeed/csprng@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz" - integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== - -"@mantle/backend@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/backend": - version "0.0.1" - resolved "file:packages/backend" - dependencies: - "@mantle/contracts" "*" - "@nestjs/bullmq" "^11.0.4" - "@nestjs/common" "^10.0.0" - "@nestjs/config" "^4.0.2" - "@nestjs/core" "^10.0.0" - "@nestjs/jwt" "^11.0.2" - "@nestjs/mongoose" "^11.0.4" - "@nestjs/passport" "^11.0.5" - "@nestjs/platform-express" "^10.0.0" - "@nestjs/schedule" "^6.1.0" - "@nestjs/swagger" "^7.4.2" - "@octokit/rest" "^22.0.1" - "@openassets/types" "*" - "@stellar/stellar-sdk" "^14.5.0" - "@types/multer" "^2.0.0" - "@types/pdf-parse" "^1.1.5" - "@types/xml2js" "^0.4.14" - axios "^1.6.0" - bullmq "^5.66.2" - class-transformer "^0.5.1" - class-validator "^0.14.3" - fast-levenshtein "^3.0.0" - ioredis "^5.8.2" - jimp "^1.6.0" - jsqr "^1.4.0" - mongoose "^9.0.2" - passport "^0.7.0" - passport-jwt "^4.0.1" - pdf-parse "^2.4.5" - reflect-metadata "^0.1.13" - rxjs "^7.8.1" - swagger-ui-express "^5.0.1" - uuid "^13.0.0" - viem "^2.43.2" - xml2js "^0.6.2" - -"@mantle/contracts@*", "@mantle/contracts@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/contracts": - version "1.0.0" - resolved "file:packages/contracts" - dependencies: - "@openzeppelin/contracts" "5.4.0" - -"@mantle/stellar-contracts@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/stellar-contracts": - version "1.0.0" - resolved "file:packages/stellar-contracts" - -"@microsoft/tsdoc@^0.15.0": - version "0.15.1" - resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz" - integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw== - -"@mongodb-js/saslprep@^1.3.0": - version "1.4.4" - resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.4.tgz" - integrity sha512-p7X/ytJDIdwUfFL/CLOhKgdfJe1Fa8uw9seJYvdOmnP9JBWGWHW69HkOixXS6Wy9yvGf1MbhcS6lVmrhy4jm2g== - dependencies: - sparse-bitfield "^3.0.3" - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz" - integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== - -"@napi-rs/canvas-darwin-arm64@0.1.80": - version "0.1.80" - resolved "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.80.tgz" - integrity sha512-O64APRTXRUiAz0P8gErkfEr3lipLJgM6pjATwavZ22ebhjYl/SUbpgM0xcWPQBNMP1n29afAC/Us5PX1vg+JNQ== - -"@napi-rs/canvas-darwin-arm64@0.1.85": - version "0.1.85" - -"@napi-rs/canvas@^0.1.80": - version "0.1.85" - optionalDependencies: - "@napi-rs/canvas-android-arm64" "0.1.85" - "@napi-rs/canvas-darwin-arm64" "0.1.85" - "@napi-rs/canvas-darwin-x64" "0.1.85" - "@napi-rs/canvas-linux-arm-gnueabihf" "0.1.85" - "@napi-rs/canvas-linux-arm64-gnu" "0.1.85" - "@napi-rs/canvas-linux-arm64-musl" "0.1.85" - "@napi-rs/canvas-linux-riscv64-gnu" "0.1.85" - "@napi-rs/canvas-linux-x64-gnu" "0.1.85" - "@napi-rs/canvas-linux-x64-musl" "0.1.85" - "@napi-rs/canvas-win32-arm64-msvc" "0.1.85" - "@napi-rs/canvas-win32-x64-msvc" "0.1.85" - -"@napi-rs/canvas@0.1.80": - version "0.1.80" - resolved "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.80.tgz" - integrity sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww== - optionalDependencies: - "@napi-rs/canvas-android-arm64" "0.1.80" - "@napi-rs/canvas-darwin-arm64" "0.1.80" - "@napi-rs/canvas-darwin-x64" "0.1.80" - "@napi-rs/canvas-linux-arm-gnueabihf" "0.1.80" - "@napi-rs/canvas-linux-arm64-gnu" "0.1.80" - "@napi-rs/canvas-linux-arm64-musl" "0.1.80" - "@napi-rs/canvas-linux-riscv64-gnu" "0.1.80" - "@napi-rs/canvas-linux-x64-gnu" "0.1.80" - "@napi-rs/canvas-linux-x64-musl" "0.1.80" - "@napi-rs/canvas-win32-x64-msvc" "0.1.80" - -"@nestjs/bull-shared@^11.0.4": - version "11.0.4" - resolved "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.4.tgz" - integrity sha512-VBJcDHSAzxQnpcDfA0kt9MTGUD1XZzfByV70su0W0eDCQ9aqIEBlzWRW21tv9FG9dIut22ysgDidshdjlnczLw== - dependencies: - tslib "2.8.1" - -"@nestjs/bullmq@^11.0.4": - version "11.0.4" - resolved "https://registry.npmjs.org/@nestjs/bullmq/-/bullmq-11.0.4.tgz" - integrity sha512-wBzK9raAVG0/6NTMdvLGM4/FQ1lsB35/pYS8L6a0SDgkTiLpd7mAjQ8R692oMx5s7IjvgntaZOuTUrKYLNfIkA== - dependencies: - "@nestjs/bull-shared" "^11.0.4" - tslib "2.8.1" - -"@nestjs/cli@^10.0.0": - version "10.4.9" - resolved "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.9.tgz" - integrity sha512-s8qYd97bggqeK7Op3iD49X2MpFtW4LVNLAwXFkfbRxKME6IYT7X0muNTJ2+QfI8hpbNx9isWkrLWIp+g5FOhiA== - dependencies: - "@angular-devkit/core" "17.3.11" - "@angular-devkit/schematics" "17.3.11" - "@angular-devkit/schematics-cli" "17.3.11" - "@nestjs/schematics" "^10.0.1" - chalk "4.1.2" - chokidar "3.6.0" - cli-table3 "0.6.5" - commander "4.1.1" - fork-ts-checker-webpack-plugin "9.0.2" - glob "10.4.5" - inquirer "8.2.6" - node-emoji "1.11.0" - ora "5.4.1" - tree-kill "1.2.2" - tsconfig-paths "4.2.0" - tsconfig-paths-webpack-plugin "4.2.0" - typescript "5.7.2" - webpack "5.97.1" - webpack-node-externals "3.0.0" - -"@nestjs/common@^10.0.0", "@nestjs/common@^10.0.0 || ^11.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", "@nestjs/common@^9.0.0 || ^10.0.0": - version "10.4.20" - resolved "https://registry.npmjs.org/@nestjs/common/-/common-10.4.20.tgz" - integrity sha512-hxJxZF7jcKGuUzM9EYbuES80Z/36piJbiqmPy86mk8qOn5gglFebBTvcx7PWVbRNSb4gngASYnefBj/Y2HAzpQ== - dependencies: - file-type "20.4.1" - iterare "1.2.1" - tslib "2.8.1" - uid "2.0.2" - -"@nestjs/config@^4.0.2": - version "4.0.2" - resolved "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz" - integrity sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA== - dependencies: - dotenv "16.4.7" - dotenv-expand "12.0.1" - lodash "4.17.21" - -"@nestjs/core@^10.0.0", "@nestjs/core@^10.0.0 || ^11.0.0", "@nestjs/core@^9.0.0 || ^10.0.0": - version "10.4.20" - resolved "https://registry.npmjs.org/@nestjs/core/-/core-10.4.20.tgz" - integrity sha512-kRdtyKA3+Tu70N3RQ4JgmO1E3LzAMs/eppj7SfjabC7TgqNWoS4RLhWl4BqmsNVmjj6D5jgfPVtHtgYkU3AfpQ== - dependencies: - "@nuxtjs/opencollective" "0.3.2" - fast-safe-stringify "2.1.1" - iterare "1.2.1" - path-to-regexp "3.3.0" - tslib "2.8.1" - uid "2.0.2" - -"@nestjs/jwt@^11.0.2": - version "11.0.2" - resolved "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.2.tgz" - integrity sha512-rK8aE/3/Ma45gAWfCksAXUNbOoSOUudU0Kn3rT39htPF7wsYXtKfjALKeKKJbFrIWbLjsbqfXX5bIJNvgBugGA== - dependencies: - "@types/jsonwebtoken" "9.0.10" - jsonwebtoken "9.0.3" - -"@nestjs/mapped-types@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz" - integrity sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg== - -"@nestjs/mongoose@^11.0.4": - version "11.0.4" - resolved "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-11.0.4.tgz" - integrity sha512-LUOlUeSOfbjdIu22QwOmczv2CzJQr9LUBo2mOfbXrGCu2svpr5Hiu71zBFrb/9UC+H8BjGMKbBOq1nEbMF6ZJA== - -"@nestjs/passport@^11.0.5": - version "11.0.5" - resolved "https://registry.npmjs.org/@nestjs/passport/-/passport-11.0.5.tgz" - integrity sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ== - -"@nestjs/platform-express@^10.0.0": - version "10.4.20" - resolved "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.20.tgz" - integrity sha512-rh97mX3rimyf4xLMLHuTOBKe6UD8LOJ14VlJ1F/PTd6C6ZK9Ak6EHuJvdaGcSFQhd3ZMBh3I6CuujKGW9pNdIg== - dependencies: - body-parser "1.20.3" - cors "2.8.5" - express "4.21.2" - multer "2.0.2" - tslib "2.8.1" - -"@nestjs/schedule@^6.1.0": - version "6.1.0" - resolved "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.0.tgz" - integrity sha512-W25Ydc933Gzb1/oo7+bWzzDiOissE+h/dhIAPugA39b9MuIzBbLybuXpc1AjoQLczO3v0ldmxaffVl87W0uqoQ== - dependencies: - cron "4.3.5" - -"@nestjs/schematics@^10.0.0": - version "10.2.3" - resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz" - integrity sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg== - dependencies: - "@angular-devkit/core" "17.3.11" - "@angular-devkit/schematics" "17.3.11" - comment-json "4.2.5" - jsonc-parser "3.3.1" - pluralize "8.0.0" - -"@nestjs/schematics@^10.0.1": - version "10.2.3" - resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz" - integrity sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg== - dependencies: - "@angular-devkit/core" "17.3.11" - "@angular-devkit/schematics" "17.3.11" - comment-json "4.2.5" - jsonc-parser "3.3.1" - pluralize "8.0.0" - -"@nestjs/swagger@^7.4.2": - version "7.4.2" - resolved "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.4.2.tgz" - integrity sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ== - dependencies: - "@microsoft/tsdoc" "^0.15.0" - "@nestjs/mapped-types" "2.0.5" - js-yaml "4.1.0" - lodash "4.17.21" - path-to-regexp "3.3.0" - swagger-ui-dist "5.17.14" - -"@nestjs/testing@^10.0.0": - version "10.4.20" - resolved "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.20.tgz" - integrity sha512-nMkRDukDKskdPruM6EsgMq7yJua+CPZM6I6FrLP8yXw8BiVSPv9Nm0CtcGGwt3kgZF9hfxKjGqLjsvVBsv6Vfw== - dependencies: - tslib "2.8.1" - -"@noble/ciphers@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz" - integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== - -"@noble/curves@^1.9.6": - version "1.9.7" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz" - integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/curves@~1.4.0", "@noble/curves@1.4.2": - version "1.4.2" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz" - integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== - dependencies: - "@noble/hashes" "1.4.0" - -"@noble/curves@~1.8.1": - version "1.8.2" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz" - integrity sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g== - dependencies: - "@noble/hashes" "1.7.2" - -"@noble/curves@~1.9.0": - version "1.9.7" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz" - integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/curves@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz" - integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== - dependencies: - "@noble/hashes" "1.3.2" - -"@noble/curves@1.9.1": - version "1.9.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz" - integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/hashes@^1.1.5", "@noble/hashes@^1.2.0", "@noble/hashes@^1.4.0", "@noble/hashes@^1.8.0", "@noble/hashes@~1.8.0", "@noble/hashes@1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@noble/hashes@~1.2.0", "@noble/hashes@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" - integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== - -"@noble/hashes@~1.4.0", "@noble/hashes@1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - -"@noble/hashes@~1.7.1", "@noble/hashes@1.7.2": - version "1.7.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz" - integrity sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ== - -"@noble/hashes@1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== - -"@noble/secp256k1@~1.7.0": - version "1.7.2" - resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.2.tgz" - integrity sha512-/qzwYl5eFLH8OWIecQWM31qld2g1NfjgylK+TNhqtaUKP37Nm+Y+z30Fjhw0Ct8p9yCQEm2N3W/AckdIb3SMcQ== - -"@noble/secp256k1@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" - integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nomicfoundation/edr-darwin-arm64@0.12.0-next.17": - version "0.12.0-next.17" - -"@nomicfoundation/edr-darwin-x64@0.12.0-next.17": - version "0.12.0-next.17" - -"@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.17": - version "0.12.0-next.17" - -"@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.17": - version "0.12.0-next.17" - -"@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.17": - version "0.12.0-next.17" - -"@nomicfoundation/edr-linux-x64-musl@0.12.0-next.17": - version "0.12.0-next.17" - -"@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.17": - version "0.12.0-next.17" - -"@nomicfoundation/edr@0.12.0-next.17": - version "0.12.0-next.17" - dependencies: - "@nomicfoundation/edr-darwin-arm64" "0.12.0-next.17" - "@nomicfoundation/edr-darwin-x64" "0.12.0-next.17" - "@nomicfoundation/edr-linux-arm64-gnu" "0.12.0-next.17" - "@nomicfoundation/edr-linux-arm64-musl" "0.12.0-next.17" - "@nomicfoundation/edr-linux-x64-gnu" "0.12.0-next.17" - "@nomicfoundation/edr-linux-x64-musl" "0.12.0-next.17" - "@nomicfoundation/edr-win32-x64-msvc" "0.12.0-next.17" - -"@nomicfoundation/hardhat-chai-matchers@^2.0.0", "@nomicfoundation/hardhat-chai-matchers@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.1.0.tgz" - integrity sha512-GPhBNafh1fCnVD9Y7BYvoLnblnvfcq3j8YDbO1gGe/1nOFWzGmV7gFu5DkwFXF+IpYsS+t96o9qc/mPu3V3Vfw== - dependencies: - "@types/chai-as-promised" "^7.1.3" - chai-as-promised "^7.1.1" - deep-eql "^4.0.1" - ordinal "^1.0.3" - -"@nomicfoundation/hardhat-errors@^3.0.0": - version "3.0.6" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.6.tgz" - integrity sha512-3x+OVdZv7Rgy3z6os9pB6kiHLxs6q0PCXHRu+WLZflr44PG9zW+7V9o+ehrUqmmivlHcIFr3Qh4M2wZVuoCYww== - dependencies: - "@nomicfoundation/hardhat-utils" "^3.0.1" - -"@nomicfoundation/hardhat-ethers@^3.0.0", "@nomicfoundation/hardhat-ethers@^3.0.8", "@nomicfoundation/hardhat-ethers@^3.1.0": - version "3.1.3" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.1.3.tgz" - integrity sha512-208JcDeVIl+7Wu3MhFUUtiA8TJ7r2Rn3Wr+lSx9PfsDTKkbsAsWPY6N6wQ4mtzDv0/pB9nIbJhkjoHe1EsgNsA== - dependencies: - debug "^4.1.1" - lodash.isequal "^4.5.0" - -"@nomicfoundation/hardhat-network-helpers@^1.0.0", "@nomicfoundation/hardhat-network-helpers@^1.0.12": - version "1.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.1.2.tgz" - integrity sha512-p7HaUVDbLj7ikFivQVNhnfMHUBgiHYMwQWvGn9AriieuopGOELIrwj2KjyM2a6z70zai5YKO264Vwz+3UFJZPQ== - dependencies: - ethereumjs-util "^7.1.4" - -"@nomicfoundation/hardhat-toolbox@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-3.0.0.tgz" - integrity sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA== - -"@nomicfoundation/hardhat-utils@^3.0.1", "@nomicfoundation/hardhat-utils@^3.0.5": - version "3.0.5" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.5.tgz" - integrity sha512-5zkQSuSxkwK7fQxKswJ1GGc/3AuWBSmxA7GhczTPLx28dAXQnubRU8nA48SkCkKesJq5x4TROP+XheSE2VkLUA== - dependencies: - "@streamparser/json-node" "^0.0.22" - debug "^4.3.2" - env-paths "^2.2.0" - ethereum-cryptography "^2.2.1" - fast-equals "^5.0.1" - json-stream-stringify "^3.1.6" - rfdc "^1.3.1" - undici "^6.16.1" - -"@nomicfoundation/hardhat-verify@^1.0.0", "@nomicfoundation/hardhat-verify@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-1.1.1.tgz" - integrity sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA== - dependencies: - "@ethersproject/abi" "^5.1.2" - "@ethersproject/address" "^5.0.2" - cbor "^8.1.0" - chalk "^2.4.2" - debug "^4.1.1" - lodash.clonedeep "^4.5.0" - semver "^6.3.0" - table "^6.8.0" - undici "^5.14.0" - -"@nomicfoundation/hardhat-viem@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-viem/-/hardhat-viem-3.0.1.tgz" - integrity sha512-sUyi3Xn31vItf925YRgHp7x6FIFfG9B+jacWYyJ0RBi7BWCrC/aSUX4jRRmpzaZ4opLQ8KXAZdxS91Yka7AYtw== - dependencies: - "@nomicfoundation/hardhat-errors" "^3.0.0" - "@nomicfoundation/hardhat-utils" "^3.0.5" - -"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz" - integrity sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw== - -"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz" - integrity sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw== - -"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz" - integrity sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA== - -"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz" - integrity sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA== - -"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz" - integrity sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g== - -"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz" - integrity sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg== - -"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz" - integrity sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA== - -"@nomicfoundation/solidity-analyzer@^0.1.0": - version "0.1.2" - resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz" - integrity sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA== - optionalDependencies: - "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.2" - "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.2" - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.2" - "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.2" - "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.2" - "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.2" - "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.2" - -"@nuxtjs/opencollective@0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" - integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== - dependencies: - chalk "^4.1.0" - consola "^2.15.0" - node-fetch "^2.6.1" - -"@octokit/auth-token@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz" - integrity sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w== - -"@octokit/core@^7.0.6", "@octokit/core@>=6": - version "7.0.6" - resolved "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz" - integrity sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q== - dependencies: - "@octokit/auth-token" "^6.0.0" - "@octokit/graphql" "^9.0.3" - "@octokit/request" "^10.0.6" - "@octokit/request-error" "^7.0.2" - "@octokit/types" "^16.0.0" - before-after-hook "^4.0.0" - universal-user-agent "^7.0.0" - -"@octokit/endpoint@^11.0.2": - version "11.0.2" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz" - integrity sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ== - dependencies: - "@octokit/types" "^16.0.0" - universal-user-agent "^7.0.2" - -"@octokit/graphql@^9.0.3": - version "9.0.3" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz" - integrity sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA== - dependencies: - "@octokit/request" "^10.0.6" - "@octokit/types" "^16.0.0" - universal-user-agent "^7.0.0" - -"@octokit/openapi-types@^27.0.0": - version "27.0.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz" - integrity sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA== - -"@octokit/plugin-paginate-rest@^14.0.0": - version "14.0.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz" - integrity sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw== - dependencies: - "@octokit/types" "^16.0.0" - -"@octokit/plugin-request-log@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz" - integrity sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q== - -"@octokit/plugin-rest-endpoint-methods@^17.0.0": - version "17.0.0" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz" - integrity sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw== - dependencies: - "@octokit/types" "^16.0.0" - -"@octokit/request-error@^7.0.2": - version "7.1.0" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz" - integrity sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw== - dependencies: - "@octokit/types" "^16.0.0" - -"@octokit/request@^10.0.6": - version "10.0.7" - resolved "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz" - integrity sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA== - dependencies: - "@octokit/endpoint" "^11.0.2" - "@octokit/request-error" "^7.0.2" - "@octokit/types" "^16.0.0" - fast-content-type-parse "^3.0.0" - universal-user-agent "^7.0.2" - -"@octokit/rest@^22.0.1": - version "22.0.1" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz" - integrity sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw== - dependencies: - "@octokit/core" "^7.0.6" - "@octokit/plugin-paginate-rest" "^14.0.0" - "@octokit/plugin-request-log" "^6.0.0" - "@octokit/plugin-rest-endpoint-methods" "^17.0.0" - -"@octokit/types@^16.0.0": - version "16.0.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz" - integrity sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg== - dependencies: - "@octokit/openapi-types" "^27.0.0" - -"@openassets/types@*", "@openassets/types@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/types": - version "1.0.0" - resolved "file:packages/types" - -"@openzeppelin/contracts@5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz" - integrity sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A== - -"@paralleldrive/cuid2@^2.2.2": - version "2.3.1" - resolved "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz" - integrity sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw== - dependencies: - "@noble/hashes" "^1.1.5" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/core@^0.2.9": - version "0.2.9" - resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz" - integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== - -"@scure/base@~1.1.0", "@scure/base@~1.1.6": - version "1.1.9" - resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz" - integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== - -"@scure/base@~1.2.5": - version "1.2.6" - resolved "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz" - integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== - -"@scure/bip32@^1.7.0", "@scure/bip32@1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz" - integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== - dependencies: - "@noble/curves" "~1.9.0" - "@noble/hashes" "~1.8.0" - "@scure/base" "~1.2.5" - -"@scure/bip32@1.1.5": - version "1.1.5" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz" - integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== - dependencies: - "@noble/hashes" "~1.2.0" - "@noble/secp256k1" "~1.7.0" - "@scure/base" "~1.1.0" - -"@scure/bip32@1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz" - integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== - dependencies: - "@noble/curves" "~1.4.0" - "@noble/hashes" "~1.4.0" - "@scure/base" "~1.1.6" - -"@scure/bip39@^1.6.0", "@scure/bip39@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz" - integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== - dependencies: - "@noble/hashes" "~1.8.0" - "@scure/base" "~1.2.5" - -"@scure/bip39@1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz" - integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== - dependencies: - "@noble/hashes" "~1.2.0" - "@scure/base" "~1.1.0" - -"@scure/bip39@1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz" - integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== - dependencies: - "@noble/hashes" "~1.4.0" - "@scure/base" "~1.1.6" - -"@sentry/core@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" - integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/minimal" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/hub@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" - integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== - dependencies: - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/minimal@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" - integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/types" "5.30.0" - tslib "^1.9.3" - -"@sentry/node@^5.18.1": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" - integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== - dependencies: - "@sentry/core" "5.30.0" - "@sentry/hub" "5.30.0" - "@sentry/tracing" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" - -"@sentry/tracing@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz" - integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/minimal" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/types@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" - integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== - -"@sentry/utils@5.30.0": - version "5.30.0" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" - integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== - dependencies: - "@sentry/types" "5.30.0" - tslib "^1.9.3" - -"@sinclair/typebox@^0.34.0": - version "0.34.41" - -"@sinonjs/commons@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^13.0.0": - version "13.0.5" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz" - integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== - dependencies: - "@sinonjs/commons" "^3.0.1" - -"@solidity-parser/parser@^0.14.0": - version "0.14.5" - resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz" - integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== - dependencies: - antlr4ts "^0.5.0-alpha.4" - -"@solidity-parser/parser@^0.20.1": - version "0.20.2" - resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz" - integrity sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA== - -"@stellar/js-xdr@^3.1.2": - version "3.1.2" - resolved "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.2.tgz" - integrity sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ== - -"@stellar/stellar-base@^14.0.4": - version "14.0.4" - resolved "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-14.0.4.tgz" - integrity sha512-UbNW6zbdOBXJwLAV2mMak0bIC9nw3IZVlQXkv2w2dk1jgCbJjy3oRVC943zeGE5JAm0Z9PHxrIjmkpGhayY7kw== - dependencies: - "@noble/curves" "^1.9.6" - "@stellar/js-xdr" "^3.1.2" - base32.js "^0.1.0" - bignumber.js "^9.3.1" - buffer "^6.0.3" - sha.js "^2.4.12" - -"@stellar/stellar-sdk@^14.5.0": - version "14.5.0" - resolved "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-14.5.0.tgz" - integrity sha512-Uzjq+An/hUA+Q5ERAYPtT0+MMiwWnYYWMwozmZMjxjdL2MmSjucBDF8Q04db6K/ekU4B5cHuOfsdlrfaxQYblw== - dependencies: - "@stellar/stellar-base" "^14.0.4" - axios "^1.13.3" - bignumber.js "^9.3.1" - commander "^14.0.2" - eventsource "^2.0.2" - feaxios "^0.0.23" - randombytes "^2.1.0" - toml "^3.0.0" - urijs "^1.19.1" - -"@streamparser/json-node@^0.0.22": - version "0.0.22" - resolved "https://registry.npmjs.org/@streamparser/json-node/-/json-node-0.0.22.tgz" - integrity sha512-sJT2ptNRwqB1lIsQrQlCoWk5rF4tif9wDh+7yluAGijJamAhrHGYpFB/Zg3hJeceoZypi74ftXk8DHzwYpbZSg== - dependencies: - "@streamparser/json" "^0.0.22" - -"@streamparser/json@^0.0.22": - version "0.0.22" - resolved "https://registry.npmjs.org/@streamparser/json/-/json-0.0.22.tgz" - integrity sha512-b6gTSBjJ8G8SuO3Gbbj+zXbVx8NSs1EbpbMKpzGLWMdkR+98McH9bEjSz3+0mPJf68c5nxa3CrJHp5EQNXM6zQ== - -"@tokenizer/inflate@^0.2.6": - version "0.2.7" - resolved "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz" - integrity sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg== - dependencies: - debug "^4.4.0" - fflate "^0.8.2" - token-types "^6.0.0" - -"@tokenizer/token@^0.3.0": - version "0.3.0" - resolved "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz" - integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== - -"@tsconfig/node10@^1.0.7": - version "1.0.12" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz" - integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@typechain/ethers-v6@^0.4.0", "@typechain/ethers-v6@^0.4.3", "@typechain/ethers-v6@^0.5.1": - version "0.5.1" - resolved "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz" - integrity sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@typechain/hardhat@^8.0.0": - version "8.0.3" - resolved "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-8.0.3.tgz" - integrity sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng== - dependencies: - fs-extra "^9.1.0" - -"@types/babel__core@^7.20.5": - version "7.20.5" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.27.0" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" - integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.28.0" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz" - integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== - dependencies: - "@babel/types" "^7.28.2" - -"@types/bn.js@^5.1.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz" - integrity sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q== - dependencies: - "@types/node" "*" - -"@types/body-parser@*": - version "1.19.6" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz" - integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/chai-as-promised@^7.1.3": - version "7.1.8" - resolved "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz" - integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== - dependencies: - "@types/chai" "*" - -"@types/chai@*": - version "5.2.3" - resolved "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz" - integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== - dependencies: - "@types/deep-eql" "*" - assertion-error "^2.0.1" - -"@types/chai@^4.2.0", "@types/chai@^4.3.11": - version "4.3.20" - resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz" - integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== - -"@types/concat-stream@^1.6.0": - version "1.6.1" - resolved "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz" - integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== - dependencies: - "@types/node" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/cookiejar@^2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz" - integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== - -"@types/deep-eql@*": - version "4.0.2" - resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz" - integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== - -"@types/eslint-scope@^3.7.7": - version "3.7.7" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@>=8.0.0": - version "9.6.1" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz" - integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.6", "@types/estree@^1.0.8": - version "1.0.8" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - -"@types/express-serve-static-core@^4.17.33": - version "4.19.7" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz" - integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express-serve-static-core@^5.0.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz" - integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@*": - version "5.0.6" - resolved "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz" - integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^5.0.0" - "@types/serve-static" "^2" - -"@types/express@^4.17.17": - version "4.17.25" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz" - integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "^1" - -"@types/form-data@0.0.33": - version "0.0.33" - resolved "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz" - integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/http-errors@*": - version "2.0.5" - resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz" - integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": - version "2.0.6" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.4": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^30.0.0": - version "30.0.0" - resolved "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz" - integrity sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA== - dependencies: - expect "^30.0.0" - pretty-format "^30.0.0" - -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/jsonwebtoken@*", "@types/jsonwebtoken@9.0.10": - version "9.0.10" - resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz" - integrity sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA== - dependencies: - "@types/ms" "*" - "@types/node" "*" - -"@types/luxon@~3.7.0": - version "3.7.1" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz" - integrity sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg== - -"@types/methods@^1.1.4": - version "1.1.4" - resolved "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz" - integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@types/minimatch@*": - version "5.1.2" - -"@types/mocha@^10.0.10", "@types/mocha@>=9.1.0": - version "10.0.10" - resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz" - integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== - -"@types/ms@*": - version "2.1.0" - resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz" - integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== - -"@types/multer@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/multer/-/multer-2.0.0.tgz" - integrity sha512-C3Z9v9Evij2yST3RSBktxP9STm6OdMc5uR1xF1SGr98uv8dUlAL2hqwrZ3GVB3uyMyiegnscEK6PGtYvNrjTjw== - dependencies: - "@types/express" "*" - -"@types/node@*", "@types/node@^25.0.3", "@types/node@>=12.0.0": - version "25.0.3" - resolved "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz" - integrity sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA== - dependencies: - undici-types "~7.16.0" - -"@types/node@^10.0.3": - version "10.17.60" - resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - -"@types/node@^20.0.0": - version "20.19.33" - resolved "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz" - integrity sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw== - dependencies: - undici-types "~6.21.0" - -"@types/node@^20.3.1": - version "20.19.27" - resolved "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz" - integrity sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug== - dependencies: - undici-types "~6.21.0" - -"@types/node@^8.0.0": - version "8.10.66" - resolved "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" - integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== - -"@types/node@16.9.1": - version "16.9.1" - resolved "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz" - integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== - -"@types/node@22.7.5": - version "22.7.5" - resolved "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz" - integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== - dependencies: - undici-types "~6.19.2" - -"@types/passport-jwt@^4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-4.0.1.tgz" - integrity sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ== - dependencies: - "@types/jsonwebtoken" "*" - "@types/passport-strategy" "*" - -"@types/passport-strategy@*": - version "0.2.38" - resolved "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.38.tgz" - integrity sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA== - dependencies: - "@types/express" "*" - "@types/passport" "*" - -"@types/passport@*", "@types/passport@^1.0.17": - version "1.0.17" - resolved "https://registry.npmjs.org/@types/passport/-/passport-1.0.17.tgz" - integrity sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg== - dependencies: - "@types/express" "*" - -"@types/pbkdf2@^3.0.0": - version "3.1.2" - resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz" - integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== - dependencies: - "@types/node" "*" - -"@types/pdf-parse@^1.1.5": - version "1.1.5" - resolved "https://registry.npmjs.org/@types/pdf-parse/-/pdf-parse-1.1.5.tgz" - integrity sha512-kBfrSXsloMnUJOKi25s3+hRmkycHfLK6A09eRGqF/N8BkQoPUmaCr+q8Cli5FnfohEz/rsv82zAiPz/LXtOGhA== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.7.3" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/qs@*", "@types/qs@^6.2.31": - version "6.14.0" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz" - integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/secp256k1@^4.0.1": - version "4.0.7" - resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.7.tgz" - integrity sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw== - dependencies: - "@types/node" "*" - -"@types/semver@^7.5.0": - version "7.7.1" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz" - integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== - -"@types/send@*": - version "1.2.1" - resolved "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz" - integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== - dependencies: - "@types/node" "*" - -"@types/send@<1": - version "0.17.6" - resolved "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz" - integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@^1": - version "1.15.10" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz" - integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "<1" - -"@types/serve-static@^2": - version "2.2.0" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz" - integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - -"@types/stack-utils@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/superagent@^8.1.0": - version "8.1.9" - resolved "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz" - integrity sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ== - dependencies: - "@types/cookiejar" "^2.1.5" - "@types/methods" "^1.1.4" - "@types/node" "*" - form-data "^4.0.0" - -"@types/supertest@^6.0.3": - version "6.0.3" - resolved "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz" - integrity sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w== - dependencies: - "@types/methods" "^1.1.4" - "@types/superagent" "^8.1.0" - -"@types/uuid@^11.0.0": - version "11.0.0" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-11.0.0.tgz" - integrity sha512-HVyk8nj2m+jcFRNazzqyVKiZezyhDKrGUA3jlEcg/nZ6Ms+qHwocba1Y/AaVaznJTAM9xpdFSh+ptbNrhOGvZA== - dependencies: - uuid "*" - -"@types/validator@^13.15.3": - version "13.15.10" - resolved "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz" - integrity sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA== - -"@types/webidl-conversions@*": - version "7.0.3" - resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz" - integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== - -"@types/whatwg-url@^13.0.0": - version "13.0.0" - resolved "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-13.0.0.tgz" - integrity sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q== - dependencies: - "@types/webidl-conversions" "*" - -"@types/xml2js@^0.4.14": - version "0.4.14" - resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz" - integrity sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.33": - version "17.0.35" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz" - integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.0.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/eslint-plugin@^8.50.0", "@typescript-eslint/eslint-plugin@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz" - integrity sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw== - dependencies: - "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.56.0" - "@typescript-eslint/type-utils" "8.56.0" - "@typescript-eslint/utils" "8.56.0" - "@typescript-eslint/visitor-keys" "8.56.0" - ignore "^7.0.5" - natural-compare "^1.4.0" - ts-api-utils "^2.4.0" - -"@typescript-eslint/parser@^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/parser@^8.50.0", "@typescript-eslint/parser@^8.56.0", "@typescript-eslint/parser@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz" - integrity sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg== - dependencies: - "@typescript-eslint/scope-manager" "8.56.0" - "@typescript-eslint/types" "8.56.0" - "@typescript-eslint/typescript-estree" "8.56.0" - "@typescript-eslint/visitor-keys" "8.56.0" - debug "^4.4.3" - -"@typescript-eslint/project-service@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz" - integrity sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg== - dependencies: - "@typescript-eslint/tsconfig-utils" "^8.56.0" - "@typescript-eslint/types" "^8.56.0" - debug "^4.4.3" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/scope-manager@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz" - integrity sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w== - dependencies: - "@typescript-eslint/types" "8.56.0" - "@typescript-eslint/visitor-keys" "8.56.0" - -"@typescript-eslint/tsconfig-utils@^8.56.0", "@typescript-eslint/tsconfig-utils@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz" - integrity sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg== - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/type-utils@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz" - integrity sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA== - dependencies: - "@typescript-eslint/types" "8.56.0" - "@typescript-eslint/typescript-estree" "8.56.0" - "@typescript-eslint/utils" "8.56.0" - debug "^4.4.3" - ts-api-utils "^2.4.0" - -"@typescript-eslint/types@^8.56.0", "@typescript-eslint/types@8.50.0", "@typescript-eslint/types@8.56.0": - version "8.50.0" - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/typescript-estree@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz" - integrity sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q== - dependencies: - "@typescript-eslint/project-service" "8.56.0" - "@typescript-eslint/tsconfig-utils" "8.56.0" - "@typescript-eslint/types" "8.56.0" - "@typescript-eslint/visitor-keys" "8.56.0" - debug "^4.4.3" - minimatch "^9.0.5" - semver "^7.7.3" - tinyglobby "^0.2.15" - ts-api-utils "^2.4.0" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz" - integrity sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ== - dependencies: - "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.56.0" - "@typescript-eslint/types" "8.56.0" - "@typescript-eslint/typescript-estree" "8.56.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "8.50.0" - dependencies: - "@typescript-eslint/types" "8.50.0" - eslint-visitor-keys "^4.2.1" - -"@typescript-eslint/visitor-keys@8.56.0": - version "8.56.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz" - integrity sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg== - dependencies: - "@typescript-eslint/types" "8.56.0" - eslint-visitor-keys "^5.0.0" - -"@ungap/structured-clone@^1.2.0", "@ungap/structured-clone@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" - integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== - -"@unrs/resolver-binding-darwin-arm64@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz" - integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== - -"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" - integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== - dependencies: - "@webassemblyjs/helper-numbers" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - -"@webassemblyjs/floating-point-hex-parser@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz" - integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== - -"@webassemblyjs/helper-api-error@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz" - integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== - -"@webassemblyjs/helper-buffer@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz" - integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== - -"@webassemblyjs/helper-numbers@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz" - integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.13.2" - "@webassemblyjs/helper-api-error" "1.13.2" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz" - integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== - -"@webassemblyjs/helper-wasm-section@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz" - integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/wasm-gen" "1.14.1" - -"@webassemblyjs/ieee754@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz" - integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz" - integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz" - integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== - -"@webassemblyjs/wasm-edit@^1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz" - integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/helper-wasm-section" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-opt" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - "@webassemblyjs/wast-printer" "1.14.1" - -"@webassemblyjs/wasm-gen@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz" - integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wasm-opt@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz" - integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - -"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" - integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-api-error" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wast-printer@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz" - integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== - -abitype@^1.2.3, abitype@1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz" - integrity sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-phases@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz" - integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.15.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== - -adm-zip@^0.4.16: - version "0.4.16" - resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" - integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -aes-js@4.0.0-beta.5: - version "4.0.0-beta.5" - resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz" - integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== - -agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-formats@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0, ajv@8.12.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.17.1" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - -ajv@^8.8.2, ajv@^8.9.0: - version "8.17.1" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" - integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== - -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-colors@^4.1.1, ansi-colors@^4.1.3, ansi-colors@4.1.3: - version "4.1.3" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.2.2" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" - integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== - -ansi-styles@^3.2.1: - 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== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.3" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz" - integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== - -antlr4ts@^0.5.0-alpha.4: - version "0.5.0-dev" - dependencies: - source-map-support "^0.5.16" - -any-base@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" - integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== - -anymatch@^3.1.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -append-field@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" - integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-timsort@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz" - integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - -asap@^2.0.0, asap@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -assertion-error@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" - integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-function@^1.0.0: - version "1.0.0" - -async-generator-function@^1.0.0: - version "1.0.0" - -async@1.x: - version "1.5.2" - resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -await-to-js@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz" - integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g== - -axios@^1.13.3, axios@^1.5.1, axios@^1.6.0: - version "1.13.5" - resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz" - integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== - dependencies: - follow-redirects "^1.15.11" - form-data "^4.0.5" - proxy-from-env "^1.1.0" - -"babel-jest@^29.0.0 || ^30.0.0", babel-jest@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz" - integrity sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw== - dependencies: - "@jest/transform" "30.2.0" - "@types/babel__core" "^7.20.5" - babel-plugin-istanbul "^7.0.1" - babel-preset-jest "30.2.0" - chalk "^4.1.2" - graceful-fs "^4.2.11" - slash "^3.0.0" - -babel-plugin-istanbul@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz" - integrity sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-instrument "^6.0.2" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz" - integrity sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA== - dependencies: - "@types/babel__core" "^7.20.5" - -babel-preset-current-node-syntax@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz" - integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - -babel-preset-jest@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz" - integrity sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ== - dependencies: - babel-plugin-jest-hoist "30.2.0" - babel-preset-current-node-syntax "^1.2.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2: - version "3.0.11" - resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz" - integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== - dependencies: - safe-buffer "^5.0.1" - -base32.js@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz" - integrity sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -baseline-browser-mapping@^2.9.0: - version "2.9.11" - resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz" - integrity sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ== - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -before-after-hook@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz" - integrity sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ== - -bignumber.js@^9.3.1: - version "9.3.1" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz" - integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bip39@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz" - integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== - dependencies: - "@noble/hashes" "^1.2.0" - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blakejs@^1.1.0: - version "1.2.1" - resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - -bmp-ts@^1.0.9: - version "1.0.9" - resolved "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz" - integrity sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw== - -bn.js@^4.11.9: - version "4.12.2" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz" - integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== - -bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.2" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz" - integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" - integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== - -body-parser@1.20.3: - version "1.20.3" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" - integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.13.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -boxen@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - -brace-expansion@^1.1.7: - version "1.1.12" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" - integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" - integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-stdout@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserslist@^4.24.0, browserslist@^4.28.1, "browserslist@>= 4.21.0": - version "4.28.1" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz" - integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== - dependencies: - baseline-browser-mapping "^2.9.0" - caniuse-lite "^1.0.30001759" - electron-to-chromium "^1.5.263" - node-releases "^2.0.27" - update-browserslist-db "^1.2.0" - -bs-logger@^0.2.6: - version "0.2.6" - resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bs58@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -bson@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/bson/-/bson-7.0.0.tgz" - integrity sha512-Kwc6Wh4lQ5OmkqqKhYGKIuELXl+EPYSCObVE6bWsp1T/cGkOCBN0I8wF/T44BiuhHyNi1mmKVPXk60d41xZ7kw== - -buffer-equal-constant-time@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -"bullmq@^3.0.0 || ^4.0.0 || ^5.0.0", bullmq@^5.66.2: - version "5.66.2" - dependencies: - cron-parser "4.9.0" - ioredis "5.8.2" - msgpackr "1.11.5" - node-abort-controller "3.1.1" - semver "7.7.3" - tslib "2.8.1" - uuid "11.1.0" - -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - -bytes@~3.1.2, bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== - dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" - set-function-length "^1.2.2" - -call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -callsites@^3.0.0, callsites@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001759: - version "1.0.30001761" - -caseless@^0.12.0, caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -cbor@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz" - integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== - dependencies: - nofilter "^3.1.0" - -chai-as-promised@^7.1.1: - version "7.1.2" - resolved "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz" - integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== - dependencies: - check-error "^1.0.2" - -chai@^4.2.0, chai@^4.3.10, "chai@>= 2.1.2 < 6": - version "4.5.0" - resolved "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz" - integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.1.0" - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.3.0: - version "5.6.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz" - integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -"charenc@>= 0.0.1": - version "0.0.2" - resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" - integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== - -check-error@^1.0.2, check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" - -chokidar@^3.5.2, chokidar@^3.5.3, chokidar@3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz" - integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== - dependencies: - readdirp "^4.0.1" - -chrome-trace-event@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" - integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^4.2.0: - version "4.3.1" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz" - integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.7" - resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz" - integrity sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA== - dependencies: - inherits "^2.0.4" - safe-buffer "^5.2.1" - to-buffer "^1.2.2" - -cjs-module-lexer@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz" - integrity sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ== - -class-transformer@*, "class-transformer@^0.4.0 || ^0.5.0", class-transformer@^0.5.1: - version "0.5.1" - resolved "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz" - integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== - -class-validator@*, "class-validator@^0.13.0 || ^0.14.0", class-validator@^0.14.3: - version "0.14.3" - resolved "https://registry.npmjs.org/class-validator/-/class-validator-0.14.3.tgz" - integrity sha512-rXXekcjofVN1LTOSw+u4u9WXVEUvNBVjORW154q/IdmYWy1nMbOU9aNtZB0t8m+FJQ9q91jlr2f9CwwUFdFMRA== - dependencies: - "@types/validator" "^13.15.3" - libphonenumber-js "^1.11.1" - validator "^13.15.20" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cli-table3@^0.5.0: - version "0.5.1" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -cli-table3@0.6.5: - version "0.6.5" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz" - integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cli-width@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" - integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -cluster-key-slot@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz" - integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz" - integrity sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -colors@^1.1.2, colors@1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -commander@^14.0.2: - version "14.0.3" - resolved "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz" - integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^8.1.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -commander@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -comment-json@4.2.5: - version "4.2.5" - resolved "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz" - integrity sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw== - dependencies: - array-timsort "^1.0.3" - core-util-is "^1.0.3" - esprima "^4.0.1" - has-own-prop "^2.0.0" - repeat-string "^1.6.1" - -component-emitter@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz" - integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.6.0, concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -consola@^2.15.0: - version "2.15.3" - resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -cookie@0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" - integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== - -cookiejar@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz" - integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== - -core-util-is@^1.0.3, core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@2.8.5: - version "2.8.5" - resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^8.2.0: - version "8.3.6" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.7, create-hmac@1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cron-parser@4.9.0: - version "4.9.0" - resolved "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz" - integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== - dependencies: - luxon "^3.2.1" - -cron@4.3.5: - version "4.3.5" - resolved "https://registry.npmjs.org/cron/-/cron-4.3.5.tgz" - integrity sha512-hKPP7fq1+OfyCqoePkKfVq7tNAdFwiQORr4lZUHwrf0tebC65fYEeWgOrXOL6prn1/fegGOdTfrM6e34PJfksg== - dependencies: - "@types/luxon" "~3.7.0" - luxon "~3.7.0" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -"crypt@>= 0.0.1": - version "0.0.2" - resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" - integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== - -death@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/death/-/death-1.1.0.tgz" - integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.7, debug@^4.4.0, debug@^4.4.3, debug@4: - version "4.4.3" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" - integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== - dependencies: - ms "^2.1.3" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -dedent@^1.6.0: - version "1.7.1" - resolved "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz" - integrity sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg== - -deep-eql@^4.0.1, deep-eql@^4.1.3: - version "4.1.4" - resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz" - integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== - dependencies: - type-detect "^4.0.0" - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2, deepmerge@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -denque@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" - integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== - -depd@~2.0.0, depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^2.0.1: - version "2.1.2" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz" - integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== - -detect-newline@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -dezalgo@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diff@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - -difflib@^0.2.4: - version "0.2.4" - resolved "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz" - integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== - dependencies: - heap ">= 0.2.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dotenv-expand@12.0.1: - version "12.0.1" - resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz" - integrity sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ== - dependencies: - dotenv "^16.4.5" - -dotenv@^16.4.5: - version "16.6.1" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - -dotenv@^17.2.3: - version "17.3.1" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz" - integrity sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA== - -dotenv@16.4.7: - version "16.4.7" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz" - integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecdsa-sig-formatter@1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ed25519-hd-key@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.3.0.tgz" - integrity sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg== - dependencies: - create-hmac "1.1.7" - tweetnacl "1.0.3" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.5.263: - version "1.5.267" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz" - integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw== - -elliptic@^6.5.7, elliptic@6.6.1: - version "6.6.1" - resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz" - integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encodeurl@~2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.17.4, enhanced-resolve@^5.7.0: - version "5.18.4" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz" - integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.0: - version "2.4.1" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz" - integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== - dependencies: - ansi-colors "^4.1.1" - strip-ansi "^6.0.1" - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -error-ex@^1.3.1: - version "1.3.4" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz" - integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== - dependencies: - is-arrayish "^0.2.1" - -es-define-property@^1.0.0, es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^1.2.1: - version "1.7.0" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz" - integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== - -es-module-lexer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz" - integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -escalade@^3.1.1, escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" - integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -eslint-config-prettier@^9.0.0, "eslint-config-prettier@>= 7.0.0 <10.0.0 || >=10.1.0": - version "9.1.2" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz" - integrity sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ== - -eslint-plugin-prettier@^5.0.0: - version "5.5.4" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz" - integrity sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.11.7" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-scope@^8.4.0: - version "8.4.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz" - integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^4.2.1: - version "4.2.1" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz" - integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== - -eslint-visitor-keys@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz" - integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== - -"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0 || ^10.0.0", eslint@^9.39.2: - version "9.39.2" - resolved "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz" - integrity sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw== - dependencies: - "@eslint-community/eslint-utils" "^4.8.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.21.1" - "@eslint/config-helpers" "^0.4.2" - "@eslint/core" "^0.17.0" - "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.39.2" - "@eslint/plugin-kit" "^0.4.1" - "@humanfs/node" "^0.16.6" - "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.4.2" - "@types/estree" "^1.0.6" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.6" - debug "^4.3.2" - escape-string-regexp "^4.0.0" - eslint-scope "^8.4.0" - eslint-visitor-keys "^4.2.1" - espree "^10.4.0" - esquery "^1.5.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" - find-up "^5.0.0" - glob-parent "^6.0.2" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - json-stable-stringify-without-jsonify "^1.0.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - -"eslint@^7.0.0 || ^8.0.0", eslint@^8.42.0, eslint@>=7.0.0, eslint@>=8.0.0: - version "8.57.1" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^10.0.1, espree@^10.4.0: - version "10.4.0" - resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz" - integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== - dependencies: - acorn "^8.15.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.1" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" - integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esprima@2.7.x: - version "2.7.3" - resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" - integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== - -esquery@^1.4.2, esquery@^1.5.0: - version "1.6.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" - integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eth-gas-reporter@^0.2.25: - version "0.2.27" - resolved "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz" - integrity sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw== - dependencies: - "@solidity-parser/parser" "^0.14.0" - axios "^1.5.1" - cli-table3 "^0.5.0" - colors "1.4.0" - ethereum-cryptography "^1.0.3" - ethers "^5.7.2" - fs-readdir-recursive "^1.1.0" - lodash "^4.17.14" - markdown-table "^1.1.3" - mocha "^10.2.0" - req-cwd "^2.0.0" - sha1 "^1.1.1" - sync-request "^6.0.0" - -ethereum-bloom-filters@^1.0.6: - version "1.2.0" - resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz" - integrity sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA== - dependencies: - "@noble/hashes" "^1.4.0" - -ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - dependencies: - "@types/pbkdf2" "^3.0.0" - "@types/secp256k1" "^4.0.1" - blakejs "^1.1.0" - browserify-aes "^1.2.0" - bs58check "^2.1.2" - create-hash "^1.2.0" - create-hmac "^1.1.7" - hash.js "^1.1.7" - keccak "^3.0.0" - pbkdf2 "^3.0.17" - randombytes "^2.1.0" - safe-buffer "^5.1.2" - scrypt-js "^3.0.0" - secp256k1 "^4.0.1" - setimmediate "^1.0.5" - -ethereum-cryptography@^1.0.3: - version "1.2.0" - resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz" - integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== - dependencies: - "@noble/hashes" "1.2.0" - "@noble/secp256k1" "1.7.1" - "@scure/bip32" "1.1.5" - "@scure/bip39" "1.1.1" - -ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2, ethereum-cryptography@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz" - integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== - dependencies: - "@noble/curves" "1.4.2" - "@noble/hashes" "1.4.0" - "@scure/bip32" "1.4.0" - "@scure/bip39" "1.3.0" - -ethereumjs-util@^7.1.4: - version "7.1.5" - resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" - integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== - dependencies: - "@types/bn.js" "^5.1.0" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - rlp "^2.2.4" - -ethers@^5.7.2: - version "5.8.0" - resolved "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz" - integrity sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg== - dependencies: - "@ethersproject/abi" "5.8.0" - "@ethersproject/abstract-provider" "5.8.0" - "@ethersproject/abstract-signer" "5.8.0" - "@ethersproject/address" "5.8.0" - "@ethersproject/base64" "5.8.0" - "@ethersproject/basex" "5.8.0" - "@ethersproject/bignumber" "5.8.0" - "@ethersproject/bytes" "5.8.0" - "@ethersproject/constants" "5.8.0" - "@ethersproject/contracts" "5.8.0" - "@ethersproject/hash" "5.8.0" - "@ethersproject/hdnode" "5.8.0" - "@ethersproject/json-wallets" "5.8.0" - "@ethersproject/keccak256" "5.8.0" - "@ethersproject/logger" "5.8.0" - "@ethersproject/networks" "5.8.0" - "@ethersproject/pbkdf2" "5.8.0" - "@ethersproject/properties" "5.8.0" - "@ethersproject/providers" "5.8.0" - "@ethersproject/random" "5.8.0" - "@ethersproject/rlp" "5.8.0" - "@ethersproject/sha2" "5.8.0" - "@ethersproject/signing-key" "5.8.0" - "@ethersproject/solidity" "5.8.0" - "@ethersproject/strings" "5.8.0" - "@ethersproject/transactions" "5.8.0" - "@ethersproject/units" "5.8.0" - "@ethersproject/wallet" "5.8.0" - "@ethersproject/web" "5.8.0" - "@ethersproject/wordlists" "5.8.0" - -ethers@^6.1.0, ethers@^6.14.0, ethers@^6.16.0, ethers@^6.4.0, ethers@6.x: - version "6.16.0" - resolved "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz" - integrity sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A== - dependencies: - "@adraffy/ens-normalize" "1.10.1" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@types/node" "22.7.5" - aes-js "4.0.0-beta.5" - tslib "2.7.0" - ws "8.17.1" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" - integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -events@^3.2.0, events@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz" - integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== - -evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exif-parser@^0.1.12: - version "0.1.12" - resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz" - integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw== - -exit-x@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz" - integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== - -expect@^30.0.0, expect@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz" - integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== - dependencies: - "@jest/expect-utils" "30.2.0" - "@jest/get-type" "30.1.0" - jest-matcher-utils "30.2.0" - jest-message-util "30.2.0" - jest-mock "30.2.0" - jest-util "30.2.0" - -"express@>=4.0.0 || >=5.0.0-beta", express@4.21.2: - version "4.21.2" - resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" - integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.7.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.3.1" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.3" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.12" - proxy-addr "~2.0.7" - qs "6.13.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.19.0" - serve-static "1.16.2" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -external-editor@^3.0.3, external-editor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-content-type-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz" - integrity sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - 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== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-equals@^5.0.1: - version "5.4.0" - resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz" - integrity sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw== - -fast-glob@^3.0.3, fast-glob@^3.2.9: - version "3.3.3" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: - 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== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-levenshtein@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz" - integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== - dependencies: - fastest-levenshtein "^1.0.7" - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@^2.1.1, fast-safe-stringify@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fast-uri@^3.0.1: - version "3.1.0" - resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz" - integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== - -fastest-levenshtein@^1.0.7: - version "1.0.16" - resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - -fastq@^1.6.0: - version "1.19.1" - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fdir@^6.5.0: - version "6.5.0" - resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" - integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== - -feaxios@^0.0.23: - version "0.0.23" - resolved "https://registry.npmjs.org/feaxios/-/feaxios-0.0.23.tgz" - integrity sha512-eghR0A21fvbkcQBgZuMfQhrXxJzC0GNUGC9fXhBge33D+mFDTwl0aJ35zoQQn575BhyjQitRc5N4f+L4cP708g== - dependencies: - is-retry-allowed "^3.0.0" - -fflate@^0.8.2: - version "0.8.2" - resolved "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz" - integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== - -figures@^3.0.0, figures@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-entry-cache@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" - integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== - dependencies: - flat-cache "^4.0.0" - -file-type@^16.0.0: - version "16.5.4" - resolved "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz" - integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== - dependencies: - readable-web-to-node-stream "^3.0.0" - strtok3 "^6.2.4" - token-types "^4.1.1" - -file-type@20.4.1: - version "20.4.1" - resolved "https://registry.npmjs.org/file-type/-/file-type-20.4.1.tgz" - integrity sha512-hw9gNZXUfZ02Jo0uafWLaFVPter5/k2rfcrjFJJHX/77xtSDOfJuEFb6oKlFV86FLP1SuyHMW1PSk0U9M5tKkQ== - dependencies: - "@tokenizer/inflate" "^0.2.6" - strtok3 "^10.2.0" - token-types "^6.0.0" - uint8array-extras "^1.4.0" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" - integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== - dependencies: - debug "2.6.9" - encodeurl "~2.0.0" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat-cache@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" - integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.4" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== - -follow-redirects@^1.12.1, follow-redirects@^1.15.11: - version "1.15.11" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz" - integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== - -for-each@^0.3.5: - version "0.3.5" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz" - integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== - dependencies: - is-callable "^1.2.7" - -foreground-child@^3.1.0: - version "3.3.1" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" - integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== - dependencies: - cross-spawn "^7.0.6" - signal-exit "^4.0.1" - -fork-ts-checker-webpack-plugin@9.0.2: - version "9.0.2" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz" - integrity sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg== - dependencies: - "@babel/code-frame" "^7.16.7" - chalk "^4.1.2" - chokidar "^3.5.3" - cosmiconfig "^8.2.0" - deepmerge "^4.2.2" - fs-extra "^10.0.0" - memfs "^3.4.1" - minimatch "^3.0.4" - node-abort-controller "^3.0.1" - schema-utils "^3.1.1" - semver "^7.3.5" - tapable "^2.2.1" - -form-data@^2.2.0: - version "2.5.5" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz" - integrity sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.35" - safe-buffer "^5.2.1" - -form-data@^4.0.0, form-data@^4.0.4, form-data@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz" - integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" - -formidable@^3.5.4: - version "3.5.4" - resolved "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz" - integrity sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug== - dependencies: - "@paralleldrive/cuid2" "^2.2.2" - dezalgo "^1.0.4" - once "^1.4.0" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fp-ts@^1.0.0: - version "1.19.5" - resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.5.tgz" - integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== - -fp-ts@1.19.3: - version "1.19.3" - resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz" - integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^7.0.0, fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-monkey@^1.0.4: - version "1.1.0" - resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz" - integrity sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw== - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.3, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -generator-function@^2.0.0: - version "2.0.1" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - -get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: - version "1.3.1" - dependencies: - async-function "^1.0.0" - async-generator-function "^1.0.0" - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - generator-function "^2.0.0" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-port@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" - integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== - -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -ghost-testrpc@^0.0.2: - version "0.0.2" - resolved "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz" - integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== - dependencies: - chalk "^2.4.2" - node-emoji "^1.10.0" - -gifwrap@^0.10.1: - version "0.10.1" - resolved "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz" - integrity sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw== - dependencies: - image-q "^4.0.0" - omggif "^1.0.10" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^10.3.10: - version "10.5.0" - resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz" - integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -glob@10.4.5: - version "10.4.5" - resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== - -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz" - integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.0.1, gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: - version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -handlebars@^4.0.1, handlebars@^4.7.8: - version "4.7.8" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -hardhat-gas-reporter@^1.0.10, hardhat-gas-reporter@^1.0.8: - version "1.0.10" - resolved "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz" - integrity sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA== - dependencies: - array-uniq "1.0.3" - eth-gas-reporter "^0.2.25" - sha1 "^1.1.1" - -hardhat@^2.0.2, hardhat@^2.0.4, hardhat@^2.11.0, hardhat@^2.22.3, hardhat@^2.26.0, hardhat@^2.28.0, hardhat@^2.9.9, hardhat@^3.0.0: - version "2.28.0" - dependencies: - "@ethereumjs/util" "^9.1.0" - "@ethersproject/abi" "^5.1.2" - "@nomicfoundation/edr" "0.12.0-next.17" - "@nomicfoundation/solidity-analyzer" "^0.1.0" - "@sentry/node" "^5.18.1" - adm-zip "^0.4.16" - aggregate-error "^3.0.0" - ansi-escapes "^4.3.0" - boxen "^5.1.2" - chokidar "^4.0.0" - ci-info "^2.0.0" - debug "^4.1.1" - enquirer "^2.3.0" - env-paths "^2.2.0" - ethereum-cryptography "^1.0.3" - find-up "^5.0.0" - fp-ts "1.19.3" - fs-extra "^7.0.1" - immutable "^4.0.0-rc.12" - io-ts "1.10.4" - json-stream-stringify "^3.1.4" - keccak "^3.0.2" - lodash "^4.17.11" - micro-eth-signer "^0.14.0" - mnemonist "^0.38.0" - mocha "^10.0.0" - p-map "^4.0.0" - picocolors "^1.1.0" - raw-body "^2.4.1" - resolve "1.17.0" - semver "^6.3.0" - solc "0.8.26" - source-map-support "^0.5.13" - stacktrace-parser "^0.1.10" - tinyglobby "^0.2.6" - tsort "0.0.1" - undici "^5.14.0" - uuid "^8.3.2" - ws "^7.4.6" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" - integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-own-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz" - integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== - -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hash-base@^3.0.0, hash-base@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz" - integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg== - dependencies: - inherits "^2.0.4" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - to-buffer "^1.2.1" - -hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7, hash.js@1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -"heap@>= 0.2.0": - version "0.2.7" - resolved "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz" - integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-basic@^8.1.1: - version "8.1.3" - resolved "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz" - integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== - dependencies: - caseless "^0.12.0" - concat-stream "^1.6.2" - http-response-object "^3.0.1" - parse-cache-control "^1.0.1" - -http-errors@~2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz" - integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== - dependencies: - depd "~2.0.0" - inherits "~2.0.4" - setprototypeof "~1.2.0" - statuses "~2.0.2" - toidentifier "~1.0.1" - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-response-object@^3.0.1: - version "3.0.2" - resolved "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz" - integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== - dependencies: - "@types/node" "^10.0.3" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@^0.4.24, iconv-lite@~0.4.24, iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: - version "5.3.2" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -ignore@^7.0.5: - version "7.0.5" - resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz" - integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== - -image-q@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz" - integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== - dependencies: - "@types/node" "16.9.1" - -immutable@^4.0.0-rc.12: - version "4.3.7" - resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz" - integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== - -import-fresh@^3.2.1, import-fresh@^3.3.0: - version "3.3.1" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" - integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" - integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4, inherits@2, inherits@2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.5: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@8.2.6: - version "8.2.6" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" - integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^6.0.1" - -inquirer@9.2.15: - version "9.2.15" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz" - integrity sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg== - dependencies: - "@ljharb/through" "^2.3.12" - ansi-escapes "^4.3.2" - chalk "^5.3.0" - cli-cursor "^3.1.0" - cli-width "^4.1.0" - external-editor "^3.1.0" - figures "^3.2.0" - lodash "^4.17.21" - mute-stream "1.0.0" - ora "^5.4.1" - run-async "^3.0.0" - rxjs "^7.8.1" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wrap-ansi "^6.2.0" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -io-ts@1.10.4: - version "1.10.4" - resolved "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz" - integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== - dependencies: - fp-ts "^1.0.0" - -ioredis@^5.8.2, ioredis@5.8.2: - version "5.8.2" - resolved "https://registry.npmjs.org/ioredis/-/ioredis-5.8.2.tgz" - integrity sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q== - dependencies: - "@ioredis/commands" "1.4.0" - cluster-key-slot "^1.1.0" - debug "^4.3.4" - denque "^2.1.0" - lodash.defaults "^4.2.0" - lodash.isarguments "^3.1.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - -ipaddr.js@1.9.1: - 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== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.16.1: - version "2.16.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hex-prefixed@1.0.0: - 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== - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-retry-allowed@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-3.0.0.tgz" - integrity sha512-9xH0xvoggby+u0uGF7cZXdrutWiBiaFG8ZT4YFPXL8NzkyAwX3AKGLeFQLvzDpM430+nDFBZ1LHkie/8ocL06A== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typed-array@^1.1.14: - version "1.1.15" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz" - integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== - dependencies: - which-typed-array "^1.1.16" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isows@1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz" - integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^6.0.0, istanbul-lib-instrument@^6.0.2: - version "6.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" - integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^5.0.0: - version "5.0.6" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz" - integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== - dependencies: - "@jridgewell/trace-mapping" "^0.3.23" - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - -istanbul-reports@^3.1.3: - version "3.2.0" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz" - integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterare@1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" - integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jest-changed-files@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz" - integrity sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ== - dependencies: - execa "^5.1.1" - jest-util "30.2.0" - p-limit "^3.1.0" - -jest-circus@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz" - integrity sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg== - dependencies: - "@jest/environment" "30.2.0" - "@jest/expect" "30.2.0" - "@jest/test-result" "30.2.0" - "@jest/types" "30.2.0" - "@types/node" "*" - chalk "^4.1.2" - co "^4.6.0" - dedent "^1.6.0" - is-generator-fn "^2.1.0" - jest-each "30.2.0" - jest-matcher-utils "30.2.0" - jest-message-util "30.2.0" - jest-runtime "30.2.0" - jest-snapshot "30.2.0" - jest-util "30.2.0" - p-limit "^3.1.0" - pretty-format "30.2.0" - pure-rand "^7.0.0" - slash "^3.0.0" - stack-utils "^2.0.6" - -jest-cli@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz" - integrity sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA== - dependencies: - "@jest/core" "30.2.0" - "@jest/test-result" "30.2.0" - "@jest/types" "30.2.0" - chalk "^4.1.2" - exit-x "^0.2.2" - import-local "^3.2.0" - jest-config "30.2.0" - jest-util "30.2.0" - jest-validate "30.2.0" - yargs "^17.7.2" - -jest-config@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz" - integrity sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA== - dependencies: - "@babel/core" "^7.27.4" - "@jest/get-type" "30.1.0" - "@jest/pattern" "30.0.1" - "@jest/test-sequencer" "30.2.0" - "@jest/types" "30.2.0" - babel-jest "30.2.0" - chalk "^4.1.2" - ci-info "^4.2.0" - deepmerge "^4.3.1" - glob "^10.3.10" - graceful-fs "^4.2.11" - jest-circus "30.2.0" - jest-docblock "30.2.0" - jest-environment-node "30.2.0" - jest-regex-util "30.0.1" - jest-resolve "30.2.0" - jest-runner "30.2.0" - jest-util "30.2.0" - jest-validate "30.2.0" - micromatch "^4.0.8" - parse-json "^5.2.0" - pretty-format "30.2.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz" - integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== - dependencies: - "@jest/diff-sequences" "30.0.1" - "@jest/get-type" "30.1.0" - chalk "^4.1.2" - pretty-format "30.2.0" - -jest-docblock@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz" - integrity sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA== - dependencies: - detect-newline "^3.1.0" - -jest-each@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz" - integrity sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ== - dependencies: - "@jest/get-type" "30.1.0" - "@jest/types" "30.2.0" - chalk "^4.1.2" - jest-util "30.2.0" - pretty-format "30.2.0" - -jest-environment-node@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz" - integrity sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA== - dependencies: - "@jest/environment" "30.2.0" - "@jest/fake-timers" "30.2.0" - "@jest/types" "30.2.0" - "@types/node" "*" - jest-mock "30.2.0" - jest-util "30.2.0" - jest-validate "30.2.0" - -jest-haste-map@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz" - integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== - dependencies: - "@jest/types" "30.2.0" - "@types/node" "*" - anymatch "^3.1.3" - fb-watchman "^2.0.2" - graceful-fs "^4.2.11" - jest-regex-util "30.0.1" - jest-util "30.2.0" - jest-worker "30.2.0" - micromatch "^4.0.8" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.3" - -jest-leak-detector@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz" - integrity sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ== - dependencies: - "@jest/get-type" "30.1.0" - pretty-format "30.2.0" - -jest-matcher-utils@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz" - integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg== - dependencies: - "@jest/get-type" "30.1.0" - chalk "^4.1.2" - jest-diff "30.2.0" - pretty-format "30.2.0" - -jest-message-util@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz" - integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@jest/types" "30.2.0" - "@types/stack-utils" "^2.0.3" - chalk "^4.1.2" - graceful-fs "^4.2.11" - micromatch "^4.0.8" - pretty-format "30.2.0" - slash "^3.0.0" - stack-utils "^2.0.6" - -jest-mock-extended@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jest-mock-extended/-/jest-mock-extended-4.0.0.tgz" - integrity sha512-7BZpfuvLam+/HC+NxifIi9b+5VXj/utUDMPUqrDJehGWVuXPtLS9Jqlob2mJLrI/pg2k1S8DMfKDvEB88QNjaQ== - dependencies: - ts-essentials "^10.0.2" - -jest-mock@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz" - integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw== - dependencies: - "@jest/types" "30.2.0" - "@types/node" "*" - jest-util "30.2.0" - -jest-pnp-resolver@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@30.0.1: - version "30.0.1" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz" - integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== - -jest-resolve-dependencies@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz" - integrity sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w== - dependencies: - jest-regex-util "30.0.1" - jest-snapshot "30.2.0" - -jest-resolve@*, jest-resolve@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz" - integrity sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A== - dependencies: - chalk "^4.1.2" - graceful-fs "^4.2.11" - jest-haste-map "30.2.0" - jest-pnp-resolver "^1.2.3" - jest-util "30.2.0" - jest-validate "30.2.0" - slash "^3.0.0" - unrs-resolver "^1.7.11" - -jest-runner@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz" - integrity sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ== - dependencies: - "@jest/console" "30.2.0" - "@jest/environment" "30.2.0" - "@jest/test-result" "30.2.0" - "@jest/transform" "30.2.0" - "@jest/types" "30.2.0" - "@types/node" "*" - chalk "^4.1.2" - emittery "^0.13.1" - exit-x "^0.2.2" - graceful-fs "^4.2.11" - jest-docblock "30.2.0" - jest-environment-node "30.2.0" - jest-haste-map "30.2.0" - jest-leak-detector "30.2.0" - jest-message-util "30.2.0" - jest-resolve "30.2.0" - jest-runtime "30.2.0" - jest-util "30.2.0" - jest-watcher "30.2.0" - jest-worker "30.2.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz" - integrity sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg== - dependencies: - "@jest/environment" "30.2.0" - "@jest/fake-timers" "30.2.0" - "@jest/globals" "30.2.0" - "@jest/source-map" "30.0.1" - "@jest/test-result" "30.2.0" - "@jest/transform" "30.2.0" - "@jest/types" "30.2.0" - "@types/node" "*" - chalk "^4.1.2" - cjs-module-lexer "^2.1.0" - collect-v8-coverage "^1.0.2" - glob "^10.3.10" - graceful-fs "^4.2.11" - jest-haste-map "30.2.0" - jest-message-util "30.2.0" - jest-mock "30.2.0" - jest-regex-util "30.0.1" - jest-resolve "30.2.0" - jest-snapshot "30.2.0" - jest-util "30.2.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz" - integrity sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA== - dependencies: - "@babel/core" "^7.27.4" - "@babel/generator" "^7.27.5" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/plugin-syntax-typescript" "^7.27.1" - "@babel/types" "^7.27.3" - "@jest/expect-utils" "30.2.0" - "@jest/get-type" "30.1.0" - "@jest/snapshot-utils" "30.2.0" - "@jest/transform" "30.2.0" - "@jest/types" "30.2.0" - babel-preset-current-node-syntax "^1.2.0" - chalk "^4.1.2" - expect "30.2.0" - graceful-fs "^4.2.11" - jest-diff "30.2.0" - jest-matcher-utils "30.2.0" - jest-message-util "30.2.0" - jest-util "30.2.0" - pretty-format "30.2.0" - semver "^7.7.2" - synckit "^0.11.8" - -"jest-util@^29.0.0 || ^30.0.0", jest-util@^30.2.0, jest-util@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz" - integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA== - dependencies: - "@jest/types" "30.2.0" - "@types/node" "*" - chalk "^4.1.2" - ci-info "^4.2.0" - graceful-fs "^4.2.11" - picomatch "^4.0.2" - -jest-validate@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz" - integrity sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw== - dependencies: - "@jest/get-type" "30.1.0" - "@jest/types" "30.2.0" - camelcase "^6.3.0" - chalk "^4.1.2" - leven "^3.1.0" - pretty-format "30.2.0" - -jest-watcher@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz" - integrity sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg== - dependencies: - "@jest/test-result" "30.2.0" - "@jest/types" "30.2.0" - "@types/node" "*" - ansi-escapes "^4.3.2" - chalk "^4.1.2" - emittery "^0.13.1" - jest-util "30.2.0" - string-length "^4.0.2" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz" - integrity sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g== - dependencies: - "@types/node" "*" - "@ungap/structured-clone" "^1.3.0" - jest-util "30.2.0" - merge-stream "^2.0.0" - supports-color "^8.1.1" - -"jest@^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 || ^30.0.0", "jest@^29.0.0 || ^30.0.0", jest@^30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz" - integrity sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A== - dependencies: - "@jest/core" "30.2.0" - "@jest/types" "30.2.0" - import-local "^3.2.0" - jest-cli "30.2.0" - -jimp@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz" - integrity sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg== - dependencies: - "@jimp/core" "1.6.0" - "@jimp/diff" "1.6.0" - "@jimp/js-bmp" "1.6.0" - "@jimp/js-gif" "1.6.0" - "@jimp/js-jpeg" "1.6.0" - "@jimp/js-png" "1.6.0" - "@jimp/js-tiff" "1.6.0" - "@jimp/plugin-blit" "1.6.0" - "@jimp/plugin-blur" "1.6.0" - "@jimp/plugin-circle" "1.6.0" - "@jimp/plugin-color" "1.6.0" - "@jimp/plugin-contain" "1.6.0" - "@jimp/plugin-cover" "1.6.0" - "@jimp/plugin-crop" "1.6.0" - "@jimp/plugin-displace" "1.6.0" - "@jimp/plugin-dither" "1.6.0" - "@jimp/plugin-fisheye" "1.6.0" - "@jimp/plugin-flip" "1.6.0" - "@jimp/plugin-hash" "1.6.0" - "@jimp/plugin-mask" "1.6.0" - "@jimp/plugin-print" "1.6.0" - "@jimp/plugin-quantize" "1.6.0" - "@jimp/plugin-resize" "1.6.0" - "@jimp/plugin-rotate" "1.6.0" - "@jimp/plugin-threshold" "1.6.0" - "@jimp/types" "1.6.0" - "@jimp/utils" "1.6.0" - -jpeg-js@^0.4.4: - version "0.4.4" - resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz" - integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== - -js-sha3@^0.8.0, js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.2" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz" - integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0, js-yaml@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== - dependencies: - argparse "^2.0.1" - -js-yaml@3.x: - version "3.14.2" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz" - integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" - integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - 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== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stream-stringify@^3.1.4, json-stream-stringify@^3.1.6: - version "3.1.6" - resolved "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz" - integrity sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog== - -json5@^2.2.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc-parser@3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz" - integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== - -jsonc-parser@3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz" - integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.2.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz" - integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonschema@^1.2.4: - version "1.5.0" - resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz" - integrity sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw== - -jsonwebtoken@^9.0.0, jsonwebtoken@9.0.3: - version "9.0.3" - resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz" - integrity sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g== - dependencies: - jws "^4.0.1" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^7.5.4" - -jsqr@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz" - integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A== - -jwa@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz" - integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== - dependencies: - buffer-equal-constant-time "^1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz" - integrity sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA== - dependencies: - jwa "^2.0.1" - safe-buffer "^5.0.1" - -kareem@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/kareem/-/kareem-3.0.0.tgz" - integrity sha512-RKhaOBSPN8L7y4yAgNhDT2602G5FD6QbOIISbjN9D6mjHPeqeg7K+EB5IGSU5o81/X2Gzm3ICnAvQW3x3OP8HA== - -keccak@^3.0.0, keccak@^3.0.2: - version "3.0.4" - resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz" - integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keyv@^4.5.3, keyv@^4.5.4: - version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libphonenumber-js@^1.11.1: - version "1.12.33" - resolved "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.33.tgz" - integrity sha512-r9kw4OA6oDO4dPXkOrXTkArQAafIKAU71hChInV4FxZ69dxCfbwQGDPzqR5/vea94wU705/3AZroEbSoeVWrQw== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -loader-runner@^4.2.0, loader-runner@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz" - integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" - integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - -lodash.isarguments@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" - integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== - -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -luxon@^3.2.1, luxon@~3.7.0: - version "3.7.2" - resolved "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz" - integrity sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew== - -magic-string@0.30.8: - version "0.30.8" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz" - integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@^1.1.1, make-error@^1.3.6: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -markdown-table@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz" - integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.4.1: - version "3.5.3" - dependencies: - fs-monkey "^1.0.4" - -memory-pager@^1.0.2: - version "1.5.0" - resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" - integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" - integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== - -merge-descriptors@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" - integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@^1.1.2, methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micro-eth-signer@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz" - integrity sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw== - dependencies: - "@noble/curves" "~1.8.1" - "@noble/hashes" "~1.7.1" - micro-packed "~0.7.2" - -micro-ftch@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz" - integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== - -micro-packed@~0.7.2: - version "0.7.3" - resolved "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz" - integrity sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg== - dependencies: - "@scure/base" "~1.2.5" - -micromatch@^4.0.0, micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@2.6.0: - version "2.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mime@3: - version "3.0.0" - resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2, "minimatch@2 || 3": - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1, minimatch@^5.1.6: - version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -mkdirp@^0.5.6, mkdirp@0.5.x: - version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mnemonist@^0.38.0: - version "0.38.5" - resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz" - integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== - dependencies: - obliterator "^2.0.0" - -mocha@^10.0.0, mocha@^10.2.0: - version "10.8.2" - resolved "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz" - integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== - dependencies: - ansi-colors "^4.1.3" - browser-stdout "^1.3.1" - chokidar "^3.5.3" - debug "^4.3.5" - diff "^5.2.0" - escape-string-regexp "^4.0.0" - find-up "^5.0.0" - glob "^8.1.0" - he "^1.2.0" - js-yaml "^4.1.0" - log-symbols "^4.1.0" - minimatch "^5.1.6" - ms "^2.1.3" - serialize-javascript "^6.0.2" - strip-json-comments "^3.1.1" - supports-color "^8.1.1" - workerpool "^6.5.1" - yargs "^16.2.0" - yargs-parser "^20.2.9" - yargs-unparser "^2.0.0" - -mongodb-connection-string-url@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-7.0.0.tgz" - integrity sha512-irhhjRVLE20hbkRl4zpAYLnDMM+zIZnp0IDB9akAFFUZp/3XdOfwwddc7y6cNvF2WCEtfTYRwYbIfYa2kVY0og== - dependencies: - "@types/whatwg-url" "^13.0.0" - whatwg-url "^14.1.0" - -mongodb@~7.0: - version "7.0.0" - resolved "https://registry.npmjs.org/mongodb/-/mongodb-7.0.0.tgz" - integrity sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg== - dependencies: - "@mongodb-js/saslprep" "^1.3.0" - bson "^7.0.0" - mongodb-connection-string-url "^7.0.0" - -"mongoose@^7.0.0 || ^8.0.0 || ^9.0.0", mongoose@^9.0.2: - version "9.0.2" - dependencies: - kareem "3.0.0" - mongodb "~7.0" - mpath "0.9.0" - mquery "6.0.0" - ms "2.1.3" - sift "17.1.3" - -mpath@0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz" - integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== - -mquery@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/mquery/-/mquery-6.0.0.tgz" - integrity sha512-b2KQNsmgtkscfeDgkYMcWGn9vZI9YoXh802VDEwE6qc50zxBFQ0Oo8ROkawbPAsXCY1/Z1yp0MagqsZStPWJjw== - -ms@^2.1.1, ms@^2.1.3, ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -msgpackr-extract@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz" - integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== - dependencies: - node-gyp-build-optional-packages "5.2.2" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" - -msgpackr@1.11.5: - version "1.11.5" - resolved "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz" - integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== - optionalDependencies: - msgpackr-extract "^3.0.2" - -multer@2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz" - integrity sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw== - dependencies: - append-field "^1.0.0" - busboy "^1.6.0" - concat-stream "^2.0.0" - mkdirp "^0.5.6" - object-assign "^4.1.1" - type-is "^1.6.18" - xtend "^4.0.2" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mute-stream@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== - -napi-postinstall@^0.3.0: - version "0.3.4" - resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz" - integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -node-abort-controller@^3.0.1, node-abort-controller@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" - integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-addon-api@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz" - integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== - -node-emoji@^1.10.0, node-emoji@1.11.0: - version "1.11.0" - resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== - dependencies: - lodash "^4.17.21" - -node-fetch@^2.6.1: - version "2.7.0" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build-optional-packages@5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz" - integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== - dependencies: - detect-libc "^2.0.1" - -node-gyp-build@^4.2.0: - version "4.8.4" - resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz" - integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.27: - version "2.0.27" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz" - integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== - -nofilter@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" - integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== - -nopt@3.x: - version "3.0.6" - resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" - integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" - integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - -object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -obliterator@^2.0.0: - version "2.0.5" - resolved "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz" - integrity sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw== - -omggif@^1.0.10: - version "1.0.10" - resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz" - integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.4.0, once@1.x: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -ora@^5.4.1, ora@5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -ordinal@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz" - integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -ox@0.10.6: - version "0.10.6" - dependencies: - "@adraffy/ens-normalize" "^1.11.0" - "@noble/ciphers" "^1.3.0" - "@noble/curves" "1.9.1" - "@noble/hashes" "^1.8.0" - "@scure/bip32" "^1.7.0" - "@scure/bip39" "^1.6.0" - abitype "^1.2.3" - eventemitter3 "5.0.1" - -ox@0.11.1: - version "0.11.1" - resolved "https://registry.npmjs.org/ox/-/ox-0.11.1.tgz" - integrity sha512-1l1gOLAqg0S0xiN1dH5nkPna8PucrZgrIJOfS49MLNiMevxu07Iz4ZjuJS9N+xifvT+PsZyIptS7WHM8nC+0+A== - dependencies: - "@adraffy/ens-normalize" "^1.11.0" - "@noble/ciphers" "^1.3.0" - "@noble/curves" "1.9.1" - "@noble/hashes" "^1.8.0" - "@scure/bip32" "^1.7.0" - "@scure/bip39" "^1.6.0" - abitype "^1.2.3" - eventemitter3 "5.0.1" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -pako@^1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-bmfont-ascii@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz" - integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA== - -parse-bmfont-binary@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz" - integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA== - -parse-bmfont-xml@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz" - integrity sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA== - dependencies: - xml-parse-from-string "^1.0.0" - xml2js "^0.5.0" - -parse-cache-control@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz" - integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -passport-jwt@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz" - integrity sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ== - dependencies: - jsonwebtoken "^9.0.0" - passport-strategy "^1.0.0" - -passport-strategy@^1.0.0, passport-strategy@1.x.x: - version "1.0.0" - resolved "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" - integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== - -"passport@^0.5.0 || ^0.6.0 || ^0.7.0", passport@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz" - integrity sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ== - dependencies: - passport-strategy "1.x.x" - pause "0.0.1" - utils-merge "^1.0.1" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@0.1.12: - version "0.1.12" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" - integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== - -path-to-regexp@3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" - integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -pause@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" - integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== - -pbkdf2@^3.0.17: - version "3.1.5" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz" - integrity sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ== - dependencies: - create-hash "^1.2.0" - create-hmac "^1.1.7" - ripemd160 "^2.0.3" - safe-buffer "^5.2.1" - sha.js "^2.4.12" - to-buffer "^1.2.1" - -pdf-parse@^2.4.5: - version "2.4.5" - resolved "https://registry.npmjs.org/pdf-parse/-/pdf-parse-2.4.5.tgz" - integrity sha512-mHU89HGh7v+4u2ubfnevJ03lmPgQ5WU4CxAVmTSh/sxVTEDYd1er/dKS/A6vg77NX47KTEoihq8jZBLr8Cxuwg== - dependencies: - "@napi-rs/canvas" "0.1.80" - pdfjs-dist "5.4.296" - -pdfjs-dist@5.4.296: - version "5.4.296" - resolved "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.4.296.tgz" - integrity sha512-DlOzet0HO7OEnmUmB6wWGJrrdvbyJKftI1bhMitK7O2N8W2gc757yyYBbINy9IDafXAV9wmKr9t7xsTaNKRG5Q== - optionalDependencies: - "@napi-rs/canvas" "^0.1.80" - -peek-readable@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz" - integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== - -picocolors@^1.1.0, picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -"picomatch@^3 || ^4", picomatch@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== - -picomatch@^4.0.2: - version "4.0.3" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== - -picomatch@4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz" - integrity sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.7: - version "4.0.7" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" - integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== - -pixelmatch@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz" - integrity sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q== - dependencies: - pngjs "^6.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pluralize@8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -pngjs@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz" - integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== - -pngjs@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz" - integrity sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow== - -possible-typed-array-names@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz" - integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - dependencies: - fast-diff "^1.1.2" - -prettier@^2.3.1: - version "2.8.8" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.0.0, prettier@>=3.0.0: - version "3.7.4" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz" - integrity sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA== - -pretty-format@^30.0.0, pretty-format@30.2.0: - version "30.2.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz" - integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== - dependencies: - "@jest/schemas" "30.0.5" - ansi-styles "^5.2.0" - react-is "^18.3.1" - -process-nextick-args@~2.0.0: - 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== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -promise@^8.0.0: - version "8.3.0" - resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" - integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== - dependencies: - asap "~2.0.6" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -punycode@^2.1.0, punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz" - integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== - -qs@^6.11.2: - version "6.14.0" - dependencies: - side-channel "^1.1.0" - -qs@^6.4.0: - version "6.14.0" - dependencies: - side-channel "^1.1.0" - -qs@6.13.0: - version "6.13.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" - integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== - dependencies: - side-channel "^1.0.6" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@^2.4.1: - version "2.5.3" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz" - integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== - dependencies: - bytes "~3.1.2" - http-errors "~2.0.1" - iconv-lite "~0.4.24" - unpipe "~1.0.0" - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^18.3.1: - version "18.3.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -readable-stream@^2.2.2: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^2.3.8: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz" - integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg== - dependencies: - abort-controller "^3.0.0" - buffer "^6.0.3" - events "^3.3.0" - process "^0.11.10" - string_decoder "^1.3.0" - -readable-web-to-node-stream@^3.0.0: - version "3.0.4" - resolved "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz" - integrity sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw== - dependencies: - readable-stream "^4.7.0" - -readdirp@^4.0.1: - version "4.1.2" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz" - integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -recursive-readdir@^2.2.2: - version "2.2.3" - resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" - integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== - dependencies: - minimatch "^3.0.5" - -redis-errors@^1.0.0, redis-errors@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz" - integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== - -redis-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz" - integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== - dependencies: - redis-errors "^1.0.0" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -"reflect-metadata@^0.1.12 || ^0.2.0", reflect-metadata@^0.1.13: - version "0.1.14" - resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz" - integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -req-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz" - integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== - dependencies: - req-from "^2.0.0" - -req-from@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz" - integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== - dependencies: - resolve-from "^3.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.1.6: - version "1.22.11" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz" - integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== - dependencies: - is-core-module "^2.16.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== - -resolve@1.17.0: - version "1.17.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.1.0" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" - integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== - -rfdc@^1.3.1: - version "1.4.1" - resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" - integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz" - integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA== - dependencies: - hash-base "^3.1.2" - inherits "^2.0.4" - -rlp@^2.2.4: - version "2.2.7" - resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-async@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz" - integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.0.0, rxjs@^7.1.0, rxjs@^7.5.5, rxjs@^7.8.1: - version "7.8.2" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz" - integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== - dependencies: - tslib "^2.1.0" - -rxjs@7.8.1: - version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@>=0.6.0: - version "1.4.3" - resolved "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz" - integrity sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ== - -sc-istanbul@^0.4.5: - version "0.4.6" - resolved "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz" - integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.3.0: - version "4.3.3" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz" - integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -schema-utils@^4.3.3: - version "4.3.3" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz" - integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -scrypt-js@^3.0.0, scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@^4.0.1: - version "4.0.4" - resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz" - integrity sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw== - dependencies: - elliptic "^6.5.7" - node-addon-api "^5.0.0" - node-gyp-build "^4.2.0" - -semver@^5.5.0: - version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.3.0: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.7.2, semver@^7.7.3, semver@7.7.3: - version "7.7.3" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" - integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== - -send@0.19.0: - version "0.19.0" - resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-static@1.16.2: - version "1.16.2" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" - integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== - dependencies: - encodeurl "~2.0.0" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.19.0" - -set-function-length@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@~1.2.0, setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.12, sha.js@^2.4.8: - version "2.4.12" - resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz" - integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== - dependencies: - inherits "^2.0.4" - safe-buffer "^5.2.1" - to-buffer "^1.2.0" - -sha1@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz" - integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== - dependencies: - charenc ">= 0.0.1" - crypt ">= 0.0.1" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.3: - version "0.8.5" - resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.0.6, side-channel@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -sift@17.1.3: - version "17.1.3" - resolved "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz" - integrity sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ== - -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -simple-xml-to-json@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz" - integrity sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -solc@0.8.26: - version "0.8.26" - resolved "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz" - integrity sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g== - dependencies: - command-exists "^1.2.8" - commander "^8.1.0" - follow-redirects "^1.12.1" - js-sha3 "0.8.0" - memorystream "^0.3.1" - semver "^5.5.0" - tmp "0.0.33" - -solidity-coverage@^0.8.1, solidity-coverage@^0.8.17: - version "0.8.17" - resolved "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.17.tgz" - integrity sha512-5P8vnB6qVX9tt1MfuONtCTEaEGO/O4WuEidPHIAJjx4sktHHKhO3rFvnE0q8L30nWJPTrcqGQMT7jpE29B2qow== - dependencies: - "@ethersproject/abi" "^5.0.9" - "@solidity-parser/parser" "^0.20.1" - chalk "^2.4.2" - death "^1.1.0" - difflib "^0.2.4" - fs-extra "^8.1.0" - ghost-testrpc "^0.0.2" - global-modules "^2.0.0" - globby "^10.0.1" - jsonschema "^1.2.4" - lodash "^4.17.21" - mocha "^10.2.0" - node-emoji "^1.10.0" - pify "^4.0.1" - recursive-readdir "^2.2.2" - sc-istanbul "^0.4.5" - semver "^7.3.4" - shelljs "^0.8.3" - web3-utils "^1.3.6" - -source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@^0.5.21, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.4: - version "0.7.6" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz" - integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz" - integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== - dependencies: - amdefine ">=0.0.4" - -source-map@0.7.4: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -sparse-bitfield@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" - integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== - dependencies: - memory-pager "^1.0.2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-utils@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -stacktrace-parser@^0.1.10: - version "0.1.11" - resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz" - integrity sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg== - dependencies: - type-fest "^0.7.1" - -standard-as-callback@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz" - integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== - -statuses@~2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz" - integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - -string_decoder@^1.1.1, string_decoder@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.2" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" - integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" - integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== - dependencies: - is-hex-prefixed "1.0.0" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strtok3@^10.2.0: - version "10.3.4" - resolved "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz" - integrity sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg== - dependencies: - "@tokenizer/token" "^0.3.0" - -strtok3@^6.2.4: - version "6.3.0" - resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz" - integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== - dependencies: - "@tokenizer/token" "^0.3.0" - peek-readable "^4.1.0" - -superagent@^10.2.3: - version "10.2.3" - resolved "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz" - integrity sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig== - dependencies: - component-emitter "^1.3.1" - cookiejar "^2.1.4" - debug "^4.3.7" - fast-safe-stringify "^2.1.1" - form-data "^4.0.4" - formidable "^3.5.4" - methods "^1.1.2" - mime "2.6.0" - qs "^6.11.2" - -supertest@^7.1.4: - version "7.1.4" - resolved "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz" - integrity sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg== - dependencies: - methods "^1.1.2" - superagent "^10.2.3" - -supports-color@^3.1.0: - version "3.2.3" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" - integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0, supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -swagger-ui-dist@>=5.0.0, swagger-ui-dist@5.17.14: - version "5.17.14" - resolved "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.14.tgz" - integrity sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw== - -swagger-ui-express@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.1.tgz" - integrity sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA== - dependencies: - swagger-ui-dist ">=5.0.0" - -symbol-observable@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - -sync-request@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz" - integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== - dependencies: - http-response-object "^3.0.1" - sync-rpc "^1.2.1" - then-request "^6.0.0" - -sync-rpc@^1.2.1: - version "1.3.6" - resolved "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz" - integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== - dependencies: - get-port "^3.1.0" - -synckit@^0.11.7, synckit@^0.11.8: - version "0.11.11" - resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz" - integrity sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw== - dependencies: - "@pkgr/core" "^0.2.9" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -table@^6.8.0: - version "6.9.0" - resolved "https://registry.npmjs.org/table/-/table-6.9.0.tgz" - integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz" - integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== - -terser-webpack-plugin@^5.3.10: - version "5.3.16" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz" - integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== - dependencies: - "@jridgewell/trace-mapping" "^0.3.25" - jest-worker "^27.4.5" - schema-utils "^4.3.0" - serialize-javascript "^6.0.2" - terser "^5.31.1" - -terser-webpack-plugin@^5.3.16: - version "5.3.16" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz" - integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== - dependencies: - "@jridgewell/trace-mapping" "^0.3.25" - jest-worker "^27.4.5" - schema-utils "^4.3.0" - serialize-javascript "^6.0.2" - terser "^5.31.1" - -terser@^5.31.1: - version "5.44.1" - resolved "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz" - integrity sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.15.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -then-request@^6.0.0: - version "6.0.2" - resolved "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz" - integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== - dependencies: - "@types/concat-stream" "^1.6.0" - "@types/form-data" "0.0.33" - "@types/node" "^8.0.0" - "@types/qs" "^6.2.31" - caseless "~0.12.0" - concat-stream "^1.6.0" - form-data "^2.2.0" - http-basic "^8.1.1" - http-response-object "^3.0.1" - promise "^8.0.0" - qs "^6.4.0" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tinycolor2@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz" - integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== - -tinyglobby@^0.2.15, tinyglobby@^0.2.6: - version "0.2.15" - resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz" - integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== - dependencies: - fdir "^6.5.0" - picomatch "^4.0.3" - -tmp@^0.0.33, tmp@0.0.33: - version "0.0.33" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz" - integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== - dependencies: - isarray "^2.0.5" - safe-buffer "^5.2.1" - typed-array-buffer "^1.0.3" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@~1.0.1, toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -token-types@^4.1.1: - version "4.2.1" - resolved "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz" - integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== - dependencies: - "@tokenizer/token" "^0.3.0" - ieee754 "^1.2.1" - -token-types@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz" - integrity sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ== - dependencies: - "@borewit/text-codec" "^0.1.0" - "@tokenizer/token" "^0.3.0" - ieee754 "^1.2.1" - -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - -tr46@^5.1.0: - version "5.1.1" - resolved "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz" - integrity sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw== - dependencies: - punycode "^2.3.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tree-kill@1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -ts-api-utils@^1.0.1: - version "1.4.3" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz" - integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== - -ts-api-utils@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz" - integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== - -ts-command-line-args@^2.2.0: - version "2.5.1" - resolved "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^10.0.2: - version "10.1.1" - resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-10.1.1.tgz" - integrity sha512-4aTB7KLHKmUvkjNj8V+EdnmuVTiECzn3K+zIbRthumvHu+j44x3w63xpfs0JL3NGIzGXqoQ7AV591xHO+XrOTw== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-jest@^29.4.6: - version "29.4.6" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz" - integrity sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA== - dependencies: - bs-logger "^0.2.6" - fast-json-stable-stringify "^2.1.0" - handlebars "^4.7.8" - json5 "^2.2.3" - lodash.memoize "^4.1.2" - make-error "^1.3.6" - semver "^7.7.3" - type-fest "^4.41.0" - yargs-parser "^21.1.1" - -ts-loader@^9.4.3: - version "9.5.4" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz" - integrity sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - source-map "^0.7.4" - -ts-node@*, ts-node@^10.9.2, ts-node@>=8.0.0, ts-node@>=9.0.0: - version "10.9.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-node@^10.9.0: - version "10.9.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-node@^10.9.1: - version "10.9.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths-webpack-plugin@4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz" - integrity sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.7.0" - tapable "^2.2.1" - tsconfig-paths "^4.1.2" - -tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0, tsconfig-paths@4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.1.0, tslib@2.8.1: - version "2.8.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tslib@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== - -tsort@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz" - integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== - -tweetnacl@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@^4.0.0, type-detect@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz" - integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -type-fest@^4.41.0: - version "4.41.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" - integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== - -type-is@^1.6.18, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typechain@^8.2.0, typechain@^8.3.1, typechain@^8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz" - integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typed-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz" - integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - is-typed-array "^1.1.14" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typescript-eslint@^8.50.0: - version "8.56.0" - resolved "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz" - integrity sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg== - dependencies: - "@typescript-eslint/eslint-plugin" "8.56.0" - "@typescript-eslint/parser" "8.56.0" - "@typescript-eslint/typescript-estree" "8.56.0" - "@typescript-eslint/utils" "8.56.0" - -typescript@*, "typescript@^3.0.0 || ^4.0.0 || ^5.0.0", typescript@^5.0.0, typescript@^5.1.3, typescript@^5.9.3, typescript@>=2.7, typescript@>=3.7.0, typescript@>=4.2.0, "typescript@>=4.3 <6", typescript@>=4.3.0, typescript@>=4.5.0, typescript@>=4.7.0, typescript@>=4.8.2, typescript@>=4.8.4, "typescript@>=4.8.4 <6.0.0", typescript@>=5.0.4, typescript@>=5.4.0: - version "5.9.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" - integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== - -typescript@>=4.9.5, typescript@>3.6.0, typescript@5.7.2: - version "5.7.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz" - integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -uglify-js@^3.1.4: - version "3.19.3" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz" - integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== - -uid@2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz" - integrity sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g== - dependencies: - "@lukeed/csprng" "^1.0.0" - -uint8array-extras@^1.4.0: - version "1.5.0" - resolved "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz" - integrity sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A== - -undici-types@~6.19.2: - version "6.19.8" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" - integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== - -undici-types@~6.21.0, undici-types@~7.16.0: - version "7.16.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz" - integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== - -undici@^5.14.0: - version "5.29.0" - resolved "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz" - integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== - dependencies: - "@fastify/busboy" "^2.0.0" - -undici@^6.16.1: - version "6.22.0" - resolved "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz" - integrity sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw== - -universal-user-agent@^7.0.0, universal-user-agent@^7.0.2: - version "7.0.3" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz" - integrity sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -unpipe@~1.0.0, unpipe@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unrs-resolver@^1.7.11: - version "1.11.1" - resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz" - integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== - dependencies: - napi-postinstall "^0.3.0" - optionalDependencies: - "@unrs/resolver-binding-android-arm-eabi" "1.11.1" - "@unrs/resolver-binding-android-arm64" "1.11.1" - "@unrs/resolver-binding-darwin-arm64" "1.11.1" - "@unrs/resolver-binding-darwin-x64" "1.11.1" - "@unrs/resolver-binding-freebsd-x64" "1.11.1" - "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1" - "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1" - "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1" - "@unrs/resolver-binding-linux-arm64-musl" "1.11.1" - "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1" - "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1" - "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1" - "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1" - "@unrs/resolver-binding-linux-x64-gnu" "1.11.1" - "@unrs/resolver-binding-linux-x64-musl" "1.11.1" - "@unrs/resolver-binding-wasm32-wasi" "1.11.1" - "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1" - "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1" - "@unrs/resolver-binding-win32-x64-msvc" "1.11.1" - -update-browserslist-db@^1.2.0: - version "1.2.3" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz" - integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.1" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urijs@^1.19.1: - version "1.19.11" - resolved "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz" - integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== - -utf8@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - -utif2@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz" - integrity sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w== - dependencies: - pako "^1.0.11" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@^1.0.1, utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@*, uuid@^13.0.0: - version "13.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz" - integrity sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz" - integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.3.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz" - integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -validator@^13.15.20: - version "13.15.26" - resolved "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz" - integrity sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -viem@^2.30.0, viem@^2.43.3: - version "2.43.3" - dependencies: - "@noble/curves" "1.9.1" - "@noble/hashes" "1.8.0" - "@scure/bip32" "1.7.0" - "@scure/bip39" "1.6.0" - abitype "1.2.3" - isows "1.0.7" - ox "0.11.1" - ws "8.18.3" - -viem@^2.43.2: - version "2.43.2" - dependencies: - "@noble/curves" "1.9.1" - "@noble/hashes" "1.8.0" - "@scure/bip32" "1.7.0" - "@scure/bip39" "1.6.0" - abitype "1.2.3" - isows "1.0.7" - ox "0.10.6" - ws "8.18.3" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -watchpack@^2.4.1, watchpack@^2.4.4: - version "2.4.4" - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -web3-utils@^1.3.6: - version "1.10.4" - resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz" - integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== - dependencies: - "@ethereumjs/util" "^8.1.0" - bn.js "^5.2.1" - ethereum-bloom-filters "^1.0.6" - ethereum-cryptography "^2.1.2" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-node-externals@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" - integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== - -webpack-sources@^3.2.3, webpack-sources@^3.3.3: - version "3.3.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz" - integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== - -webpack@^5.0.0, webpack@^5.1.0: - version "5.104.1" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz" - integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== - dependencies: - "@types/eslint-scope" "^3.7.7" - "@types/estree" "^1.0.8" - "@types/json-schema" "^7.0.15" - "@webassemblyjs/ast" "^1.14.1" - "@webassemblyjs/wasm-edit" "^1.14.1" - "@webassemblyjs/wasm-parser" "^1.14.1" - acorn "^8.15.0" - acorn-import-phases "^1.0.3" - browserslist "^4.28.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.4" - es-module-lexer "^2.0.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.3.1" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^4.3.3" - tapable "^2.3.0" - terser-webpack-plugin "^5.3.16" - watchpack "^2.4.4" - webpack-sources "^3.3.3" - -webpack@^5.11.0, webpack@5.97.1: - version "5.97.1" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz" - integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== - dependencies: - "@types/eslint-scope" "^3.7.7" - "@types/estree" "^1.0.6" - "@webassemblyjs/ast" "^1.14.1" - "@webassemblyjs/wasm-edit" "^1.14.1" - "@webassemblyjs/wasm-parser" "^1.14.1" - acorn "^8.14.0" - browserslist "^4.24.0" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.1" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - -whatwg-url@^14.1.0: - version "14.2.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz" - integrity sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw== - dependencies: - tr46 "^5.1.0" - webidl-conversions "^7.0.0" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-typed-array@^1.1.16: - version "1.1.19" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz" - integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.4" - for-each "^0.3.5" - get-proto "^1.0.1" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - -which@^1.1.1, which@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@^1.2.5, word-wrap@~1.2.3: - version "1.2.5" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -workerpool@^6.5.1: - version "6.5.1" - resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz" - integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.0.1: - version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -ws@*, ws@8.18.3: - version "8.18.3" - resolved "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== - -ws@^7.4.6: - version "7.5.10" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -ws@8.17.1: - version "8.17.1" - resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== - -ws@8.18.0: - version "8.18.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -xml-parse-from-string@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz" - integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== - -xml2js@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz" - integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xml2js@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" - integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - -xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^20.2.2, yargs-parser@^20.2.9: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.1.1, yargs-parser@21.1.1: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-unparser@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -"zod@^3.22.0 || ^4.0.0", zod@^3.23.8: - version "3.25.76" - resolved "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz" - integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@adraffy/ens-normalize@npm:1.10.1": + version: 1.10.1 + resolution: "@adraffy/ens-normalize@npm:1.10.1" + checksum: 10c0/fdd647604e8fac6204921888aaf5a6bc65eabf0d2921bc5f93b64d01f4bc33ead167c1445f7de05468d05cd92ac31b74c68d2be840c62b79d73693308f885c06 + languageName: node + linkType: hard + +"@adraffy/ens-normalize@npm:^1.11.0": + version: 1.11.1 + resolution: "@adraffy/ens-normalize@npm:1.11.1" + checksum: 10c0/b364e2a57131db278ebf2f22d1a1ac6d8aea95c49dd2bbbc1825870b38aa91fd8816aba580a1f84edc50a45eb6389213dacfd1889f32893afc8549a82d304767 + languageName: node + linkType: hard + +"@angular-devkit/core@npm:17.3.11": + version: 17.3.11 + resolution: "@angular-devkit/core@npm:17.3.11" + dependencies: + ajv: "npm:8.12.0" + ajv-formats: "npm:2.1.1" + jsonc-parser: "npm:3.2.1" + picomatch: "npm:4.0.1" + rxjs: "npm:7.8.1" + source-map: "npm:0.7.4" + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + checksum: 10c0/c6d3ed77e98568d3f2126e5682631ceec32cdc6bb1c642bf0c8bcbd5a71ee521941e6ff981ec104703e668cfb886043e0bd239442645bef6151d265799128521 + languageName: node + linkType: hard + +"@angular-devkit/schematics-cli@npm:17.3.11": + version: 17.3.11 + resolution: "@angular-devkit/schematics-cli@npm:17.3.11" + dependencies: + "@angular-devkit/core": "npm:17.3.11" + "@angular-devkit/schematics": "npm:17.3.11" + ansi-colors: "npm:4.1.3" + inquirer: "npm:9.2.15" + symbol-observable: "npm:4.0.0" + yargs-parser: "npm:21.1.1" + bin: + schematics: bin/schematics.js + checksum: 10c0/042c8a740f20ff4e5675a49d74551e936311b82a6f22d9d3eaefe032dc4ac61ad679004524bf4a69fbf394c9d1eb562d20cc5abd5571131cd6e8bbbe3f3bb768 + languageName: node + linkType: hard + +"@angular-devkit/schematics@npm:17.3.11": + version: 17.3.11 + resolution: "@angular-devkit/schematics@npm:17.3.11" + dependencies: + "@angular-devkit/core": "npm:17.3.11" + jsonc-parser: "npm:3.2.1" + magic-string: "npm:0.30.8" + ora: "npm:5.4.1" + rxjs: "npm:7.8.1" + checksum: 10c0/981c674e724408294faa271492e49719c5854aeadfab454c0bdbe761d2ffb1e611881a236f520f6c712fe11bac7283d1edb267d8bdc2ff1b1ddc57dcd99bfaf4 + languageName: node + linkType: hard + +"@arbitrum/contracts@workspace:packages/arbitrum-contracts": + version: 0.0.0-use.local + resolution: "@arbitrum/contracts@workspace:packages/arbitrum-contracts" + dependencies: + "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" + "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" + "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" + "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" + "@nomicfoundation/hardhat-verify": "npm:^1.1.1" + "@nomicfoundation/hardhat-viem": "npm:^3.0.1" + "@openzeppelin/contracts": "npm:5.4.0" + "@typechain/ethers-v6": "npm:^0.5.1" + "@typechain/hardhat": "npm:^8.0.0" + "@types/chai": "npm:^4.3.11" + "@types/mocha": "npm:^10.0.10" + "@types/node": "npm:^25.0.3" + chai: "npm:^4.3.10" + dotenv: "npm:^17.2.3" + ethers: "npm:^6.16.0" + hardhat: "npm:^2.22.3" + hardhat-gas-reporter: "npm:^1.0.10" + solidity-coverage: "npm:^0.8.17" + ts-node: "npm:^10.9.2" + typechain: "npm:^8.3.2" + typescript: "npm:^5.9.3" + viem: "npm:^2.43.3" + languageName: unknown + linkType: soft + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.27.1" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.27.2": + version: 7.28.5 + resolution: "@babel/compat-data@npm:7.28.5" + checksum: 10c0/702a25de73087b0eba325c1d10979eed7c9b6662677386ba7b5aa6eace0fc0676f78343bae080a0176ae26f58bd5535d73b9d0fbb547fef377692e8b249353a7 + languageName: node + linkType: hard + +"@babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": + version: 7.28.5 + resolution: "@babel/core@npm:7.28.5" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.5" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.28.3" + "@babel/helpers": "npm:^7.28.4" + "@babel/parser": "npm:^7.28.5" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" + "@jridgewell/remapping": "npm:^2.3.5" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/535f82238027621da6bdffbdbe896ebad3558b311d6f8abc680637a9859b96edbf929ab010757055381570b29cf66c4a295b5618318d27a4273c0e2033925e72 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/generator@npm:7.28.5" + dependencies: + "@babel/parser": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/9f219fe1d5431b6919f1a5c60db8d5d34fe546c0d8f5a8511b32f847569234ffc8032beb9e7404649a143f54e15224ecb53a3d11b6bb85c3203e573d91fca752 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" + dependencies: + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 + languageName: node + linkType: hard + +"@babel/helper-globals@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/helper-globals@npm:7.28.0" + checksum: 10c0/5a0cd0c0e8c764b5f27f2095e4243e8af6fa145daea2b41b53c0c1414fe6ff139e3640f4e2207ae2b3d2153a1abd346f901c26c290ee7cb3881dd922d4ee9232 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-module-transforms@npm:7.28.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/549be62515a6d50cd4cfefcab1b005c47f89bd9135a22d602ee6a5e3a01f27571868ada10b75b033569f24dc4a2bb8d04bfa05ee75c16da7ade2d0db1437fcdb + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-validator-identifier@npm:7.28.5" + checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/helpers@npm:7.28.4" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.4" + checksum: 10c0/aaa5fb8098926dfed5f223adf2c5e4c7fbba4b911b73dfec2d7d3083f8ba694d201a206db673da2d9b3ae8c01793e795767654558c450c8c14b4c2175b4fcb44 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/parser@npm:7.28.5" + dependencies: + "@babel/types": "npm:^7.28.5" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/5bbe48bf2c79594ac02b490a41ffde7ef5aa22a9a88ad6bcc78432a6ba8a9d638d531d868bd1f104633f1f6bba9905746e15185b8276a3756c42b765d131b1ef + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bc5afe6a458d5f0492c02a54ad98c5756a0c13bd6d20609aae65acd560a9e141b0876da5f358dce34ea136f271c1016df58b461184d7ae9c4321e0f98588bc84 + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/11589b4c89c66ef02d57bf56c6246267851ec0c361f58929327dc3e070b0dab644be625bbe7fb4c4df30c3634bfdfe31244e1f517be397d2def1487dbbe3c37d + languageName: node + linkType: hard + +"@babel/template@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/traverse@npm:7.28.5" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.5" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.5" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.5" + debug: "npm:^4.3.1" + checksum: 10c0/f6c4a595993ae2b73f2d4cd9c062f2e232174d293edd4abe1d715bd6281da8d99e47c65857e8d0917d9384c65972f4acdebc6749a7c40a8fcc38b3c7fb3e706f + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/types@npm:7.28.5" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10c0/a5a483d2100befbf125793640dec26b90b95fd233a94c19573325898a5ce1e52cdfa96e495c7dcc31b5eca5b66ce3e6d4a0f5a4a62daec271455959f208ab08a + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + +"@borewit/text-codec@npm:^0.1.0": + version: 0.1.1 + resolution: "@borewit/text-codec@npm:0.1.1" + checksum: 10c0/c92606b355111053f9db47d485c8679cc09a5be0eb2738aad5b922d3744465f2fce47144ffb27d5106fa431d1d2e5a2e0140d0a22351dccf49693098702c0274 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + languageName: node + linkType: hard + +"@emnapi/core@npm:^1.4.3": + version: 1.8.1 + resolution: "@emnapi/core@npm:1.8.1" + dependencies: + "@emnapi/wasi-threads": "npm:1.1.0" + tslib: "npm:^2.4.0" + checksum: 10c0/2c242f4b49779bac403e1cbcc98edacdb1c8ad36562408ba9a20663824669e930bc8493be46a2522d9dc946b8d96cd7073970bae914928c7671b5221c85b432e + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.4.3": + version: 1.8.1 + resolution: "@emnapi/runtime@npm:1.8.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f4929d75e37aafb24da77d2f58816761fe3f826aad2e37fa6d4421dac9060cbd5098eea1ac3c9ecc4526b89deb58153852fa432f87021dc57863f2ff726d713f + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.1.0": + version: 1.1.0 + resolution: "@emnapi/wasi-threads@npm:1.1.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/e6d54bf2b1e64cdd83d2916411e44e579b6ae35d5def0dea61a3c452d9921373044dff32a8b8473ae60c80692bdc39323e98b96a3f3d87ba6886b24dd0ef7ca1 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.8.0": + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.9.1": + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2, @eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.21.1": + version: 0.21.1 + resolution: "@eslint/config-array@npm:0.21.1" + dependencies: + "@eslint/object-schema": "npm:^2.1.7" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10c0/2f657d4edd6ddcb920579b72e7a5b127865d4c3fb4dda24f11d5c4f445a93ca481aebdbd6bf3291c536f5d034458dbcbb298ee3b698bc6c9dd02900fe87eec3c + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.4.2": + version: 0.4.2 + resolution: "@eslint/config-helpers@npm:0.4.2" + dependencies: + "@eslint/core": "npm:^0.17.0" + checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.17.0": + version: 0.17.0 + resolution: "@eslint/core@npm:0.17.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.3 + resolution: "@eslint/eslintrc@npm:3.3.3" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.1" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/532c7acc7ddd042724c28b1f020bd7bf148fcd4653bb44c8314168b5f772508c842ce4ee070299cac51c5c5757d2124bdcfcef5551c8c58ff9986e3e17f2260d + languageName: node + linkType: hard + +"@eslint/js@npm:8.57.1": + version: 8.57.1 + resolution: "@eslint/js@npm:8.57.1" + checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223 + languageName: node + linkType: hard + +"@eslint/js@npm:9.39.2, @eslint/js@npm:^9.39.2": + version: 9.39.2 + resolution: "@eslint/js@npm:9.39.2" + checksum: 10c0/00f51c52b04ac79faebfaa65a9652b2093b9c924e945479f1f3945473f78aee83cbc76c8d70bbffbf06f7024626575b16d97b66eab16182e1d0d39daff2f26f5 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.7": + version: 2.1.7 + resolution: "@eslint/object-schema@npm:2.1.7" + checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.4.1": + version: 0.4.1 + resolution: "@eslint/plugin-kit@npm:0.4.1" + dependencies: + "@eslint/core": "npm:^0.17.0" + levn: "npm:^0.4.1" + checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b + languageName: node + linkType: hard + +"@ethereumjs/rlp@npm:^4.0.1": + version: 4.0.1 + resolution: "@ethereumjs/rlp@npm:4.0.1" + bin: + rlp: bin/rlp + checksum: 10c0/78379f288e9d88c584c2159c725c4a667a9742981d638bad760ed908263e0e36bdbd822c0a902003e0701195fd1cbde7adad621cd97fdfbf552c45e835ce022c + languageName: node + linkType: hard + +"@ethereumjs/rlp@npm:^5.0.2": + version: 5.0.2 + resolution: "@ethereumjs/rlp@npm:5.0.2" + bin: + rlp: bin/rlp.cjs + checksum: 10c0/56162eaee96dd429f0528a9e51b453398546d57f26057b3e188f2aa09efe8bd430502971c54238ca9cc42af41b0a3f137cf67b9e020d52bc83caca043d64911b + languageName: node + linkType: hard + +"@ethereumjs/util@npm:^8.1.0": + version: 8.1.0 + resolution: "@ethereumjs/util@npm:8.1.0" + dependencies: + "@ethereumjs/rlp": "npm:^4.0.1" + ethereum-cryptography: "npm:^2.0.0" + micro-ftch: "npm:^0.3.1" + checksum: 10c0/4e6e0449236f66b53782bab3b387108f0ddc050835bfe1381c67a7c038fea27cb85ab38851d98b700957022f0acb6e455ca0c634249cfcce1a116bad76500160 + languageName: node + linkType: hard + +"@ethereumjs/util@npm:^9.1.0": + version: 9.1.0 + resolution: "@ethereumjs/util@npm:9.1.0" + dependencies: + "@ethereumjs/rlp": "npm:^5.0.2" + ethereum-cryptography: "npm:^2.2.1" + checksum: 10c0/7b55c79d90e55da873037b8283c37b61164f1712b194e2783bdb0a3401ff0999dc9d1404c7051589f71fb79e8aeb6952ec43ede21dd0028d7d9b1c07abcfff27 + languageName: node + linkType: hard + +"@ethersproject/abi@npm:5.8.0, @ethersproject/abi@npm:^5.0.9, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/abi@npm:5.8.0" + dependencies: + "@ethersproject/address": "npm:^5.8.0" + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/constants": "npm:^5.8.0" + "@ethersproject/hash": "npm:^5.8.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/strings": "npm:^5.8.0" + checksum: 10c0/6b759247a2f43ecc1548647d0447d08de1e946dfc7e71bfb014fa2f749c1b76b742a1d37394660ebab02ff8565674b3593fdfa011e16a5adcfc87ca4d85af39c + languageName: node + linkType: hard + +"@ethersproject/abstract-provider@npm:5.8.0, @ethersproject/abstract-provider@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/abstract-provider@npm:5.8.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/networks": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/transactions": "npm:^5.8.0" + "@ethersproject/web": "npm:^5.8.0" + checksum: 10c0/9c183da1d037b272ff2b03002c3d801088d0534f88985f4983efc5f3ebd59b05f04bc05db97792fe29ddf87eeba3c73416e5699615f183126f85f877ea6c8637 + languageName: node + linkType: hard + +"@ethersproject/abstract-signer@npm:5.8.0, @ethersproject/abstract-signer@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/abstract-signer@npm:5.8.0" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.8.0" + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + checksum: 10c0/143f32d7cb0bc7064e45674d4a9dffdb90d6171425d20e8de9dc95765be960534bae7246ead400e6f52346624b66569d9585d790eedd34b0b6b7f481ec331cc2 + languageName: node + linkType: hard + +"@ethersproject/address@npm:5.8.0, @ethersproject/address@npm:^5.0.2, @ethersproject/address@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/address@npm:5.8.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/rlp": "npm:^5.8.0" + checksum: 10c0/8bac8a4b567c75c1abc00eeca08c200de1a2d5cf76d595dc04fa4d7bff9ffa5530b2cdfc5e8656cfa8f6fa046de54be47620a092fb429830a8ddde410b9d50bc + languageName: node + linkType: hard + +"@ethersproject/base64@npm:5.8.0, @ethersproject/base64@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/base64@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + checksum: 10c0/60ae6d1e2367d70f4090b717852efe62075442ae59aeac9bb1054fe8306a2de8ef0b0561e7fb4666ecb1f8efa1655d683dd240675c3a25d6fa867245525a63ca + languageName: node + linkType: hard + +"@ethersproject/basex@npm:5.8.0, @ethersproject/basex@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/basex@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + checksum: 10c0/46a94ba9678fc458ab0bee4a0af9f659f1d3f5df5bb98485924fe8ecbd46eda37d81f95f882243d56f0f5efe051b0749163f5056e48ff836c5fba648754d4956 + languageName: node + linkType: hard + +"@ethersproject/bignumber@npm:5.8.0, @ethersproject/bignumber@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/bignumber@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + bn.js: "npm:^5.2.1" + checksum: 10c0/8e87fa96999d59d0ab4c814c79e3a8354d2ba914dfa78cf9ee688f53110473cec0df0db2aaf9d447e84ab2dbbfca39979abac4f2dac69fef4d080f4cc3e29613 + languageName: node + linkType: hard + +"@ethersproject/bytes@npm:5.8.0, @ethersproject/bytes@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/bytes@npm:5.8.0" + dependencies: + "@ethersproject/logger": "npm:^5.8.0" + checksum: 10c0/47ef798f3ab43b95dc74097b2c92365c919308ecabc3e34d9f8bf7f886fa4b99837ba5cf4dc8921baaaafe6899982f96b0e723b3fc49132c061f83d1ca3fed8b + languageName: node + linkType: hard + +"@ethersproject/constants@npm:5.8.0, @ethersproject/constants@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/constants@npm:5.8.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.8.0" + checksum: 10c0/374b3c2c6da24f8fef62e2316eae96faa462826c0774ef588cd7313ae7ddac8eb1bb85a28dad80123148be2ba0821c217c14ecfc18e2e683c72adc734b6248c9 + languageName: node + linkType: hard + +"@ethersproject/contracts@npm:5.8.0": + version: 5.8.0 + resolution: "@ethersproject/contracts@npm:5.8.0" + dependencies: + "@ethersproject/abi": "npm:^5.8.0" + "@ethersproject/abstract-provider": "npm:^5.8.0" + "@ethersproject/abstract-signer": "npm:^5.8.0" + "@ethersproject/address": "npm:^5.8.0" + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/constants": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/transactions": "npm:^5.8.0" + checksum: 10c0/49961b92334c4f2fab5f4da8f3119e97c1dc39cc8695e3043931757968213f5e732c00bf896193cf0186dcb33101dcd6efb70690dee0dd2cfbfd3843f55485aa + languageName: node + linkType: hard + +"@ethersproject/hash@npm:5.8.0, @ethersproject/hash@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/hash@npm:5.8.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.8.0" + "@ethersproject/address": "npm:^5.8.0" + "@ethersproject/base64": "npm:^5.8.0" + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/strings": "npm:^5.8.0" + checksum: 10c0/72a287d4d70fae716827587339ffb449b8c23ef8728db6f8a661f359f7cb1e5ffba5b693c55e09d4e7162bf56af4a0e98a334784e0706d98102d1a5786241537 + languageName: node + linkType: hard + +"@ethersproject/hdnode@npm:5.8.0, @ethersproject/hdnode@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/hdnode@npm:5.8.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.8.0" + "@ethersproject/basex": "npm:^5.8.0" + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/pbkdf2": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/sha2": "npm:^5.8.0" + "@ethersproject/signing-key": "npm:^5.8.0" + "@ethersproject/strings": "npm:^5.8.0" + "@ethersproject/transactions": "npm:^5.8.0" + "@ethersproject/wordlists": "npm:^5.8.0" + checksum: 10c0/da0ac7d60e76a76471be1f4f3bba3f28a24165dc3b63c6930a9ec24481e9f8b23936e5fc96363b3591cdfda4381d4623f25b06898b89bf5530b158cb5ea58fdd + languageName: node + linkType: hard + +"@ethersproject/json-wallets@npm:5.8.0, @ethersproject/json-wallets@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/json-wallets@npm:5.8.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.8.0" + "@ethersproject/address": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/hdnode": "npm:^5.8.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/pbkdf2": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/random": "npm:^5.8.0" + "@ethersproject/strings": "npm:^5.8.0" + "@ethersproject/transactions": "npm:^5.8.0" + aes-js: "npm:3.0.0" + scrypt-js: "npm:3.0.1" + checksum: 10c0/6c5cac87bdfac9ac47bf6ac25168a85865dc02e398e97f83820568c568a8cb27cf13a3a5d482f71a2534c7d704a3faa46023bb7ebe8737872b376bec1b66c67b + languageName: node + linkType: hard + +"@ethersproject/keccak256@npm:5.8.0, @ethersproject/keccak256@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/keccak256@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + js-sha3: "npm:0.8.0" + checksum: 10c0/cd93ac6a5baf842313cde7de5e6e2c41feeea800db9e82955f96e7f3462d2ac6a6a29282b1c9e93b84ce7c91eec02347043c249fd037d6051214275bfc7fe99f + languageName: node + linkType: hard + +"@ethersproject/logger@npm:5.8.0, @ethersproject/logger@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/logger@npm:5.8.0" + checksum: 10c0/7f39f33e8f254ee681d4778bb71ce3c5de248e1547666f85c43bfbc1c18996c49a31f969f056b66d23012f2420f2d39173107284bc41eb98d0482ace1d06403e + languageName: node + linkType: hard + +"@ethersproject/networks@npm:5.8.0, @ethersproject/networks@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/networks@npm:5.8.0" + dependencies: + "@ethersproject/logger": "npm:^5.8.0" + checksum: 10c0/3f23bcc4c3843cc9b7e4b9f34df0a1f230b24dc87d51cdad84552302159a84d7899cd80c8a3d2cf8007b09ac373a5b10407007adde23d4c4881a4d6ee6bc4b9c + languageName: node + linkType: hard + +"@ethersproject/pbkdf2@npm:5.8.0, @ethersproject/pbkdf2@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/pbkdf2@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/sha2": "npm:^5.8.0" + checksum: 10c0/0397cf5370cfd568743c3e46ac431f1bd425239baa2691689f1430997d44d310cef5051ea9ee53fabe444f96aced8d6324b41da698e8d7021389dce36251e7e9 + languageName: node + linkType: hard + +"@ethersproject/properties@npm:5.8.0, @ethersproject/properties@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/properties@npm:5.8.0" + dependencies: + "@ethersproject/logger": "npm:^5.8.0" + checksum: 10c0/20256d7eed65478a38dabdea4c3980c6591b7b75f8c45089722b032ceb0e1cd3dd6dd60c436cfe259337e6909c28d99528c172d06fc74bbd61be8eb9e68be2e6 + languageName: node + linkType: hard + +"@ethersproject/providers@npm:5.8.0": + version: 5.8.0 + resolution: "@ethersproject/providers@npm:5.8.0" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.8.0" + "@ethersproject/abstract-signer": "npm:^5.8.0" + "@ethersproject/address": "npm:^5.8.0" + "@ethersproject/base64": "npm:^5.8.0" + "@ethersproject/basex": "npm:^5.8.0" + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/constants": "npm:^5.8.0" + "@ethersproject/hash": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/networks": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/random": "npm:^5.8.0" + "@ethersproject/rlp": "npm:^5.8.0" + "@ethersproject/sha2": "npm:^5.8.0" + "@ethersproject/strings": "npm:^5.8.0" + "@ethersproject/transactions": "npm:^5.8.0" + "@ethersproject/web": "npm:^5.8.0" + bech32: "npm:1.1.4" + ws: "npm:8.18.0" + checksum: 10c0/893dba429443bbf0a3eadef850e772ad1c706cf17ae6ae48b73467a23b614a3f461e9004850e24439b5c73d30e9259bc983f0f90a911ba11af749e6384fd355a + languageName: node + linkType: hard + +"@ethersproject/random@npm:5.8.0, @ethersproject/random@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/random@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + checksum: 10c0/e44c010715668fc29383141ae16cd2ec00c34a434d47e23338e740b8c97372515d95d3b809b969eab2055c19e92b985ca591d326fbb71270c26333215f9925d1 + languageName: node + linkType: hard + +"@ethersproject/rlp@npm:5.8.0, @ethersproject/rlp@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/rlp@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + checksum: 10c0/db742ec9c1566d6441242cc2c2ae34c1e5304d48e1fe62bc4e53b1791f219df211e330d2de331e0e4f74482664e205c2e4220e76138bd71f1ec07884e7f5221b + languageName: node + linkType: hard + +"@ethersproject/sha2@npm:5.8.0, @ethersproject/sha2@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/sha2@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + hash.js: "npm:1.1.7" + checksum: 10c0/eab941907b7d40ee8436acaaedee32306ed4de2cb9ab37543bc89b1dd2a78f28c8da21efd848525fa1b04a78575be426cfca28f5392f4d28ce6c84e7c26a9421 + languageName: node + linkType: hard + +"@ethersproject/signing-key@npm:5.8.0, @ethersproject/signing-key@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/signing-key@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + bn.js: "npm:^5.2.1" + elliptic: "npm:6.6.1" + hash.js: "npm:1.1.7" + checksum: 10c0/a7ff6cd344b0609737a496b6d5b902cf5528ed5a7ce2c0db5e7b69dc491d1810d1d0cd51dddf9dc74dd562ab4961d76e982f1750359b834c53c202e85e4c8502 + languageName: node + linkType: hard + +"@ethersproject/solidity@npm:5.8.0": + version: 5.8.0 + resolution: "@ethersproject/solidity@npm:5.8.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/sha2": "npm:^5.8.0" + "@ethersproject/strings": "npm:^5.8.0" + checksum: 10c0/5b5e0531bcec1d919cfbd261694694c8999ca5c379c1bb276ec779b896d299bb5db8ed7aa5652eb2c7605fe66455832b56ef123dec07f6ddef44231a7aa6fe6c + languageName: node + linkType: hard + +"@ethersproject/strings@npm:5.8.0, @ethersproject/strings@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/strings@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/constants": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + checksum: 10c0/6db39503c4be130110612b6d593a381c62657e41eebf4f553247ebe394fda32cdf74ff645daee7b7860d209fd02c7e909a95b1f39a2f001c662669b9dfe81d00 + languageName: node + linkType: hard + +"@ethersproject/transactions@npm:5.8.0, @ethersproject/transactions@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/transactions@npm:5.8.0" + dependencies: + "@ethersproject/address": "npm:^5.8.0" + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/constants": "npm:^5.8.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/rlp": "npm:^5.8.0" + "@ethersproject/signing-key": "npm:^5.8.0" + checksum: 10c0/dd32f090df5945313aafa8430ce76834479750d6655cb786c3b65ec841c94596b14d3c8c59ee93eed7b4f32f27d321a9b8b43bc6bb51f7e1c6694f82639ffe68 + languageName: node + linkType: hard + +"@ethersproject/units@npm:5.8.0": + version: 5.8.0 + resolution: "@ethersproject/units@npm:5.8.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/constants": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + checksum: 10c0/5f92b8379a58024078fce6a4cbf7323cfd79bc41ef8f0a7bbf8be9c816ce18783140ab0d5c8d34ed615639aef7fc3a2ed255e92809e3558a510c4f0d49e27309 + languageName: node + linkType: hard + +"@ethersproject/wallet@npm:5.8.0": + version: 5.8.0 + resolution: "@ethersproject/wallet@npm:5.8.0" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.8.0" + "@ethersproject/abstract-signer": "npm:^5.8.0" + "@ethersproject/address": "npm:^5.8.0" + "@ethersproject/bignumber": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/hash": "npm:^5.8.0" + "@ethersproject/hdnode": "npm:^5.8.0" + "@ethersproject/json-wallets": "npm:^5.8.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/random": "npm:^5.8.0" + "@ethersproject/signing-key": "npm:^5.8.0" + "@ethersproject/transactions": "npm:^5.8.0" + "@ethersproject/wordlists": "npm:^5.8.0" + checksum: 10c0/6da450872dda3d9008bad3ccf8467816a63429241e51c66627647123c0fe5625494c4f6c306e098eb8419cc5702ac017d41f5161af5ff670a41fe5d199883c09 + languageName: node + linkType: hard + +"@ethersproject/web@npm:5.8.0, @ethersproject/web@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/web@npm:5.8.0" + dependencies: + "@ethersproject/base64": "npm:^5.8.0" + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/strings": "npm:^5.8.0" + checksum: 10c0/e3cd547225638db6e94fcd890001c778d77adb0d4f11a7f8c447e961041678f3fbfaffe77a962c7aa3f6597504232442e7015f2335b1788508a108708a30308a + languageName: node + linkType: hard + +"@ethersproject/wordlists@npm:5.8.0, @ethersproject/wordlists@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/wordlists@npm:5.8.0" + dependencies: + "@ethersproject/bytes": "npm:^5.8.0" + "@ethersproject/hash": "npm:^5.8.0" + "@ethersproject/logger": "npm:^5.8.0" + "@ethersproject/properties": "npm:^5.8.0" + "@ethersproject/strings": "npm:^5.8.0" + checksum: 10c0/e230a2ba075006bc3a2538e096003e43ef9ba453317f37a4d99638720487ec447c1fa61a592c80483f8a8ad6466511cf4cf5c49cf84464a1679999171ce311f4 + languageName: node + linkType: hard + +"@fastify/busboy@npm:^2.0.0": + version: 2.1.1 + resolution: "@fastify/busboy@npm:2.1.1" + checksum: 10c0/6f8027a8cba7f8f7b736718b013f5a38c0476eea67034c94a0d3c375e2b114366ad4419e6a6fa7ffc2ef9c6d3e0435d76dd584a7a1cbac23962fda7650b579e3 + languageName: node + linkType: hard + +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.7 + resolution: "@humanfs/node@npm:0.16.7" + dependencies: + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.4.0" + checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.13.0": + version: 0.13.0 + resolution: "@humanwhocodes/config-array@npm:0.13.0" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.3" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.3": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 + languageName: node + linkType: hard + +"@ioredis/commands@npm:1.4.0": + version: 1.4.0 + resolution: "@ioredis/commands@npm:1.4.0" + checksum: 10c0/99afe21fba794f84a2b84cceabcc370a7622e7b8b97a6589456c07c9fa62a15d54c5546f6f7214fb9a2458b1fa87579d5c531aaf48e06cc9be156d5923892c8d + languageName: node + linkType: hard + +"@ioredis/commands@npm:1.5.0": + version: 1.5.0 + resolution: "@ioredis/commands@npm:1.5.0" + checksum: 10c0/2d192d967a21f0192e17310d27ead02b0bdd504e834c782714abe641190ebfb548ad307fd89fd2d80db97c462afdc69ab4a4383831ab64ce61fe92f130d8b466 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/console@npm:30.2.0" + dependencies: + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + jest-message-util: "npm:30.2.0" + jest-util: "npm:30.2.0" + slash: "npm:^3.0.0" + checksum: 10c0/ecf7ca43698863095500710a5aa08c38b1731c9d89ba32f4d9da7424b53ce1e86b3db8ccbbb27b695f49b4f94bc1d7d0c63c751d73c83d59488a682bc98b7e70 + languageName: node + linkType: hard + +"@jest/core@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/core@npm:30.2.0" + dependencies: + "@jest/console": "npm:30.2.0" + "@jest/pattern": "npm:30.0.1" + "@jest/reporters": "npm:30.2.0" + "@jest/test-result": "npm:30.2.0" + "@jest/transform": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-changed-files: "npm:30.2.0" + jest-config: "npm:30.2.0" + jest-haste-map: "npm:30.2.0" + jest-message-util: "npm:30.2.0" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.2.0" + jest-resolve-dependencies: "npm:30.2.0" + jest-runner: "npm:30.2.0" + jest-runtime: "npm:30.2.0" + jest-snapshot: "npm:30.2.0" + jest-util: "npm:30.2.0" + jest-validate: "npm:30.2.0" + jest-watcher: "npm:30.2.0" + micromatch: "npm:^4.0.8" + pretty-format: "npm:30.2.0" + slash: "npm:^3.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/03b3e35df3bbbbe28e2b53c0fe82d39b748d99b3bc88bb645c76593cdca44d7115f03ef6e6a1715f0862151d0ebab496199283def248fc05eb520f6aec6b20f3 + languageName: node + linkType: hard + +"@jest/diff-sequences@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/diff-sequences@npm:30.0.1" + checksum: 10c0/3a840404e6021725ef7f86b11f7b2d13dd02846481264db0e447ee33b7ee992134e402cdc8b8b0ac969d37c6c0183044e382dedee72001cdf50cfb3c8088de74 + languageName: node + linkType: hard + +"@jest/environment@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/environment@npm:30.2.0" + dependencies: + "@jest/fake-timers": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + jest-mock: "npm:30.2.0" + checksum: 10c0/56a9f1b82ee2623c13eece7d58188be35bd6e5c3c4ee3fbaedb1c4d7242c1b57d020f1a26ab127fa9496fdc11306c7ad1c4a2b7eba1fc726a27ae0873e907e47 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/expect-utils@npm:30.2.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + checksum: 10c0/e25a809ff2ab62292e2569f8d97f89168d27d078903f0306af5f70f1771b7efc62c458eca1dcb491ab1ed96cefedf403bd7acbb050c997105bc29b220fd9d61a + languageName: node + linkType: hard + +"@jest/expect@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/expect@npm:30.2.0" + dependencies: + expect: "npm:30.2.0" + jest-snapshot: "npm:30.2.0" + checksum: 10c0/3984879022780dd480301c560cef465156b29d610f2c698fcdf81ad76930411d7816eff7cb721e81a1d9aaa8c2240a73c20be9385d1978c14b405a2ac6c9104a + languageName: node + linkType: hard + +"@jest/fake-timers@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/fake-timers@npm:30.2.0" + dependencies: + "@jest/types": "npm:30.2.0" + "@sinonjs/fake-timers": "npm:^13.0.0" + "@types/node": "npm:*" + jest-message-util: "npm:30.2.0" + jest-mock: "npm:30.2.0" + jest-util: "npm:30.2.0" + checksum: 10c0/b29505528e546f08489535814f7dfcd3a2318660b987d605f44d41672e91a0c8c0dfc01e3dd1302e66e511409c3012d41e2e16703b214502b54ccc023773e3dc + languageName: node + linkType: hard + +"@jest/get-type@npm:30.1.0": + version: 30.1.0 + resolution: "@jest/get-type@npm:30.1.0" + checksum: 10c0/3e65fd5015f551c51ec68fca31bbd25b466be0e8ee8075d9610fa1c686ea1e70a942a0effc7b10f4ea9a338c24337e1ad97ff69d3ebacc4681b7e3e80d1b24ac + languageName: node + linkType: hard + +"@jest/globals@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/globals@npm:30.2.0" + dependencies: + "@jest/environment": "npm:30.2.0" + "@jest/expect": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + jest-mock: "npm:30.2.0" + checksum: 10c0/7433a501e3122e94b24a7bacc44fdc3921b20abf67c9d795f5bdd169f1beac058cff8109e4fddf71fdc8b18e532cb88c55412ca9927966f354930d6bb3fcaf9c + languageName: node + linkType: hard + +"@jest/pattern@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/pattern@npm:30.0.1" + dependencies: + "@types/node": "npm:*" + jest-regex-util: "npm:30.0.1" + checksum: 10c0/32c5a7bfb6c591f004dac0ed36d645002ed168971e4c89bd915d1577031672870032594767557b855c5bc330aa1e39a2f54bf150d2ee88a7a0886e9cb65318bc + languageName: node + linkType: hard + +"@jest/reporters@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/reporters@npm:30.2.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:30.2.0" + "@jest/test-result": "npm:30.2.0" + "@jest/transform": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@jridgewell/trace-mapping": "npm:^0.3.25" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + collect-v8-coverage: "npm:^1.0.2" + exit-x: "npm:^0.2.2" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^5.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:30.2.0" + jest-util: "npm:30.2.0" + jest-worker: "npm:30.2.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.2" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/1f25d0896f857f220466cae3145a20f9e13e7d73aeccf87a1f8a5accb42bb7a564864ba63befa3494d76d1335b86c24d66054d62330c3dcffc9c2c5f4e740d6e + languageName: node + linkType: hard + +"@jest/schemas@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/schemas@npm:30.0.5" + dependencies: + "@sinclair/typebox": "npm:^0.34.0" + checksum: 10c0/449dcd7ec5c6505e9ac3169d1143937e67044ae3e66a729ce4baf31812dfd30535f2b3b2934393c97cfdf5984ff581120e6b38f62b8560c8b5b7cc07f4175f65 + languageName: node + linkType: hard + +"@jest/snapshot-utils@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/snapshot-utils@npm:30.2.0" + dependencies: + "@jest/types": "npm:30.2.0" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + natural-compare: "npm:^1.4.0" + checksum: 10c0/df69ee3b95d64db6d1e79e39d5dc226e417b412a1d5113264b487eb3a8887366a7952c350c378e2292f8e83ec1b3be22040317b795e85eb431830cbde06d09d8 + languageName: node + linkType: hard + +"@jest/source-map@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/source-map@npm:30.0.1" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + callsites: "npm:^3.1.0" + graceful-fs: "npm:^4.2.11" + checksum: 10c0/e7bda2786fc9f483d9dd7566c58c4bd948830997be862dfe80a3ae5550ff3f84753abb52e705d02ebe9db9f34ba7ebec4c2db11882048cdeef7a66f6332b3897 + languageName: node + linkType: hard + +"@jest/test-result@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/test-result@npm:30.2.0" + dependencies: + "@jest/console": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + collect-v8-coverage: "npm:^1.0.2" + checksum: 10c0/87566d56b4f90630282c103f41ea9031f4647902f2cd9839bc49af6248301c1a95cbc4432a9512e61f6c6d778e8b925d0573588b26a211d3198c62471ba08c81 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/test-sequencer@npm:30.2.0" + dependencies: + "@jest/test-result": "npm:30.2.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.2.0" + slash: "npm:^3.0.0" + checksum: 10c0/b8366e629b885bfc4b2b95f34f47405e70120eb8601f42de20ea4de308a5088d7bd9f535abf67a2a0d083a2b49864176e1333e036426a5d6b6bd02c1c4dda40b + languageName: node + linkType: hard + +"@jest/transform@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/transform@npm:30.2.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/types": "npm:30.2.0" + "@jridgewell/trace-mapping": "npm:^0.3.25" + babel-plugin-istanbul: "npm:^7.0.1" + chalk: "npm:^4.1.2" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.2.0" + jest-regex-util: "npm:30.0.1" + jest-util: "npm:30.2.0" + micromatch: "npm:^4.0.8" + pirates: "npm:^4.0.7" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^5.0.1" + checksum: 10c0/c0f21576de9f7ad8a2647450b5cd127d7c60176c19a666230241d121b9f928b036dd19973363e4acd7db2f8b82caff2b624930f57471be6092d73a7775365606 + languageName: node + linkType: hard + +"@jest/types@npm:30.2.0": + version: 30.2.0 + resolution: "@jest/types@npm:30.2.0" + dependencies: + "@jest/pattern": "npm:30.0.1" + "@jest/schemas": "npm:30.0.5" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + "@types/istanbul-reports": "npm:^3.0.4" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.33" + chalk: "npm:^4.1.2" + checksum: 10c0/ae121f6963bd9ed1cd9651db7be91bf14c05bff0d0eec4fca9fecf586bea4005e8f1de8cc9b8ef72e424ea96a309d123bef510b55a6a17a3b4b91a39d775e5cd + languageName: node + linkType: hard + +"@jimp/core@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/core@npm:1.6.0" + dependencies: + "@jimp/file-ops": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + await-to-js: "npm:^3.0.0" + exif-parser: "npm:^0.1.12" + file-type: "npm:^16.0.0" + mime: "npm:3" + checksum: 10c0/8a0b4e661ac21be553ed0374b4fd442b5178f57d52a3f67bc111bfb3d2f91ca39dd9b3062fbbe577fe0529168c8f51184928280906177ff5165f4ae077e9d47f + languageName: node + linkType: hard + +"@jimp/diff@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/diff@npm:1.6.0" + dependencies: + "@jimp/plugin-resize": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + pixelmatch: "npm:^5.3.0" + checksum: 10c0/0ee0e18fa603ce388feca22d4caf7104e839fc819a9b4008defd9f1b11caaaf52ea6f52359fcf02612a2264f786e1990797348921eea56b7f01dd8497dd9863a + languageName: node + linkType: hard + +"@jimp/file-ops@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/file-ops@npm:1.6.0" + checksum: 10c0/71829fa1896362e962f40830d13869483bdf591a9eb315b61881b221a961c390f33601f7b981948955ec922142ab9ba3e4ded1fde17af2b5bf07022e813d335d + languageName: node + linkType: hard + +"@jimp/js-bmp@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/js-bmp@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + bmp-ts: "npm:^1.0.9" + checksum: 10c0/d0101268785c1e570c3fb2986e733e6d2d9f0b2bc6dc4a4676bf661e2fc2905a90e17dac00db95c0850d406478778d05c13eac7023e2c25b519d5fb6cf2e2c5e + languageName: node + linkType: hard + +"@jimp/js-gif@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/js-gif@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + gifwrap: "npm:^0.10.1" + omggif: "npm:^1.0.10" + checksum: 10c0/0d96308076cd607371c249cdf1faa4538403fc7e8d356a53d1ec20908218b0431c2d845247a98421254133f220db82611f6f08bcdeba7f03af61c5a73504d77a + languageName: node + linkType: hard + +"@jimp/js-jpeg@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/js-jpeg@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + jpeg-js: "npm:^0.4.4" + checksum: 10c0/bc825995df309d6a4747f99a26d8a1ceeb8299f5264745cfaf9e592b7367d2de7f22e69b66b4bd4ca1a0989f8c1b667999736fbe934af1392895b3a503fe790d + languageName: node + linkType: hard + +"@jimp/js-png@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/js-png@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + pngjs: "npm:^7.0.0" + checksum: 10c0/7386abd8f4629ffb59924b249045d650737f4535ec0b6027eb2a1dae14ec5f4fe06dd1a45edfed760bba587fdf5a03394f83b0cf5dd5e70fd6fa1be49f17d941 + languageName: node + linkType: hard + +"@jimp/js-tiff@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/js-tiff@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + utif2: "npm:^4.1.0" + checksum: 10c0/20fa4f43e278cb1c9c7c65a0e5fef9942499d57d46336ac07c99314555e6c51a223eca746d3e81d2b6d811a8f0f3f4a81109176ded3b1a3314a716bd16aaa7cc + languageName: node + linkType: hard + +"@jimp/plugin-blit@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-blit@npm:1.6.0" + dependencies: + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/fa0076c25fef7dbdffdc20ef4f93edaaf0eec5387ecfe3a6c3996ac4930bafd0ff6c33772bc079b3a4102be56936a1154210768bd38325d55ceec81458c13885 + languageName: node + linkType: hard + +"@jimp/plugin-blur@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-blur@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + checksum: 10c0/ef1b5a44bfb4726de792e902215f344db3a6e69c11b3cdc3fed8e1aeeec591599fe6af61f865fcdacbd92a372d562cac227770d7b77103b014eeca8bf9cc93ea + languageName: node + linkType: hard + +"@jimp/plugin-circle@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-circle@npm:1.6.0" + dependencies: + "@jimp/types": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/bcccc16092d1101e9cd8c7aac48447b72a2dc9b9a5c8f6a9dbfa10cb69812bb5eb297638d93c393df6a85eb8ef20ee8833ddae715feb30379ba6b41f980ce0cf + languageName: node + linkType: hard + +"@jimp/plugin-color@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-color@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + tinycolor2: "npm:^1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/513105f6b2fe9e80654c7ec52b27ad025af01da4723ade42db5e1f3ffa64e2d8e2e0b2ac99bcd351cc1fed7a37f26e890c3729e4fc3ec65232a0625e63375c0d + languageName: node + linkType: hard + +"@jimp/plugin-contain@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-contain@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/plugin-blit": "npm:1.6.0" + "@jimp/plugin-resize": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/c8cc613f9dc37f58a2127753936ce0a0f93dc289a42433aeb0cae131fd86623fa090a3936139275b2d945db6ce0b8a368cb1526608b8d47afe284fc6ebb6f800 + languageName: node + linkType: hard + +"@jimp/plugin-cover@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-cover@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/plugin-crop": "npm:1.6.0" + "@jimp/plugin-resize": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/7e8310ed47bd8cfa919d9786183c4373222ab4e380cf24f2d8ba07dc5c413e0e755c4422ecb45be84ddaad351db99aa97ecabef7329c782767c674279b6b9f24 + languageName: node + linkType: hard + +"@jimp/plugin-crop@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-crop@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/82c75ce54e4b9ee7886cb192cccf81cec87e2c2c76090fa5cd8eb3821e8da946f78b972a0a40c278a33ff19e1c9ab1fe983b374c3b576d77658bf0edbe13f3d3 + languageName: node + linkType: hard + +"@jimp/plugin-displace@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-displace@npm:1.6.0" + dependencies: + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/a37164be381613b66498b8989b4ce660645bf7551247c11df84895faa880adbf32097112daea12cb6f36823ba549b05714f49e8fdcc07a1e077f0e1be92d3671 + languageName: node + linkType: hard + +"@jimp/plugin-dither@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-dither@npm:1.6.0" + dependencies: + "@jimp/types": "npm:1.6.0" + checksum: 10c0/b34e15549e9f4d0d4a3a7fca3537c9afa1a42bbfc5d21cf24f2d857bfc9ad7c8ac21efd9743aa3df8898dbcc0c68161f4056f6ebf3209517cfac13d9bb7f13dd + languageName: node + linkType: hard + +"@jimp/plugin-fisheye@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-fisheye@npm:1.6.0" + dependencies: + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/d7b7fc5814b7d6a1c0f7af8f9170177f2c81bf9bec1aab79b132babde5d057bc4b10690d5adc88ffda7d401b00406ee35eac6fdffe1993ae088ce5f17e17017e + languageName: node + linkType: hard + +"@jimp/plugin-flip@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-flip@npm:1.6.0" + dependencies: + "@jimp/types": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/87ef69740676149cd6ace1322fd82572fec6b2a787e78a736d3f75ead4555d942ee48ede2b2a16d8c03ce93e6d4748dcf1812946a4fc557ce8c8ed6cbb92b96c + languageName: node + linkType: hard + +"@jimp/plugin-hash@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-hash@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/js-bmp": "npm:1.6.0" + "@jimp/js-jpeg": "npm:1.6.0" + "@jimp/js-png": "npm:1.6.0" + "@jimp/js-tiff": "npm:1.6.0" + "@jimp/plugin-color": "npm:1.6.0" + "@jimp/plugin-resize": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + any-base: "npm:^1.1.0" + checksum: 10c0/4e615a6f66a61a6ddc7a6cb14505426f347e8ccbdfd6a4e2371cc8451a99088b4c8ad7e5ad9b3a935f2bfab2fe24f263fb90a9bbdd04d21f82a511c49cd25dbe + languageName: node + linkType: hard + +"@jimp/plugin-mask@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-mask@npm:1.6.0" + dependencies: + "@jimp/types": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/fa19ef8fcf83bcfaea48670e7f554fdd851cea78a2b1754c57dcd44e123225cdc238b45a0a973cee6afce94c568f6469b227f75bd09986dc1c4398f94fa3b5fa + languageName: node + linkType: hard + +"@jimp/plugin-print@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-print@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/js-jpeg": "npm:1.6.0" + "@jimp/js-png": "npm:1.6.0" + "@jimp/plugin-blit": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + parse-bmfont-ascii: "npm:^1.0.6" + parse-bmfont-binary: "npm:^1.0.6" + parse-bmfont-xml: "npm:^1.1.6" + simple-xml-to-json: "npm:^1.2.2" + zod: "npm:^3.23.8" + checksum: 10c0/7a3c8c651aaf94e74790fb2c68ba5363d926969097adfde8076782bda1c2d1f36380f7be9993c40eccd8e183cdd5f7d83e0e01112b8e9db7986acb149bc659fe + languageName: node + linkType: hard + +"@jimp/plugin-quantize@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-quantize@npm:1.6.0" + dependencies: + image-q: "npm:^4.0.0" + zod: "npm:^3.23.8" + checksum: 10c0/6504f48ba84771cee76396b3e3ca0d9a390ae7b9febfcdf84f2a5cc3f8578d79e030ffe86f109fd8917e00ee13340355390e5bf8ce34f391450b2b1430232c28 + languageName: node + linkType: hard + +"@jimp/plugin-resize@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-resize@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/4f96ad909c07498f6b0aa93a28341164397e771e674826a2a3f4d0a06b766bd6b86bd6ac9256fe5ab026e611d839b88f54118ebc6e0ed82b88a6e35e25a4ba4e + languageName: node + linkType: hard + +"@jimp/plugin-rotate@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-rotate@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/plugin-crop": "npm:1.6.0" + "@jimp/plugin-resize": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/9ac811c119941b0577197f22d604d5e13e8c365dde6e6d20d8f62e21b76da77992e5d093f6aa617383527e5bf89c605d69915e10891a9a7a25173459ec632011 + languageName: node + linkType: hard + +"@jimp/plugin-threshold@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/plugin-threshold@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/plugin-color": "npm:1.6.0" + "@jimp/plugin-hash": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + zod: "npm:^3.23.8" + checksum: 10c0/427b62fdb6f71b407fa2501a89cba1c16b1bcad23e78493d044d9be7bc11fa303e21847161f69ae3217fb4a9973f7331f167c43b2f4434de25cb71d5372a7d51 + languageName: node + linkType: hard + +"@jimp/types@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/types@npm:1.6.0" + dependencies: + zod: "npm:^3.23.8" + checksum: 10c0/b974bd6d776499036dd8606ca642c62f497cc4c10a1f4032cf2383b1ca8f0a8948da8b1a848956b2dd69cf5e186c65f2d75d6159d7b6386a49fcfcef7fd0a73a + languageName: node + linkType: hard + +"@jimp/utils@npm:1.6.0": + version: 1.6.0 + resolution: "@jimp/utils@npm:1.6.0" + dependencies: + "@jimp/types": "npm:1.6.0" + tinycolor2: "npm:^1.6.0" + checksum: 10c0/3d4b5b08675abc5c9ab3d962b8e9c7328bd0f2d300c7a04e042097187c8ba4b7b885fb3e9dc807a4e69e3ea54aa2d57dc9905b42b61ac13215776877dd9e7892 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.13 + resolution: "@jridgewell/gen-mapping@npm:0.3.13" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b + languageName: node + linkType: hard + +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.11 + resolution: "@jridgewell/source-map@npm:0.3.11" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + checksum: 10c0/50a4fdafe0b8f655cb2877e59fe81320272eaa4ccdbe6b9b87f10614b2220399ae3e05c16137a59db1f189523b42c7f88bd097ee991dbd7bc0e01113c583e844 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28": + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 + languageName: node + linkType: hard + +"@ljharb/through@npm:^2.3.12": + version: 2.3.14 + resolution: "@ljharb/through@npm:2.3.14" + dependencies: + call-bind: "npm:^1.0.8" + checksum: 10c0/7c5c22ed668f51193b82e4a352c7a44f777f537ef47f37befb49032f4827a766ea74c2972e5a0185bdfe355431ae50722d9fb57fa63553ba36aa4aeb941f0e70 + languageName: node + linkType: hard + +"@lukeed/csprng@npm:^1.0.0": + version: 1.1.0 + resolution: "@lukeed/csprng@npm:1.1.0" + checksum: 10c0/5d6dcf478af732972083ab2889c294b57f1028fa13c2c240d7a4aaa079c2c75df7ef0dcbdda5419147fc6704b4adf96b2de92f1a9a72ac21c6350c4014fffe6c + languageName: node + linkType: hard + +"@mantle/backend@workspace:packages/backend": + version: 0.0.0-use.local + resolution: "@mantle/backend@workspace:packages/backend" + dependencies: + "@mantle/contracts": "npm:*" + "@nestjs/bullmq": "npm:^11.0.4" + "@nestjs/cli": "npm:^10.0.0" + "@nestjs/common": "npm:^10.0.0" + "@nestjs/config": "npm:^4.0.2" + "@nestjs/core": "npm:^10.0.0" + "@nestjs/jwt": "npm:^11.0.2" + "@nestjs/mongoose": "npm:^11.0.4" + "@nestjs/passport": "npm:^11.0.5" + "@nestjs/platform-express": "npm:^10.0.0" + "@nestjs/schedule": "npm:^6.1.0" + "@nestjs/schematics": "npm:^10.0.0" + "@nestjs/swagger": "npm:^7.4.2" + "@nestjs/testing": "npm:^10.0.0" + "@octokit/rest": "npm:^22.0.1" + "@openassets/types": "npm:*" + "@stellar/stellar-sdk": "npm:^14.5.0" + "@types/express": "npm:^4.17.17" + "@types/jest": "npm:^30.0.0" + "@types/multer": "npm:^2.0.0" + "@types/node": "npm:^20.3.1" + "@types/passport": "npm:^1.0.17" + "@types/passport-jwt": "npm:^4.0.1" + "@types/pdf-parse": "npm:^1.1.5" + "@types/supertest": "npm:^6.0.3" + "@types/uuid": "npm:^11.0.0" + "@types/xml2js": "npm:^0.4.14" + "@typescript-eslint/eslint-plugin": "npm:^6.0.0" + "@typescript-eslint/parser": "npm:^6.0.0" + axios: "npm:^1.6.0" + bullmq: "npm:^5.66.2" + class-transformer: "npm:^0.5.1" + class-validator: "npm:^0.14.3" + eslint: "npm:^8.42.0" + eslint-config-prettier: "npm:^9.0.0" + eslint-plugin-prettier: "npm:^5.0.0" + fast-levenshtein: "npm:^3.0.0" + ioredis: "npm:^5.8.2" + jest: "npm:^30.2.0" + jest-mock-extended: "npm:^4.0.0" + jest-util: "npm:^30.2.0" + jimp: "npm:^1.6.0" + jsqr: "npm:^1.4.0" + mongoose: "npm:^9.0.2" + passport: "npm:^0.7.0" + passport-jwt: "npm:^4.0.1" + pdf-parse: "npm:^2.4.5" + prettier: "npm:^3.0.0" + reflect-metadata: "npm:^0.1.13" + rxjs: "npm:^7.8.1" + source-map-support: "npm:^0.5.21" + supertest: "npm:^7.1.4" + swagger-ui-express: "npm:^5.0.1" + ts-jest: "npm:^29.4.6" + ts-loader: "npm:^9.4.3" + ts-node: "npm:^10.9.1" + tsconfig-paths: "npm:^4.2.0" + typescript: "npm:^5.1.3" + uuid: "npm:^13.0.0" + viem: "npm:^2.43.2" + webpack: "npm:^5.0.0" + xml2js: "npm:^0.6.2" + languageName: unknown + linkType: soft + +"@mantle/contracts@npm:*, @mantle/contracts@workspace:packages/contracts": + version: 0.0.0-use.local + resolution: "@mantle/contracts@workspace:packages/contracts" + dependencies: + "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" + "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" + "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" + "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" + "@nomicfoundation/hardhat-verify": "npm:^1.1.1" + "@nomicfoundation/hardhat-viem": "npm:^3.0.1" + "@openzeppelin/contracts": "npm:5.4.0" + "@typechain/ethers-v6": "npm:^0.5.1" + "@typechain/hardhat": "npm:^8.0.0" + "@types/chai": "npm:^4.3.11" + "@types/mocha": "npm:^10.0.10" + "@types/node": "npm:^25.0.3" + chai: "npm:^4.3.10" + dotenv: "npm:^17.2.3" + ethers: "npm:^6.16.0" + hardhat: "npm:^2.22.3" + hardhat-gas-reporter: "npm:^1.0.10" + solidity-coverage: "npm:^0.8.17" + ts-node: "npm:^10.9.2" + typechain: "npm:^8.3.2" + typescript: "npm:^5.9.3" + viem: "npm:^2.43.3" + languageName: unknown + linkType: soft + +"@mantle/stellar-contracts@workspace:packages/stellar-contracts": + version: 0.0.0-use.local + resolution: "@mantle/stellar-contracts@workspace:packages/stellar-contracts" + dependencies: + "@types/node": "npm:^20.0.0" + ts-node: "npm:^10.9.0" + typescript: "npm:^5.0.0" + languageName: unknown + linkType: soft + +"@microsoft/tsdoc@npm:^0.15.0": + version: 0.15.1 + resolution: "@microsoft/tsdoc@npm:0.15.1" + checksum: 10c0/09948691fac56c45a0d1920de478d66a30371a325bd81addc92eea5654d95106ce173c440fea1a1bd5bb95b3a544b6d4def7bb0b5a846c05d043575d8369a20c + languageName: node + linkType: hard + +"@mongodb-js/saslprep@npm:^1.3.0": + version: 1.4.4 + resolution: "@mongodb-js/saslprep@npm:1.4.4" + dependencies: + sparse-bitfield: "npm:^3.0.3" + checksum: 10c0/04a42b50129ec9c43dfeb01ebfc64883eddad925ac90190fbf928c1b5fb7a9320762c3647295fc1066b100ac6e98941fa09f9ca35467f7d828e90e878bd86d3c + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/canvas-android-arm64@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-android-arm64@npm:0.1.80" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/canvas-android-arm64@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-android-arm64@npm:0.1.94" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/canvas-darwin-arm64@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-darwin-arm64@npm:0.1.80" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/canvas-darwin-arm64@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-darwin-arm64@npm:0.1.94" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/canvas-darwin-x64@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-darwin-x64@npm:0.1.80" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/canvas-darwin-x64@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-darwin-x64@npm:0.1.94" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-arm-gnueabihf@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-linux-arm-gnueabihf@npm:0.1.80" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-arm-gnueabihf@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-linux-arm-gnueabihf@npm:0.1.94" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-arm64-gnu@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-linux-arm64-gnu@npm:0.1.80" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-arm64-gnu@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-linux-arm64-gnu@npm:0.1.94" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-arm64-musl@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-linux-arm64-musl@npm:0.1.80" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-arm64-musl@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-linux-arm64-musl@npm:0.1.94" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-riscv64-gnu@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-linux-riscv64-gnu@npm:0.1.80" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-riscv64-gnu@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-linux-riscv64-gnu@npm:0.1.94" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-x64-gnu@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-linux-x64-gnu@npm:0.1.80" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-x64-gnu@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-linux-x64-gnu@npm:0.1.94" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-x64-musl@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-linux-x64-musl@npm:0.1.80" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/canvas-linux-x64-musl@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-linux-x64-musl@npm:0.1.94" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/canvas-win32-arm64-msvc@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-win32-arm64-msvc@npm:0.1.94" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/canvas-win32-x64-msvc@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas-win32-x64-msvc@npm:0.1.80" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/canvas-win32-x64-msvc@npm:0.1.94": + version: 0.1.94 + resolution: "@napi-rs/canvas-win32-x64-msvc@npm:0.1.94" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/canvas@npm:0.1.80": + version: 0.1.80 + resolution: "@napi-rs/canvas@npm:0.1.80" + dependencies: + "@napi-rs/canvas-android-arm64": "npm:0.1.80" + "@napi-rs/canvas-darwin-arm64": "npm:0.1.80" + "@napi-rs/canvas-darwin-x64": "npm:0.1.80" + "@napi-rs/canvas-linux-arm-gnueabihf": "npm:0.1.80" + "@napi-rs/canvas-linux-arm64-gnu": "npm:0.1.80" + "@napi-rs/canvas-linux-arm64-musl": "npm:0.1.80" + "@napi-rs/canvas-linux-riscv64-gnu": "npm:0.1.80" + "@napi-rs/canvas-linux-x64-gnu": "npm:0.1.80" + "@napi-rs/canvas-linux-x64-musl": "npm:0.1.80" + "@napi-rs/canvas-win32-x64-msvc": "npm:0.1.80" + dependenciesMeta: + "@napi-rs/canvas-android-arm64": + optional: true + "@napi-rs/canvas-darwin-arm64": + optional: true + "@napi-rs/canvas-darwin-x64": + optional: true + "@napi-rs/canvas-linux-arm-gnueabihf": + optional: true + "@napi-rs/canvas-linux-arm64-gnu": + optional: true + "@napi-rs/canvas-linux-arm64-musl": + optional: true + "@napi-rs/canvas-linux-riscv64-gnu": + optional: true + "@napi-rs/canvas-linux-x64-gnu": + optional: true + "@napi-rs/canvas-linux-x64-musl": + optional: true + "@napi-rs/canvas-win32-x64-msvc": + optional: true + checksum: 10c0/41c60ee5cb96571561a6d72a5cebc2bebbc775096ccb0fb7cc06e0665f327d9396dc30740f1466bd91a10147fc5783979570a4dde7530be9e05d88d6fa6a73ae + languageName: node + linkType: hard + +"@napi-rs/canvas@npm:^0.1.80": + version: 0.1.94 + resolution: "@napi-rs/canvas@npm:0.1.94" + dependencies: + "@napi-rs/canvas-android-arm64": "npm:0.1.94" + "@napi-rs/canvas-darwin-arm64": "npm:0.1.94" + "@napi-rs/canvas-darwin-x64": "npm:0.1.94" + "@napi-rs/canvas-linux-arm-gnueabihf": "npm:0.1.94" + "@napi-rs/canvas-linux-arm64-gnu": "npm:0.1.94" + "@napi-rs/canvas-linux-arm64-musl": "npm:0.1.94" + "@napi-rs/canvas-linux-riscv64-gnu": "npm:0.1.94" + "@napi-rs/canvas-linux-x64-gnu": "npm:0.1.94" + "@napi-rs/canvas-linux-x64-musl": "npm:0.1.94" + "@napi-rs/canvas-win32-arm64-msvc": "npm:0.1.94" + "@napi-rs/canvas-win32-x64-msvc": "npm:0.1.94" + dependenciesMeta: + "@napi-rs/canvas-android-arm64": + optional: true + "@napi-rs/canvas-darwin-arm64": + optional: true + "@napi-rs/canvas-darwin-x64": + optional: true + "@napi-rs/canvas-linux-arm-gnueabihf": + optional: true + "@napi-rs/canvas-linux-arm64-gnu": + optional: true + "@napi-rs/canvas-linux-arm64-musl": + optional: true + "@napi-rs/canvas-linux-riscv64-gnu": + optional: true + "@napi-rs/canvas-linux-x64-gnu": + optional: true + "@napi-rs/canvas-linux-x64-musl": + optional: true + "@napi-rs/canvas-win32-arm64-msvc": + optional: true + "@napi-rs/canvas-win32-x64-msvc": + optional: true + checksum: 10c0/8f6b99cfc21d1f177e71f494490af4f9dadcc28478b02c8d88be38c35a16f2a907435a9769dbc721a3c51870a6340f0ef8315869345ca1613f617dafcdb7b591 + languageName: node + linkType: hard + +"@napi-rs/wasm-runtime@npm:^0.2.11": + version: 0.2.12 + resolution: "@napi-rs/wasm-runtime@npm:0.2.12" + dependencies: + "@emnapi/core": "npm:^1.4.3" + "@emnapi/runtime": "npm:^1.4.3" + "@tybys/wasm-util": "npm:^0.10.0" + checksum: 10c0/6d07922c0613aab30c6a497f4df297ca7c54e5b480e00035e0209b872d5c6aab7162fc49477267556109c2c7ed1eb9c65a174e27e9b87568106a87b0a6e3ca7d + languageName: node + linkType: hard + +"@nestjs/bull-shared@npm:^11.0.4": + version: 11.0.4 + resolution: "@nestjs/bull-shared@npm:11.0.4" + dependencies: + tslib: "npm:2.8.1" + peerDependencies: + "@nestjs/common": ^10.0.0 || ^11.0.0 + "@nestjs/core": ^10.0.0 || ^11.0.0 + checksum: 10c0/88b819fa8e24033f41b9764712ebe130b1c6b78c9dfecbda1dbdf6c97f9f63a70fd0eb1cde870d2839590f8c712612c3d46ed30732361afe066c93bf320834fd + languageName: node + linkType: hard + +"@nestjs/bullmq@npm:^11.0.4": + version: 11.0.4 + resolution: "@nestjs/bullmq@npm:11.0.4" + dependencies: + "@nestjs/bull-shared": "npm:^11.0.4" + tslib: "npm:2.8.1" + peerDependencies: + "@nestjs/common": ^10.0.0 || ^11.0.0 + "@nestjs/core": ^10.0.0 || ^11.0.0 + bullmq: ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 10c0/be2aed53e06d1c66a9f93e22553973b7037529c376a8d4922ff6d33255edf1e1af1e813a1bd450bcac9375ea56619c301a37cee72bcaef7f5593086eb6350aa1 + languageName: node + linkType: hard + +"@nestjs/cli@npm:^10.0.0": + version: 10.4.9 + resolution: "@nestjs/cli@npm:10.4.9" + dependencies: + "@angular-devkit/core": "npm:17.3.11" + "@angular-devkit/schematics": "npm:17.3.11" + "@angular-devkit/schematics-cli": "npm:17.3.11" + "@nestjs/schematics": "npm:^10.0.1" + chalk: "npm:4.1.2" + chokidar: "npm:3.6.0" + cli-table3: "npm:0.6.5" + commander: "npm:4.1.1" + fork-ts-checker-webpack-plugin: "npm:9.0.2" + glob: "npm:10.4.5" + inquirer: "npm:8.2.6" + node-emoji: "npm:1.11.0" + ora: "npm:5.4.1" + tree-kill: "npm:1.2.2" + tsconfig-paths: "npm:4.2.0" + tsconfig-paths-webpack-plugin: "npm:4.2.0" + typescript: "npm:5.7.2" + webpack: "npm:5.97.1" + webpack-node-externals: "npm:3.0.0" + peerDependencies: + "@swc/cli": ^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 + "@swc/core": ^1.3.62 + peerDependenciesMeta: + "@swc/cli": + optional: true + "@swc/core": + optional: true + bin: + nest: bin/nest.js + checksum: 10c0/82f4ba6c6be2fa5f6a78fb561f1c32b392279a358a05ca052224f88e128c09b4994cfbf7a946cf0b0e39f56da707c9221542b933c1001fd012d0f4ae7bedd565 + languageName: node + linkType: hard + +"@nestjs/common@npm:^10.0.0": + version: 10.4.20 + resolution: "@nestjs/common@npm:10.4.20" + dependencies: + file-type: "npm:20.4.1" + iterare: "npm:1.2.1" + tslib: "npm:2.8.1" + uid: "npm:2.0.2" + peerDependencies: + class-transformer: "*" + class-validator: "*" + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + checksum: 10c0/d1a1b3d67798a8a07e5dfe7c55c6d499ac4750531cad0ef5fd5ceef0e2cfc01ae0adcba501d27987e7f4044af0f41fec05d4391d047baa6069419c49daff7e8c + languageName: node + linkType: hard + +"@nestjs/config@npm:^4.0.2": + version: 4.0.2 + resolution: "@nestjs/config@npm:4.0.2" + dependencies: + dotenv: "npm:16.4.7" + dotenv-expand: "npm:12.0.1" + lodash: "npm:4.17.21" + peerDependencies: + "@nestjs/common": ^10.0.0 || ^11.0.0 + rxjs: ^7.1.0 + checksum: 10c0/549bc8d784f68742c8020954be250639cd8d37a0dd233d01ebe511f67268e5fd109ffb1ae546ca9792a8484ef4cbb79374ae7e2a9587f59b13db1e9a16d443d6 + languageName: node + linkType: hard + +"@nestjs/core@npm:^10.0.0": + version: 10.4.20 + resolution: "@nestjs/core@npm:10.4.20" + dependencies: + "@nuxtjs/opencollective": "npm:0.3.2" + fast-safe-stringify: "npm:2.1.1" + iterare: "npm:1.2.1" + path-to-regexp: "npm:3.3.0" + tslib: "npm:2.8.1" + uid: "npm:2.0.2" + peerDependencies: + "@nestjs/common": ^10.0.0 + "@nestjs/microservices": ^10.0.0 + "@nestjs/platform-express": ^10.0.0 + "@nestjs/websockets": ^10.0.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + "@nestjs/microservices": + optional: true + "@nestjs/platform-express": + optional: true + "@nestjs/websockets": + optional: true + checksum: 10c0/cb9f68a35d0e45684989c2ac1402617d2159d45abd49bf986b7a76931d5452d15fdf99ae8ac0fbca3c0f329a07a7802223e9dcaa3f834dfa9e96f2e7514c9aee + languageName: node + linkType: hard + +"@nestjs/jwt@npm:^11.0.2": + version: 11.0.2 + resolution: "@nestjs/jwt@npm:11.0.2" + dependencies: + "@types/jsonwebtoken": "npm:9.0.10" + jsonwebtoken: "npm:9.0.3" + peerDependencies: + "@nestjs/common": ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 + checksum: 10c0/3010253608209728bea0222c98e590765e7cf43b12a23acfae90b0c1f03993383e7a7dc27d2cbc3b2465e7c9fdac4795fadf18f96888740d23d51603f480d9d8 + languageName: node + linkType: hard + +"@nestjs/mapped-types@npm:2.0.5": + version: 2.0.5 + resolution: "@nestjs/mapped-types@npm:2.0.5" + peerDependencies: + "@nestjs/common": ^8.0.0 || ^9.0.0 || ^10.0.0 + class-transformer: ^0.4.0 || ^0.5.0 + class-validator: ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + checksum: 10c0/f92743cb4c0fe3b1eecdf0c7c6a40f0e7478574a9e1a25ebdbd29db29a7319c2ae608c08d07f7b9525bea01a5e20dbd73222100204d3a13500db4f56676446a1 + languageName: node + linkType: hard + +"@nestjs/mongoose@npm:^11.0.4": + version: 11.0.4 + resolution: "@nestjs/mongoose@npm:11.0.4" + peerDependencies: + "@nestjs/common": ^10.0.0 || ^11.0.0 + "@nestjs/core": ^10.0.0 || ^11.0.0 + mongoose: ^7.0.0 || ^8.0.0 || ^9.0.0 + rxjs: ^7.0.0 + checksum: 10c0/291f2e06e5b14ddf53bb3f04fee894613c5c2134ff1b13ed2c82d0ee43d519c987fbf4a287e667004ac56c6bd2bd1b1496ef8d28c0639e7f80a9b646b651f55a + languageName: node + linkType: hard + +"@nestjs/passport@npm:^11.0.5": + version: 11.0.5 + resolution: "@nestjs/passport@npm:11.0.5" + peerDependencies: + "@nestjs/common": ^10.0.0 || ^11.0.0 + passport: ^0.5.0 || ^0.6.0 || ^0.7.0 + checksum: 10c0/24175f6791abf02b70c3c0705ce56fefd3981fdece0da7e58325f790ce71aa6932b31a87a2ceaa52b6d9d8edab3a7c049f6081e4b4d59bcdfcaa00383b64ae02 + languageName: node + linkType: hard + +"@nestjs/platform-express@npm:^10.0.0": + version: 10.4.20 + resolution: "@nestjs/platform-express@npm:10.4.20" + dependencies: + body-parser: "npm:1.20.3" + cors: "npm:2.8.5" + express: "npm:4.21.2" + multer: "npm:2.0.2" + tslib: "npm:2.8.1" + peerDependencies: + "@nestjs/common": ^10.0.0 + "@nestjs/core": ^10.0.0 + checksum: 10c0/c6f4b528b8a9419f85d21317d019e4cdc408372ba0d86968d36a13994ee6744a450c81cea16e44b847944320f074696a8d94bc52eab2f31f3a28a629fb2da3c2 + languageName: node + linkType: hard + +"@nestjs/schedule@npm:^6.1.0": + version: 6.1.0 + resolution: "@nestjs/schedule@npm:6.1.0" + dependencies: + cron: "npm:4.3.5" + peerDependencies: + "@nestjs/common": ^10.0.0 || ^11.0.0 + "@nestjs/core": ^10.0.0 || ^11.0.0 + checksum: 10c0/05465d7e42caad248e7550c3ff9c4cc5d8a29f87d30738bc4df593344576f83e99cac4b3f0694f4db3062ae22827b3cb252bf7c8370a824ead38a3c04401171c + languageName: node + linkType: hard + +"@nestjs/schematics@npm:^10.0.0, @nestjs/schematics@npm:^10.0.1": + version: 10.2.3 + resolution: "@nestjs/schematics@npm:10.2.3" + dependencies: + "@angular-devkit/core": "npm:17.3.11" + "@angular-devkit/schematics": "npm:17.3.11" + comment-json: "npm:4.2.5" + jsonc-parser: "npm:3.3.1" + pluralize: "npm:8.0.0" + peerDependencies: + typescript: ">=4.8.2" + checksum: 10c0/c883c10605c20f6a774f7439d2a296a13e2dd0d33b8628cf33a31fe8779e29ec27138509501b08f6b5c42fa4701ea970155d84cc85b99aae25c3039c7cce1b2d + languageName: node + linkType: hard + +"@nestjs/swagger@npm:^7.4.2": + version: 7.4.2 + resolution: "@nestjs/swagger@npm:7.4.2" + dependencies: + "@microsoft/tsdoc": "npm:^0.15.0" + "@nestjs/mapped-types": "npm:2.0.5" + js-yaml: "npm:4.1.0" + lodash: "npm:4.17.21" + path-to-regexp: "npm:3.3.0" + swagger-ui-dist: "npm:5.17.14" + peerDependencies: + "@fastify/static": ^6.0.0 || ^7.0.0 + "@nestjs/common": ^9.0.0 || ^10.0.0 + "@nestjs/core": ^9.0.0 || ^10.0.0 + class-transformer: "*" + class-validator: "*" + reflect-metadata: ^0.1.12 || ^0.2.0 + peerDependenciesMeta: + "@fastify/static": + optional: true + class-transformer: + optional: true + class-validator: + optional: true + checksum: 10c0/fda99b154933bb23d3b818fddf0338f74389a2bea42089de419c03203f18450faaa3840f1601b1994b312879903395ed34a98772e2decb0aab20c09910c2910c + languageName: node + linkType: hard + +"@nestjs/testing@npm:^10.0.0": + version: 10.4.20 + resolution: "@nestjs/testing@npm:10.4.20" + dependencies: + tslib: "npm:2.8.1" + peerDependencies: + "@nestjs/common": ^10.0.0 + "@nestjs/core": ^10.0.0 + "@nestjs/microservices": ^10.0.0 + "@nestjs/platform-express": ^10.0.0 + peerDependenciesMeta: + "@nestjs/microservices": + optional: true + "@nestjs/platform-express": + optional: true + checksum: 10c0/128e8608fc54f26fc07db5ff6c8230da50269d4d55a64a4ab3a5018c268b97b8c3d79233cbd36d70e9d872920680375be2650a0dcc6338a190c26e024fe5e2f2 + languageName: node + linkType: hard + +"@noble/ciphers@npm:^1.3.0": + version: 1.3.0 + resolution: "@noble/ciphers@npm:1.3.0" + checksum: 10c0/3ba6da645ce45e2f35e3b2e5c87ceba86b21dfa62b9466ede9edfb397f8116dae284f06652c0cd81d99445a2262b606632e868103d54ecc99fd946ae1af8cd37 + languageName: node + linkType: hard + +"@noble/curves@npm:1.2.0": + version: 1.2.0 + resolution: "@noble/curves@npm:1.2.0" + dependencies: + "@noble/hashes": "npm:1.3.2" + checksum: 10c0/0bac7d1bbfb3c2286910b02598addd33243cb97c3f36f987ecc927a4be8d7d88e0fcb12b0f0ef8a044e7307d1844dd5c49bb724bfa0a79c8ec50ba60768c97f6 + languageName: node + linkType: hard + +"@noble/curves@npm:1.4.2, @noble/curves@npm:~1.4.0": + version: 1.4.2 + resolution: "@noble/curves@npm:1.4.2" + dependencies: + "@noble/hashes": "npm:1.4.0" + checksum: 10c0/65620c895b15d46e8087939db6657b46a1a15cd4e0e4de5cd84b97a0dfe0af85f33a431bb21ac88267e3dc508618245d4cb564213959d66a84d690fe18a63419 + languageName: node + linkType: hard + +"@noble/curves@npm:1.9.1": + version: 1.9.1 + resolution: "@noble/curves@npm:1.9.1" + dependencies: + "@noble/hashes": "npm:1.8.0" + checksum: 10c0/39c84dbfecdca80cfde2ecea4b06ef2ec1255a4df40158d22491d1400057a283f57b2b26c8b1331006e6e061db791f31d47764961c239437032e2f45e8888c1e + languageName: node + linkType: hard + +"@noble/curves@npm:^1.9.6, @noble/curves@npm:~1.9.0": + version: 1.9.7 + resolution: "@noble/curves@npm:1.9.7" + dependencies: + "@noble/hashes": "npm:1.8.0" + checksum: 10c0/150014751ebe8ca06a8654ca2525108452ea9ee0be23430332769f06808cddabfe84f248b6dbf836916bc869c27c2092957eec62c7506d68a1ed0a624017c2a3 + languageName: node + linkType: hard + +"@noble/curves@npm:~1.8.1": + version: 1.8.2 + resolution: "@noble/curves@npm:1.8.2" + dependencies: + "@noble/hashes": "npm:1.7.2" + checksum: 10c0/e7ef119b114681d6b7530b29a21f9bbea6fa6973bc369167da2158d05054cc6e6dbfb636ba89fad7707abacc150de30188b33192f94513911b24bdb87af50bbd + languageName: node + linkType: hard + +"@noble/hashes@npm:1.2.0, @noble/hashes@npm:~1.2.0": + version: 1.2.0 + resolution: "@noble/hashes@npm:1.2.0" + checksum: 10c0/8bd3edb7bb6a9068f806a9a5a208cc2144e42940a21c049d8e9a0c23db08bef5cf1cfd844a7e35489b5ab52c6fa6299352075319e7f531e0996d459c38cfe26a + languageName: node + linkType: hard + +"@noble/hashes@npm:1.3.2": + version: 1.3.2 + resolution: "@noble/hashes@npm:1.3.2" + checksum: 10c0/2482cce3bce6a596626f94ca296e21378e7a5d4c09597cbc46e65ffacc3d64c8df73111f2265444e36a3168208628258bbbaccba2ef24f65f58b2417638a20e7 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:~1.4.0": + version: 1.4.0 + resolution: "@noble/hashes@npm:1.4.0" + checksum: 10c0/8c3f005ee72e7b8f9cff756dfae1241485187254e3f743873e22073d63906863df5d4f13d441b7530ea614b7a093f0d889309f28b59850f33b66cb26a779a4a5 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.7.2, @noble/hashes@npm:~1.7.1": + version: 1.7.2 + resolution: "@noble/hashes@npm:1.7.2" + checksum: 10c0/b1411eab3c0b6691d847e9394fe7f1fcd45eeb037547c8f97e7d03c5068a499b4aef188e8e717eee67389dca4fee17d69d7e0f58af6c092567b0b76359b114b2 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.1.5, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.8.0, @noble/hashes@npm:~1.8.0": + version: 1.8.0 + resolution: "@noble/hashes@npm:1.8.0" + checksum: 10c0/06a0b52c81a6fa7f04d67762e08b2c476a00285858150caeaaff4037356dd5e119f45b2a530f638b77a5eeca013168ec1b655db41bae3236cb2e9d511484fc77 + languageName: node + linkType: hard + +"@noble/secp256k1@npm:1.7.1": + version: 1.7.1 + resolution: "@noble/secp256k1@npm:1.7.1" + checksum: 10c0/48091801d39daba75520012027d0ff0b1719338d96033890cfe0d287ad75af00d82769c0194a06e7e4fbd816ae3f204f4a59c9e26f0ad16b429f7e9b5403ccd5 + languageName: node + linkType: hard + +"@noble/secp256k1@npm:~1.7.0": + version: 1.7.2 + resolution: "@noble/secp256k1@npm:1.7.2" + checksum: 10c0/dda1eea78ee6d4d9ef968bd63d3f7ed387332fa1670af2c9c4c75a69bb6a0ca396bc95b5bab437e40f6f47548a12037094bda55453e30b4a23054922a13f3d27 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@nomicfoundation/edr-darwin-arm64@npm:0.12.0-next.23": + version: 0.12.0-next.23 + resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.12.0-next.23" + checksum: 10c0/218a5d56a768234a6342833c933663aae3be2202d9b41af4a50bae27dfa69f6423490987f55f2e7d378a008cf9c932d870bbac0ac1f412746042c208c2050365 + languageName: node + linkType: hard + +"@nomicfoundation/edr-darwin-x64@npm:0.12.0-next.23": + version: 0.12.0-next.23 + resolution: "@nomicfoundation/edr-darwin-x64@npm:0.12.0-next.23" + checksum: 10c0/f183da7c907eec4039e53b7d0a4deba36d2a5ed51fcf20daba11ced58408c25c4ab48f0a822140641bb030c488d603e42e2a5f3f034d29dcd7a5ce4476b4ed67 + languageName: node + linkType: hard + +"@nomicfoundation/edr-linux-arm64-gnu@npm:0.12.0-next.23": + version: 0.12.0-next.23 + resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.12.0-next.23" + checksum: 10c0/fc5041c7863d61fbf57641022e77f0ef045266e4ef86e366b3b5594573b6d7e935597cea342111c242c15040e6d5bf275c713c41da315ff4627f622d771b3d0d + languageName: node + linkType: hard + +"@nomicfoundation/edr-linux-arm64-musl@npm:0.12.0-next.23": + version: 0.12.0-next.23 + resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.12.0-next.23" + checksum: 10c0/a4aa4162a71527e3ff44f0013b0088f48caa9d9467766a64463f98ea256b40a99f6d5d536a7fc09b054c54c6e4b462de2eb77b5c21e33ff891da1a80b2f6e8f3 + languageName: node + linkType: hard + +"@nomicfoundation/edr-linux-x64-gnu@npm:0.12.0-next.23": + version: 0.12.0-next.23 + resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.12.0-next.23" + checksum: 10c0/18f7c1dbe9cdb14dd1649a11416f0508a560f5e49ec1e4b8d5b71fa04186594380a09cfb885719d8bcdd844e3c9eb21ac640523b42f8d58385de2ab944999135 + languageName: node + linkType: hard + +"@nomicfoundation/edr-linux-x64-musl@npm:0.12.0-next.23": + version: 0.12.0-next.23 + resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.12.0-next.23" + checksum: 10c0/2c8f904ade8c99c5defe97e5bea01e7a5e7dc367cc1a6e0061cb95ee0bdd900da87239e75e9f607a88fb2bb52559a056a248320f854ecc2b4bc52ae67fa34ffa + languageName: node + linkType: hard + +"@nomicfoundation/edr-win32-x64-msvc@npm:0.12.0-next.23": + version: 0.12.0-next.23 + resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.12.0-next.23" + checksum: 10c0/0ffe70132e0d928584feb439b5dc51288a9720463f627cd4d12d5be29a0fc167d744b84896486ddac5631ee040fdcaafc8f12e3f1980cd4f39e3bb07d6747a63 + languageName: node + linkType: hard + +"@nomicfoundation/edr@npm:0.12.0-next.23": + version: 0.12.0-next.23 + resolution: "@nomicfoundation/edr@npm:0.12.0-next.23" + dependencies: + "@nomicfoundation/edr-darwin-arm64": "npm:0.12.0-next.23" + "@nomicfoundation/edr-darwin-x64": "npm:0.12.0-next.23" + "@nomicfoundation/edr-linux-arm64-gnu": "npm:0.12.0-next.23" + "@nomicfoundation/edr-linux-arm64-musl": "npm:0.12.0-next.23" + "@nomicfoundation/edr-linux-x64-gnu": "npm:0.12.0-next.23" + "@nomicfoundation/edr-linux-x64-musl": "npm:0.12.0-next.23" + "@nomicfoundation/edr-win32-x64-msvc": "npm:0.12.0-next.23" + checksum: 10c0/d0a573c6f938e6bbc7d66ac553866bafeba053e5aabf6547898f14097ddec7e97aa5275049ee094ef458919123b8d22a7b3c92b336f60b6feb34b8399fb9616a + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-chai-matchers@npm:2.1.0": + version: 2.1.0 + resolution: "@nomicfoundation/hardhat-chai-matchers@npm:2.1.0" + dependencies: + "@types/chai-as-promised": "npm:^7.1.3" + chai-as-promised: "npm:^7.1.1" + deep-eql: "npm:^4.0.1" + ordinal: "npm:^1.0.3" + peerDependencies: + "@nomicfoundation/hardhat-ethers": ^3.1.0 + chai: ^4.2.0 + ethers: ^6.14.0 + hardhat: ^2.26.0 + checksum: 10c0/e12ca86a2b7e1381f3ddd3b7122f66daec84e72ccb3650e530988072b9b3d672d883e99e7cfaf4844b79e7ef7a7a13906d01f6fd02320aaea88419580da45d0f + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-errors@npm:^3.0.0": + version: 3.0.6 + resolution: "@nomicfoundation/hardhat-errors@npm:3.0.6" + dependencies: + "@nomicfoundation/hardhat-utils": "npm:^3.0.1" + checksum: 10c0/de6c44d1339f478729826302e24993d131a9381dc8dacc08b16a2550ec43f0b0d19070a49f5af5e66f77855c9475e695e3bc5f5234fb3ff735cde72ce391c5ae + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-ethers@npm:^3.0.8": + version: 3.1.3 + resolution: "@nomicfoundation/hardhat-ethers@npm:3.1.3" + dependencies: + debug: "npm:^4.1.1" + lodash.isequal: "npm:^4.5.0" + peerDependencies: + ethers: ^6.14.0 + hardhat: ^2.28.0 + checksum: 10c0/77a20741634a4028324cf329cac28205eff4a318ab92b0f42af4e714ebaab97a760bdba551fec446f4cea171a8964a6a89d19f33105fb8c8538d779a8a975093 + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-network-helpers@npm:^1.0.12": + version: 1.1.2 + resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.1.2" + dependencies: + ethereumjs-util: "npm:^7.1.4" + peerDependencies: + hardhat: ^2.26.0 + checksum: 10c0/00fb7392bc0a0c3df635a52fe350ae5e5a71610f3718e11e6b17753f6723231c81def37a19933cd96174cbc5362c0168c8fa98ea73910d46dd9d4bbba0c7990f + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-toolbox@npm:^3.0.0": + version: 3.0.0 + resolution: "@nomicfoundation/hardhat-toolbox@npm:3.0.0" + peerDependencies: + "@nomicfoundation/hardhat-chai-matchers": ^2.0.0 + "@nomicfoundation/hardhat-ethers": ^3.0.0 + "@nomicfoundation/hardhat-network-helpers": ^1.0.0 + "@nomicfoundation/hardhat-verify": ^1.0.0 + "@typechain/ethers-v6": ^0.4.0 + "@typechain/hardhat": ^8.0.0 + "@types/chai": ^4.2.0 + "@types/mocha": ">=9.1.0" + "@types/node": ">=12.0.0" + chai: ^4.2.0 + ethers: ^6.4.0 + hardhat: ^2.11.0 + hardhat-gas-reporter: ^1.0.8 + solidity-coverage: ^0.8.1 + ts-node: ">=8.0.0" + typechain: ^8.2.0 + typescript: ">=4.5.0" + checksum: 10c0/6139efdb962c1f590c34990c4678650f3a946a0ab07076c4fc24ea1f7902d8cd629e6ee95e6a7cd3c7a3dbd4a9f415128f576fc3f13fa9483e618eb5558f8cad + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-utils@npm:^3.0.1, @nomicfoundation/hardhat-utils@npm:^3.0.5": + version: 3.0.5 + resolution: "@nomicfoundation/hardhat-utils@npm:3.0.5" + dependencies: + "@streamparser/json-node": "npm:^0.0.22" + debug: "npm:^4.3.2" + env-paths: "npm:^2.2.0" + ethereum-cryptography: "npm:^2.2.1" + fast-equals: "npm:^5.0.1" + json-stream-stringify: "npm:^3.1.6" + rfdc: "npm:^1.3.1" + undici: "npm:^6.16.1" + checksum: 10c0/fb1a3cd1062f90ce802af9c3db63887ec4d77de28396022d4a8211e6a5594ab2d29b1366f80339a0bbedc5ecf64e9b8c8fc07dda819b5364cc63a992562729e4 + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-verify@npm:^1.1.1": + version: 1.1.1 + resolution: "@nomicfoundation/hardhat-verify@npm:1.1.1" + dependencies: + "@ethersproject/abi": "npm:^5.1.2" + "@ethersproject/address": "npm:^5.0.2" + cbor: "npm:^8.1.0" + chalk: "npm:^2.4.2" + debug: "npm:^4.1.1" + lodash.clonedeep: "npm:^4.5.0" + semver: "npm:^6.3.0" + table: "npm:^6.8.0" + undici: "npm:^5.14.0" + peerDependencies: + hardhat: ^2.0.4 + checksum: 10c0/50d3903db43d0b2fbad22d06aa6d37ef3787edfadaf2f2d96cb0b70fcbd130f68499de0094df4bffc942a1dcb15354180995178ca50750908f4b192680dc59d6 + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-viem@npm:^3.0.1": + version: 3.0.1 + resolution: "@nomicfoundation/hardhat-viem@npm:3.0.1" + dependencies: + "@nomicfoundation/hardhat-errors": "npm:^3.0.0" + "@nomicfoundation/hardhat-utils": "npm:^3.0.5" + peerDependencies: + hardhat: ^3.0.0 + viem: ^2.30.0 + checksum: 10c0/e636a959237b542a3574d05685b37086ffec62d8e3522950eda60e6c16ba2eb36910a30a1e978a647b02d81d928bc237e5bf5cfdefd38fcabb05260d64824471 + languageName: node + linkType: hard + +"@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.2": + version: 0.1.2 + resolution: "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.2" + checksum: 10c0/ef3b13bb2133fea6621db98f991036a3a84d2b240160edec50beafa6ce821fe2f0f5cd4aa61adb9685aff60cd0425982ffd15e0b868b7c768e90e26b8135b825 + languageName: node + linkType: hard + +"@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.2": + version: 0.1.2 + resolution: "@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.2" + checksum: 10c0/3cb6a00cd200b94efd6f59ed626c705c6f773b92ccf8b90471285cd0e81b35f01edb30c1aa5a4633393c2adb8f20fd34e90c51990dc4e30658e8a67c026d16c9 + languageName: node + linkType: hard + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.2": + version: 0.1.2 + resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.2" + checksum: 10c0/cb9725e7bdc3ba9c1feaef96dbf831c1a59c700ca633a9929fd97debdcb5ce06b5d7b4e6dbc076279978707214d01e2cd126d8e3f4cabc5c16525c031a47b95c + languageName: node + linkType: hard + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.2": + version: 0.1.2 + resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.2" + checksum: 10c0/82a90b1d09ad266ddc510ece2e397f51fdaf29abf7263d2a3a85accddcba2ac24cceb670a3120800611cdcc552eed04919d071e259fdda7564818359ed541f5d + languageName: node + linkType: hard + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.2": + version: 0.1.2 + resolution: "@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.2" + checksum: 10c0/d1f20d4d55683bd041ead957e5461b2e43a39e959f905e8866de1d65f8d96118e9b861e994604d9002cb7f056be0844e36c241a6bb531c336b399609977c0998 + languageName: node + linkType: hard + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.2": + version: 0.1.2 + resolution: "@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.2" + checksum: 10c0/6c17f9af3aaf184c0a217cf723076051c502d85e731dbc97f34b838f9ae1b597577abac54a2af49b3fd986b09131c52fa21fd5393b22d05e1ec7fee96a8249c2 + languageName: node + linkType: hard + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.2": + version: 0.1.2 + resolution: "@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.2" + checksum: 10c0/da198464f5ee0d19b6decdfaa65ee0df3097b8960b8483bb7080931968815a5d60f27191229d47a198955784d763d5996f0b92bfde3551612ad972c160b0b000 + languageName: node + linkType: hard + +"@nomicfoundation/solidity-analyzer@npm:^0.1.0": + version: 0.1.2 + resolution: "@nomicfoundation/solidity-analyzer@npm:0.1.2" + dependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64": "npm:0.1.2" + "@nomicfoundation/solidity-analyzer-darwin-x64": "npm:0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "npm:0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "npm:0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "npm:0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "npm:0.1.2" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "npm:0.1.2" + dependenciesMeta: + "@nomicfoundation/solidity-analyzer-darwin-arm64": + optional: true + "@nomicfoundation/solidity-analyzer-darwin-x64": + optional: true + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": + optional: true + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": + optional: true + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": + optional: true + "@nomicfoundation/solidity-analyzer-linux-x64-musl": + optional: true + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": + optional: true + checksum: 10c0/e4f503e9287e18967535af669ca7e26e2682203c45a34ea85da53122da1dee1278f2b8c76c20c67fadd7c1b1a98eeecffd2cbc136860665e3afa133817c0de54 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^11.2.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/f7b5ce0f3dd42c3f8c6546e8433573d8049f67ef11ec22aa4704bc41483122f68bf97752e06302c455ead667af5cb753e6a09bff06632bc465c1cfd4c4b75a53 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/26e376d780f60ff16e874a0ac9bc3399186846baae0b6e1352286385ac134d900cc5dafaded77f38d77f86898fc923ae1cee9d7399f0275b1aa24878915d722b + languageName: node + linkType: hard + +"@nuxtjs/opencollective@npm:0.3.2": + version: 0.3.2 + resolution: "@nuxtjs/opencollective@npm:0.3.2" + dependencies: + chalk: "npm:^4.1.0" + consola: "npm:^2.15.0" + node-fetch: "npm:^2.6.1" + bin: + opencollective: bin/opencollective.js + checksum: 10c0/540268687af3289ff107585484d42201b404cdbb98b3a512487c12a6b180a8f0e1df0d701df47d3d9e0d5c0f6eb3252d80535562aedca9edf52cf7fd17ae4601 + languageName: node + linkType: hard + +"@octokit/auth-token@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/auth-token@npm:6.0.0" + checksum: 10c0/32ecc904c5f6f4e5d090bfcc679d70318690c0a0b5040cd9a25811ad9dcd44c33f2cf96b6dbee1cd56cf58fde28fb1819c01b58718aa5c971f79c822357cb5c0 + languageName: node + linkType: hard + +"@octokit/core@npm:^7.0.6": + version: 7.0.6 + resolution: "@octokit/core@npm:7.0.6" + dependencies: + "@octokit/auth-token": "npm:^6.0.0" + "@octokit/graphql": "npm:^9.0.3" + "@octokit/request": "npm:^10.0.6" + "@octokit/request-error": "npm:^7.0.2" + "@octokit/types": "npm:^16.0.0" + before-after-hook: "npm:^4.0.0" + universal-user-agent: "npm:^7.0.0" + checksum: 10c0/95a328ff7c7223d9eb4aa778c63171828514ae0e0f588d33beb81a4dc03bbeae055382f6060ce23c979ab46272409942ff2cf3172109999e48429c47055b1fbe + languageName: node + linkType: hard + +"@octokit/endpoint@npm:^11.0.2": + version: 11.0.2 + resolution: "@octokit/endpoint@npm:11.0.2" + dependencies: + "@octokit/types": "npm:^16.0.0" + universal-user-agent: "npm:^7.0.2" + checksum: 10c0/878ac12fbccff772968689b4744590677c5a3f12bebe31544832c84761bf1c6be521e8a3af07abffc9455a74dd4d1f350d714fc46fd7ce14a0a2b5f2d4e3a84c + languageName: node + linkType: hard + +"@octokit/graphql@npm:^9.0.3": + version: 9.0.3 + resolution: "@octokit/graphql@npm:9.0.3" + dependencies: + "@octokit/request": "npm:^10.0.6" + "@octokit/types": "npm:^16.0.0" + universal-user-agent: "npm:^7.0.0" + checksum: 10c0/58588d3fb2834f64244fa5376ca7922a30117b001b621e141fab0d52806370803ab0c046ac99b120fa5f45b770f52a815157fb6ffc147fc6c1da4047c1f1af49 + languageName: node + linkType: hard + +"@octokit/openapi-types@npm:^27.0.0": + version: 27.0.0 + resolution: "@octokit/openapi-types@npm:27.0.0" + checksum: 10c0/602d1de033da180a2e982cdbd3646bd5b2e16ecf36b9955a0f23e37ae9e6cb086abb48ff2ae6f2de000fce03e8ae9051794611ae4a95a8f5f6fb63276e7b8e31 + languageName: node + linkType: hard + +"@octokit/plugin-paginate-rest@npm:^14.0.0": + version: 14.0.0 + resolution: "@octokit/plugin-paginate-rest@npm:14.0.0" + dependencies: + "@octokit/types": "npm:^16.0.0" + peerDependencies: + "@octokit/core": ">=6" + checksum: 10c0/841d79d4ccfe18fc809a4a67529b75c1dcdda13399bf4bf5b48ce7559c8b4b2cd422e3204bad4cbdea31c0cf0943521067415268e5bcfc615a3b813e058cad6b + languageName: node + linkType: hard + +"@octokit/plugin-request-log@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/plugin-request-log@npm:6.0.0" + peerDependencies: + "@octokit/core": ">=6" + checksum: 10c0/40e46ad0c77235742d0bf698ab4e17df1ae06e0d7824ffc5867ed71e27de860875adb73d89629b823fe8647459a8f262c26ed1aa6ee374873fa94095f37df0bb + languageName: node + linkType: hard + +"@octokit/plugin-rest-endpoint-methods@npm:^17.0.0": + version: 17.0.0 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:17.0.0" + dependencies: + "@octokit/types": "npm:^16.0.0" + peerDependencies: + "@octokit/core": ">=6" + checksum: 10c0/cf9984d7cf6a36ff7ff1b86078ae45fe246e3df10fcef0bccf20c8cfd27bf5e7d98dcb9cf5a7b56332b9c6fa30be28d159c2987d272a4758f77056903d94402f + languageName: node + linkType: hard + +"@octokit/request-error@npm:^7.0.2": + version: 7.1.0 + resolution: "@octokit/request-error@npm:7.1.0" + dependencies: + "@octokit/types": "npm:^16.0.0" + checksum: 10c0/62b90a54545c36a30b5ffdda42e302c751be184d85b68ffc7f1242c51d7ca54dbd185b7d0027b491991776923a910c85c9c51269fe0d86111bac187507a5abc4 + languageName: node + linkType: hard + +"@octokit/request@npm:^10.0.6": + version: 10.0.7 + resolution: "@octokit/request@npm:10.0.7" + dependencies: + "@octokit/endpoint": "npm:^11.0.2" + "@octokit/request-error": "npm:^7.0.2" + "@octokit/types": "npm:^16.0.0" + fast-content-type-parse: "npm:^3.0.0" + universal-user-agent: "npm:^7.0.2" + checksum: 10c0/f789a75bf681b204ccd3d538921db662e148ed980005158d80ec4f16811e9ab73f375d4f30ef697852abd748a62f025060ea1b0c5198ec9c2e8d04e355064390 + languageName: node + linkType: hard + +"@octokit/rest@npm:^22.0.1": + version: 22.0.1 + resolution: "@octokit/rest@npm:22.0.1" + dependencies: + "@octokit/core": "npm:^7.0.6" + "@octokit/plugin-paginate-rest": "npm:^14.0.0" + "@octokit/plugin-request-log": "npm:^6.0.0" + "@octokit/plugin-rest-endpoint-methods": "npm:^17.0.0" + checksum: 10c0/f3abd84e887cc837973214ce70720a9bba53f5575f40601c6122aa25206e9055d859c0388437f0a137f6cd0e4ff405e1b46b903475b0db32a17bada0c6513d5b + languageName: node + linkType: hard + +"@octokit/types@npm:^16.0.0": + version: 16.0.0 + resolution: "@octokit/types@npm:16.0.0" + dependencies: + "@octokit/openapi-types": "npm:^27.0.0" + checksum: 10c0/b8d41098ba6fc194d13d641f9441347e3a3b96c0efabac0e14f57319340a2d4d1c8676e4cb37ab3062c5c323c617e790b0126916e9bf7b201b0cced0826f8ae2 + languageName: node + linkType: hard + +"@openassets/types@npm:*, @openassets/types@workspace:packages/types": + version: 0.0.0-use.local + resolution: "@openassets/types@workspace:packages/types" + languageName: unknown + linkType: soft + +"@openzeppelin/contracts@npm:5.4.0": + version: 5.4.0 + resolution: "@openzeppelin/contracts@npm:5.4.0" + checksum: 10c0/7e05646dee4905fea4493f0fb2ad208abaff84b9f5ef1b9e1a5fc61d0e74d9bc30759bdf0d09a08049cfef6a290623330d83469eadc990a7bba6c2cd09a27e1d + languageName: node + linkType: hard + +"@paralleldrive/cuid2@npm:^2.2.2": + version: 2.3.1 + resolution: "@paralleldrive/cuid2@npm:2.3.1" + dependencies: + "@noble/hashes": "npm:^1.1.5" + checksum: 10c0/6576b73de49d826b0f33cbab88424dec1f6fa454a9e59a7b621f78c2cfdd2e59d7f48175826d698940a717f45eeb5e87a508583a7316e608f6a05a861a40c129 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pkgr/core@npm:^0.2.9": + version: 0.2.9 + resolution: "@pkgr/core@npm:0.2.9" + checksum: 10c0/ac8e4e8138b1a7a4ac6282873aef7389c352f1f8b577b4850778f5182e4a39a5241facbe48361fec817f56d02b51691b383010843fb08b34a8e8ea3614688fd5 + languageName: node + linkType: hard + +"@scure/base@npm:~1.1.0, @scure/base@npm:~1.1.6": + version: 1.1.9 + resolution: "@scure/base@npm:1.1.9" + checksum: 10c0/77a06b9a2db8144d22d9bf198338893d77367c51b58c72b99df990c0a11f7cadd066d4102abb15e3ca6798d1529e3765f55c4355742465e49aed7a0c01fe76e8 + languageName: node + linkType: hard + +"@scure/base@npm:~1.2.5": + version: 1.2.6 + resolution: "@scure/base@npm:1.2.6" + checksum: 10c0/49bd5293371c4e062cb6ba689c8fe3ea3981b7bb9c000400dc4eafa29f56814cdcdd27c04311c2fec34de26bc373c593a1d6ca6d754398a488d587943b7c128a + languageName: node + linkType: hard + +"@scure/bip32@npm:1.1.5": + version: 1.1.5 + resolution: "@scure/bip32@npm:1.1.5" + dependencies: + "@noble/hashes": "npm:~1.2.0" + "@noble/secp256k1": "npm:~1.7.0" + "@scure/base": "npm:~1.1.0" + checksum: 10c0/d0521f6de28278e06f2d517307b4de6c9bcb3dbdf9a5844bb57a6e4916a180e4136129ccab295c27bd1196ef77757608255afcd7cf927e03baec4479b3df74fc + languageName: node + linkType: hard + +"@scure/bip32@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip32@npm:1.4.0" + dependencies: + "@noble/curves": "npm:~1.4.0" + "@noble/hashes": "npm:~1.4.0" + "@scure/base": "npm:~1.1.6" + checksum: 10c0/6849690d49a3bf1d0ffde9452eb16ab83478c1bc0da7b914f873e2930cd5acf972ee81320e3df1963eb247cf57e76d2d975b5f97093d37c0e3f7326581bf41bd + languageName: node + linkType: hard + +"@scure/bip32@npm:1.7.0, @scure/bip32@npm:^1.7.0": + version: 1.7.0 + resolution: "@scure/bip32@npm:1.7.0" + dependencies: + "@noble/curves": "npm:~1.9.0" + "@noble/hashes": "npm:~1.8.0" + "@scure/base": "npm:~1.2.5" + checksum: 10c0/e3d4c1f207df16abcd79babcdb74d36f89bdafc90bf02218a5140cc5cba25821d80d42957c6705f35210cc5769714ea9501d4ae34732cdd1c26c9ff182a219f7 + languageName: node + linkType: hard + +"@scure/bip39@npm:1.1.1": + version: 1.1.1 + resolution: "@scure/bip39@npm:1.1.1" + dependencies: + "@noble/hashes": "npm:~1.2.0" + "@scure/base": "npm:~1.1.0" + checksum: 10c0/821dc9d5be8362a32277390526db064860c2216a079ba51d63def9289c2b290599e93681ebbeebf0e93540799eec35784c1dfcf5167d0b280ef148e5023ce01b + languageName: node + linkType: hard + +"@scure/bip39@npm:1.3.0": + version: 1.3.0 + resolution: "@scure/bip39@npm:1.3.0" + dependencies: + "@noble/hashes": "npm:~1.4.0" + "@scure/base": "npm:~1.1.6" + checksum: 10c0/1ae1545a7384a4d9e33e12d9e9f8824f29b0279eb175b0f0657c0a782c217920054f9a1d28eb316a417dfc6c4e0b700d6fbdc6da160670107426d52fcbe017a8 + languageName: node + linkType: hard + +"@scure/bip39@npm:1.6.0, @scure/bip39@npm:^1.6.0": + version: 1.6.0 + resolution: "@scure/bip39@npm:1.6.0" + dependencies: + "@noble/hashes": "npm:~1.8.0" + "@scure/base": "npm:~1.2.5" + checksum: 10c0/73a54b5566a50a3f8348a5cfd74d2092efeefc485efbed83d7a7374ffd9a75defddf446e8e5ea0385e4adb49a94b8ae83c5bad3e16333af400e932f7da3aaff8 + languageName: node + linkType: hard + +"@sentry/core@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/core@npm:5.30.0" + dependencies: + "@sentry/hub": "npm:5.30.0" + "@sentry/minimal": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10c0/6407b9c2a6a56f90c198f5714b3257df24d89d1b4ca6726bd44760d0adabc25798b69fef2c88ccea461c7e79e3c78861aaebfd51fd3cb892aee656c3f7e11801 + languageName: node + linkType: hard + +"@sentry/hub@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/hub@npm:5.30.0" + dependencies: + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10c0/386c91d06aa44be0465fc11330d748a113e464d41cd562a9e1d222a682cbcb14e697a3e640953e7a0239997ad8a02b223a0df3d9e1d8816cb823fd3613be3e2f + languageName: node + linkType: hard + +"@sentry/minimal@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/minimal@npm:5.30.0" + dependencies: + "@sentry/hub": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10c0/34ec05503de46d01f98c94701475d5d89cc044892c86ccce30e01f62f28344eb23b718e7cf573815e46f30a4ac9da3129bed9b3d20c822938acfb40cbe72437b + languageName: node + linkType: hard + +"@sentry/node@npm:^5.18.1": + version: 5.30.0 + resolution: "@sentry/node@npm:5.30.0" + dependencies: + "@sentry/core": "npm:5.30.0" + "@sentry/hub": "npm:5.30.0" + "@sentry/tracing": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + cookie: "npm:^0.4.1" + https-proxy-agent: "npm:^5.0.0" + lru_map: "npm:^0.3.3" + tslib: "npm:^1.9.3" + checksum: 10c0/c50db7c81ace57cac17692245c2ab3c84a6149183f81d5f2dfd157eaa7b66eb4d6a727dd13a754bb129c96711389eec2944cd94126722ee1d8b11f2b627b830d + languageName: node + linkType: hard + +"@sentry/tracing@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/tracing@npm:5.30.0" + dependencies: + "@sentry/hub": "npm:5.30.0" + "@sentry/minimal": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10c0/46830265bc54a3203d7d9f0d8d9f2f7d9d2c6a977e07ccdae317fa3ea29c388b904b3bef28f7a0ba9c074845d67feab63c6d3c0ddce9aeb275b6c966253fb415 + languageName: node + linkType: hard + +"@sentry/types@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/types@npm:5.30.0" + checksum: 10c0/99c6e55c0a82c8ca95be2e9dbb35f581b29e4ff7af74b23bc62b690de4e35febfa15868184a2303480ef86babd4fea5273cf3b5ddf4a27685b841a72f13a0c88 + languageName: node + linkType: hard + +"@sentry/utils@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/utils@npm:5.30.0" + dependencies: + "@sentry/types": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10c0/ca8eebfea7ac7db6d16f6c0b8a66ac62587df12a79ce9d0d8393f4d69880bb8d40d438f9810f7fb107a9880fe0d68bbf797b89cbafd113e89a0829eb06b205f8 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.48 + resolution: "@sinclair/typebox@npm:0.34.48" + checksum: 10c0/e09f26d8ad471a07ee64004eea7c4ec185349a1f61c03e87e71ea33cbe98e97959940076c2e52968a955ffd4c215bf5ba7035e77079511aac7935f25e989e29d + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.1": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^13.0.0": + version: 13.0.5 + resolution: "@sinonjs/fake-timers@npm:13.0.5" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + checksum: 10c0/a707476efd523d2138ef6bba916c83c4a377a8372ef04fad87499458af9f01afc58f4f245c5fd062793d6d70587309330c6f96947b5bd5697961c18004dc3e26 + languageName: node + linkType: hard + +"@solidity-parser/parser@npm:^0.14.0": + version: 0.14.5 + resolution: "@solidity-parser/parser@npm:0.14.5" + dependencies: + antlr4ts: "npm:^0.5.0-alpha.4" + checksum: 10c0/d5c689d8925a18e1ceb2f6449a8263915b1676117856109b7793eda8f7dafc975b6ed0d0d73fc08257903cac383484e4c8f8cf47b069621e81ba368c4ea4cf6a + languageName: node + linkType: hard + +"@solidity-parser/parser@npm:^0.20.1": + version: 0.20.2 + resolution: "@solidity-parser/parser@npm:0.20.2" + checksum: 10c0/23b0b7ed343a4fa55cb8621cf4fc81b0bdd791a4ee7e96ced7778db07de66d4e418db2c2dc1525b1f82fc0310ac829c78382327292b37e35cb30a19961fcb429 + languageName: node + linkType: hard + +"@stellar/js-xdr@npm:^3.1.2": + version: 3.1.2 + resolution: "@stellar/js-xdr@npm:3.1.2" + checksum: 10c0/eaa1fc9341b1d1bcaf5c616b9bc0a6dc9a6c7ef7a477f6f6b4cb4206a947cdd3c7e06395ba7be30f6137179eec5f206d75b3ed66fdfe5e2ac54553b7a353130c + languageName: node + linkType: hard + +"@stellar/stellar-base@npm:^14.0.4": + version: 14.0.4 + resolution: "@stellar/stellar-base@npm:14.0.4" + dependencies: + "@noble/curves": "npm:^1.9.6" + "@stellar/js-xdr": "npm:^3.1.2" + base32.js: "npm:^0.1.0" + bignumber.js: "npm:^9.3.1" + buffer: "npm:^6.0.3" + sha.js: "npm:^2.4.12" + checksum: 10c0/e09de57639b09d18ebd51a5e872f5dc742be6ee2c81ad105f0745ac1c77a7d783bd9b37299093b30136436ca1df7827f534eccbaaf0ac4c86f9d51814421b667 + languageName: node + linkType: hard + +"@stellar/stellar-sdk@npm:^14.5.0": + version: 14.5.0 + resolution: "@stellar/stellar-sdk@npm:14.5.0" + dependencies: + "@stellar/stellar-base": "npm:^14.0.4" + axios: "npm:^1.13.3" + bignumber.js: "npm:^9.3.1" + commander: "npm:^14.0.2" + eventsource: "npm:^2.0.2" + feaxios: "npm:^0.0.23" + randombytes: "npm:^2.1.0" + toml: "npm:^3.0.0" + urijs: "npm:^1.19.1" + bin: + stellar-js: bin/stellar-js + checksum: 10c0/062ad0f071c54280060f3931545a14d86c48029b1942beedafce067a1af0a304311a1ecf2af2bbcdb25cd251f921feaef7933ef21cfdebfac207a4c636cfc3a9 + languageName: node + linkType: hard + +"@streamparser/json-node@npm:^0.0.22": + version: 0.0.22 + resolution: "@streamparser/json-node@npm:0.0.22" + dependencies: + "@streamparser/json": "npm:^0.0.22" + checksum: 10c0/3b84fbbf93f183dd00e43db5ed994cdc23993548faf8b318fff52c45ca6413ddb03e2be99e407141a8a89673bb19a84949be97b8bb1d22a25bde5c3cdac43074 + languageName: node + linkType: hard + +"@streamparser/json@npm:^0.0.22": + version: 0.0.22 + resolution: "@streamparser/json@npm:0.0.22" + checksum: 10c0/4496e286d607e37552c75e1e63ed7e722392d4d91939401ec11eb63c8c7d1fb7a2cf5733f1a60dc63ad95996f12d62f5639724b2c31584bb8ace51b1f3910ccc + languageName: node + linkType: hard + +"@tokenizer/inflate@npm:^0.2.6": + version: 0.2.7 + resolution: "@tokenizer/inflate@npm:0.2.7" + dependencies: + debug: "npm:^4.4.0" + fflate: "npm:^0.8.2" + token-types: "npm:^6.0.0" + checksum: 10c0/75bd0c510810dfd62be9d963216b5852cde021e1f8aab43b37662bc6aa75e65fd7277fcab7d463186b55cee36a5b61129916161bdb2a7d18064016156c7daf4f + languageName: node + linkType: hard + +"@tokenizer/token@npm:^0.3.0": + version: 0.3.0 + resolution: "@tokenizer/token@npm:0.3.0" + checksum: 10c0/7ab9a822d4b5ff3f5bca7f7d14d46bdd8432528e028db4a52be7fbf90c7f495cc1af1324691dda2813c6af8dc4b8eb29de3107d4508165f9aa5b53e7d501f155 + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.12 + resolution: "@tsconfig/node10@npm:1.0.12" + checksum: 10c0/7bbbd7408cfaced86387a9b1b71cebc91c6fd701a120369735734da8eab1a4773fc079abd9f40c9e0b049e12586c8ac0e13f0da596bfd455b9b4c3faa813ebc5 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.10.0": + version: 0.10.1 + resolution: "@tybys/wasm-util@npm:0.10.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 + languageName: node + linkType: hard + +"@typechain/ethers-v6@npm:^0.5.1": + version: 0.5.1 + resolution: "@typechain/ethers-v6@npm:0.5.1" + dependencies: + lodash: "npm:^4.17.15" + ts-essentials: "npm:^7.0.1" + peerDependencies: + ethers: 6.x + typechain: ^8.3.2 + typescript: ">=4.7.0" + checksum: 10c0/f3c80151c07e01adbf520e0854426649edb0ee540920569487dd8da7eca2fa8615710f4c0eda008e7afdf255fbb8dfdebf721a5d324a4dffeb087611d9bd64b9 + languageName: node + linkType: hard + +"@typechain/hardhat@npm:^8.0.0": + version: 8.0.3 + resolution: "@typechain/hardhat@npm:8.0.3" + dependencies: + fs-extra: "npm:^9.1.0" + peerDependencies: + "@typechain/ethers-v6": ^0.4.3 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.1 + checksum: 10c0/2b7b8d60e35b0b65884659f14bd6a354c88ec042f9af7d9f43003784ccca9a36bf8193b2cd26859b9b262acc543b1b477306bfb4d314a3de79aacff1136b97ec + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*": + version: 7.28.0 + resolution: "@types/babel__traverse@npm:7.28.0" + dependencies: + "@babel/types": "npm:^7.28.2" + checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 + languageName: node + linkType: hard + +"@types/bn.js@npm:^5.1.0": + version: 5.2.0 + resolution: "@types/bn.js@npm:5.2.0" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/7a36114b8e61faba5c28b433c3e5aabded261745dabb8f3fe41b2d84e8c4c2b8282e52a88a842bd31a565ff5dbf685145ccd91171f1a8d657fb249025c17aa85 + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.6 + resolution: "@types/body-parser@npm:1.19.6" + dependencies: + "@types/connect": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/542da05c924dce58ee23f50a8b981fee36921850c82222e384931fda3e106f750f7880c47be665217d72dbe445129049db6eb1f44e7a06b09d62af8f3cca8ea7 + languageName: node + linkType: hard + +"@types/chai-as-promised@npm:^7.1.3": + version: 7.1.8 + resolution: "@types/chai-as-promised@npm:7.1.8" + dependencies: + "@types/chai": "npm:*" + checksum: 10c0/c0a19cffe8d3f406b2cb9ba17f5f0efe318b14f27896d807b3199cc2231c16a4b5b6c464fdf2a939214de481de58cffd46c240539d3d4ece18659277d71ccc23 + languageName: node + linkType: hard + +"@types/chai@npm:*": + version: 5.2.3 + resolution: "@types/chai@npm:5.2.3" + dependencies: + "@types/deep-eql": "npm:*" + assertion-error: "npm:^2.0.1" + checksum: 10c0/e0ef1de3b6f8045a5e473e867c8565788c444271409d155588504840ad1a53611011f85072188c2833941189400228c1745d78323dac13fcede9c2b28bacfb2f + languageName: node + linkType: hard + +"@types/chai@npm:^4.3.11": + version: 4.3.20 + resolution: "@types/chai@npm:4.3.20" + checksum: 10c0/4601189d611752e65018f1ecadac82e94eed29f348e1d5430e5681a60b01e1ecf855d9bcc74ae43b07394751f184f6970fac2b5561fc57a1f36e93a0f5ffb6e8 + languageName: node + linkType: hard + +"@types/concat-stream@npm:^1.6.0": + version: 1.6.1 + resolution: "@types/concat-stream@npm:1.6.1" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/838a0ec89d59a11c425b7728fdd05b17b652086a27fdf5b787778521ccf6d3133d9e9a6e6b803785b28c0a0f7a437582813e37b317ed8100870af836ad49a7a2 + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + +"@types/cookiejar@npm:^2.1.5": + version: 2.1.5 + resolution: "@types/cookiejar@npm:2.1.5" + checksum: 10c0/af38c3d84aebb3ccc6e46fb6afeeaac80fb26e63a487dd4db5a8b87e6ad3d4b845ba1116b2ae90d6f886290a36200fa433d8b1f6fe19c47da6b81872ce9a2764 + languageName: node + linkType: hard + +"@types/deep-eql@npm:*": + version: 4.0.2 + resolution: "@types/deep-eql@npm:4.0.2" + checksum: 10c0/bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844 + languageName: node + linkType: hard + +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10c0/69ba24fee600d1e4c5abe0df086c1a4d798abf13792d8cfab912d76817fe1a894359a1518557d21237fbaf6eda93c5ab9309143dee4c59ef54336d1b3570420e + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:^4.17.33": + version: 4.19.7 + resolution: "@types/express-serve-static-core@npm:4.19.7" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/c239df87863b8515e68dcb18203a9e2ba6108f86fdc385090284464a57a6dca6abb60a961cb6a73fea2110576f4f8acefa1cb06b60d14b6b0e5104478e7d57d1 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:^5.0.0": + version: 5.1.0 + resolution: "@types/express-serve-static-core@npm:5.1.0" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/1918233c68a0c69695f78331af1aed5fb5190f91da6309318f700adeb78573be840b5d206cb8eda804b65a9989fdeccdaaf84c1e95adc3615052749224b64519 + languageName: node + linkType: hard + +"@types/express@npm:*": + version: 5.0.6 + resolution: "@types/express@npm:5.0.6" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^5.0.0" + "@types/serve-static": "npm:^2" + checksum: 10c0/f1071e3389a955d4f9a38aae38634121c7cd9b3171ba4201ec9b56bd534aba07866839d278adc0dda05b942b05a901a02fd174201c3b1f70ce22b10b6c68f24b + languageName: node + linkType: hard + +"@types/express@npm:^4.17.17": + version: 4.17.25 + resolution: "@types/express@npm:4.17.25" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^4.17.33" + "@types/qs": "npm:*" + "@types/serve-static": "npm:^1" + checksum: 10c0/f42b616d2c9dbc50352c820db7de182f64ebbfa8dba6fb6c98e5f8f0e2ef3edde0131719d9dc6874803d25ad9ca2d53471d0fec2fbc60a6003a43d015bab72c4 + languageName: node + linkType: hard + +"@types/form-data@npm:0.0.33": + version: 0.0.33 + resolution: "@types/form-data@npm:0.0.33" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/20bd8f7491d759ce613e35612aef37b3084be43466883ce83e1261905032939bc9e51e470e61bccf6d2f08a39659c44795531bbf66af177176ab0ddbd968e155 + languageName: node + linkType: hard + +"@types/glob@npm:^7.1.1": + version: 7.2.0 + resolution: "@types/glob@npm:7.2.0" + dependencies: + "@types/minimatch": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/a8eb5d5cb5c48fc58c7ca3ff1e1ddf771ee07ca5043da6e4871e6757b4472e2e73b4cfef2644c38983174a4bc728c73f8da02845c28a1212f98cabd293ecae98 + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.5 + resolution: "@types/http-errors@npm:2.0.5" + checksum: 10c0/00f8140fbc504f47356512bd88e1910c2f07e04233d99c88c854b3600ce0523c8cd0ba7d1897667243282eb44c59abb9245959e2428b9de004f93937f52f7c15 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.1, @types/istanbul-lib-coverage@npm:^2.0.6": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:^30.0.0": + version: 30.0.0 + resolution: "@types/jest@npm:30.0.0" + dependencies: + expect: "npm:^30.0.0" + pretty-format: "npm:^30.0.0" + checksum: 10c0/20c6ce574154bc16f8dd6a97afacca4b8c4921a819496a3970382031c509ebe87a1b37b152a1b8475089b82d8ca951a9e95beb4b9bf78fbf579b1536f0b65969 + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:9.0.10": + version: 9.0.10 + resolution: "@types/jsonwebtoken@npm:9.0.10" + dependencies: + "@types/ms": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/0688ac8fb75f809201cb7e18a12b9d80ce539cb9dd27e1b01e11807cb1a337059e899b8ee3abc3f2c9417f02e363a3069d9eab9ef9724b1da1f0e10713514f94 + languageName: node + linkType: hard + +"@types/luxon@npm:~3.7.0": + version: 3.7.1 + resolution: "@types/luxon@npm:3.7.1" + checksum: 10c0/2db30c13b58adcd86daa447faa3ba59515fe907ead8ee3e6bb716d662812af0619d712f6c1eb190cdd7f9d2c00444c3ecd80af0f36e8143eb0c5e7339d6b2aca + languageName: node + linkType: hard + +"@types/methods@npm:^1.1.4": + version: 1.1.4 + resolution: "@types/methods@npm:1.1.4" + checksum: 10c0/a78534d79c300718298bfff92facd07bf38429c66191f640c1db4c9cff1e36f819304298a96f7536b6512bfc398e5c3e6b831405e138cd774b88ad7be78d682a + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: 10c0/c2ee31cd9b993804df33a694d5aa3fa536511a49f2e06eeab0b484fef59b4483777dbb9e42a4198a0809ffbf698081fdbca1e5c2218b82b91603dfab10a10fbc + languageName: node + linkType: hard + +"@types/minimatch@npm:*": + version: 5.1.2 + resolution: "@types/minimatch@npm:5.1.2" + checksum: 10c0/83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 + languageName: node + linkType: hard + +"@types/mocha@npm:^10.0.10": + version: 10.0.10 + resolution: "@types/mocha@npm:10.0.10" + checksum: 10c0/d2b8c48138cde6923493e42b38e839695eb42edd04629abe480a8f34c0e3f50dd82a55832c2e8d2b6e6f9e4deb492d7d733e600fbbdd5a0ceccbcfc6844ff9d5 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 2.1.0 + resolution: "@types/ms@npm:2.1.0" + checksum: 10c0/5ce692ffe1549e1b827d99ef8ff71187457e0eb44adbae38fdf7b9a74bae8d20642ee963c14516db1d35fa2652e65f47680fdf679dcbde52bbfadd021f497225 + languageName: node + linkType: hard + +"@types/multer@npm:^2.0.0": + version: 2.0.0 + resolution: "@types/multer@npm:2.0.0" + dependencies: + "@types/express": "npm:*" + checksum: 10c0/375b0e77c4675c2ff27d1170e469df48dced928cc9fcd077ead111a20d0f2c01921fd25e20e25426604d6d3e311b37da2bc03ce47523d06adafba5c4b8077b67 + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:^25.0.3": + version: 25.0.3 + resolution: "@types/node@npm:25.0.3" + dependencies: + undici-types: "npm:~7.16.0" + checksum: 10c0/b7568f0d765d9469621615e2bb257c7fd1953d95e9acbdb58dffb6627a2c4150d405a4600aa1ad8a40182a94fe5f903cafd3c0a2f5132814debd0e3bfd61f835 + languageName: node + linkType: hard + +"@types/node@npm:16.9.1": + version: 16.9.1 + resolution: "@types/node@npm:16.9.1" + checksum: 10c0/17877153b2fe748e85dd85432c7d6776cfaced7fd69f1998d005812d4865ac02e192a3adde7869ba8f449550f0a80ea6e3369e449a07c587e71222c56478e7d4 + languageName: node + linkType: hard + +"@types/node@npm:22.7.5": + version: 22.7.5 + resolution: "@types/node@npm:22.7.5" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10c0/cf11f74f1a26053ec58066616e3a8685b6bcd7259bc569738b8f752009f9f0f7f85a1b2d24908e5b0f752482d1e8b6babdf1fbb25758711ec7bb9500bfcd6e60 + languageName: node + linkType: hard + +"@types/node@npm:^10.0.3": + version: 10.17.60 + resolution: "@types/node@npm:10.17.60" + checksum: 10c0/0742294912a6e79786cdee9ed77cff6ee8ff007b55d8e21170fc3e5994ad3a8101fea741898091876f8dc32b0a5ae3d64537b7176799e92da56346028d2cbcd2 + languageName: node + linkType: hard + +"@types/node@npm:^20.0.0": + version: 20.19.33 + resolution: "@types/node@npm:20.19.33" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/a1a6234a2b6fa577fbb1ccc471e5e54a79c6e1a51be10a67b034461b752a50017854810e943494f20b3c3c6d14df84c93757e0a2ec57aa81c830d6faeab72cf2 + languageName: node + linkType: hard + +"@types/node@npm:^20.3.1": + version: 20.19.27 + resolution: "@types/node@npm:20.19.27" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/7599c24d80465c1aa6e29b53581fc20ad8862ff33e6eef31d05c1c706868476ee57319c89b802ea972dd4d64ce86d18020aa5344f851fb59b730ea509a63300f + languageName: node + linkType: hard + +"@types/node@npm:^8.0.0": + version: 8.10.66 + resolution: "@types/node@npm:8.10.66" + checksum: 10c0/425e0fca5bad0d6ff14336946a1e3577750dcfbb7449614786d3241ca78ff44e3beb43eace122682de1b9d8e25cf2a0456a0b3e500d78cb55cab68f892e38141 + languageName: node + linkType: hard + +"@types/passport-jwt@npm:^4.0.1": + version: 4.0.1 + resolution: "@types/passport-jwt@npm:4.0.1" + dependencies: + "@types/jsonwebtoken": "npm:*" + "@types/passport-strategy": "npm:*" + checksum: 10c0/0ced0eaa7bb379d674821108d9bc6758223f1a5f2b9790ec78d3eaaccce6a58a424cf8ed22b53d813740ec53d929e21d92cf794ef0fb30c732866750763c0d7a + languageName: node + linkType: hard + +"@types/passport-strategy@npm:*": + version: 0.2.38 + resolution: "@types/passport-strategy@npm:0.2.38" + dependencies: + "@types/express": "npm:*" + "@types/passport": "npm:*" + checksum: 10c0/d7d2b1782a0845bd8914250aa9213a23c8d9c2225db46d854b77f2bf0129a789f46d4a5e9ad336eca277fc7e0a051c0a2942da5c864e7c6710763f102d9d4295 + languageName: node + linkType: hard + +"@types/passport@npm:*, @types/passport@npm:^1.0.17": + version: 1.0.17 + resolution: "@types/passport@npm:1.0.17" + dependencies: + "@types/express": "npm:*" + checksum: 10c0/09039429a9178117a80880c4e7d437abc83216eac5e0c97bc6f14a03a59193386cff484931dc880693f8b13a512c366ef7a51ecd8cc1a63f17366be68161f633 + languageName: node + linkType: hard + +"@types/pbkdf2@npm:^3.0.0": + version: 3.1.2 + resolution: "@types/pbkdf2@npm:3.1.2" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/4f60b0e3c73297f55023b993d3d543212aa7f61c8c0d6a2720f5dbe2cf38e2fe55ff295d550ac048dddbfc3d44c285cfe16126d65c613bd67a57662357e268d9 + languageName: node + linkType: hard + +"@types/pdf-parse@npm:^1.1.5": + version: 1.1.5 + resolution: "@types/pdf-parse@npm:1.1.5" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/68989815ca9b6321eb5ab47437edf58d4f8291d4857b4bad0d7dedf1f4535da9918bc1113f7f59763c238f35175b080d3dfa76c5f26eeeb091ac4b6604028d2e + languageName: node + linkType: hard + +"@types/prettier@npm:^2.1.1": + version: 2.7.3 + resolution: "@types/prettier@npm:2.7.3" + checksum: 10c0/0960b5c1115bb25e979009d0b44c42cf3d792accf24085e4bfce15aef5794ea042e04e70c2139a2c3387f781f18c89b5706f000ddb089e9a4a2ccb7536a2c5f0 + languageName: node + linkType: hard + +"@types/qs@npm:*, @types/qs@npm:^6.2.31": + version: 6.14.0 + resolution: "@types/qs@npm:6.14.0" + checksum: 10c0/5b3036df6e507483869cdb3858201b2e0b64b4793dc4974f188caa5b5732f2333ab9db45c08157975054d3b070788b35088b4bc60257ae263885016ee2131310 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 10c0/361bb3e964ec5133fa40644a0b942279ed5df1949f21321d77de79f48b728d39253e5ce0408c9c17e4e0fd95ca7899da36841686393b9f7a1e209916e9381a3c + languageName: node + linkType: hard + +"@types/secp256k1@npm:^4.0.1": + version: 4.0.7 + resolution: "@types/secp256k1@npm:4.0.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3e4a22bb699597adc723414a841d2e8a1fa71c95c3d018c6a2dd8482500b6e9fe2d78d87e758f18c1aabe333cac22ac2a96f456e3bc147df30b7fac4e6346618 + languageName: node + linkType: hard + +"@types/semver@npm:^7.5.0": + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 10c0/c938aef3bf79a73f0f3f6037c16e2e759ff40c54122ddf0b2583703393d8d3127130823facb880e694caa324eb6845628186aac1997ee8b31dc2d18fafe26268 + languageName: node + linkType: hard + +"@types/send@npm:*": + version: 1.2.1 + resolution: "@types/send@npm:1.2.1" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/7673747f8c2d8e67f3b1b3b57e9d4d681801a4f7b526ecf09987bb9a84a61cf94aa411c736183884dc762c1c402a61681eb1ef200d8d45d7e5ec0ab67ea5f6c1 + languageName: node + linkType: hard + +"@types/send@npm:<1": + version: 0.17.6 + resolution: "@types/send@npm:0.17.6" + dependencies: + "@types/mime": "npm:^1" + "@types/node": "npm:*" + checksum: 10c0/a9d76797f0637738062f1b974e0fcf3d396a28c5dc18c3f95ecec5dabda82e223afbc2d56a0bca46b6326fd7bb229979916cea40de2270a98128fd94441b87c2 + languageName: node + linkType: hard + +"@types/serve-static@npm:^1": + version: 1.15.10 + resolution: "@types/serve-static@npm:1.15.10" + dependencies: + "@types/http-errors": "npm:*" + "@types/node": "npm:*" + "@types/send": "npm:<1" + checksum: 10c0/842fca14c9e80468f89b6cea361773f2dcd685d4616a9f59013b55e1e83f536e4c93d6d8e3ba5072d40c4e7e64085210edd6646b15d538ded94512940a23021f + languageName: node + linkType: hard + +"@types/serve-static@npm:^2": + version: 2.2.0 + resolution: "@types/serve-static@npm:2.2.0" + dependencies: + "@types/http-errors": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/a3c6126bdbf9685e6c7dc03ad34639666eff32754e912adeed9643bf3dd3aa0ff043002a7f69039306e310d233eb8e160c59308f95b0a619f32366bbc48ee094 + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.3": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/superagent@npm:^8.1.0": + version: 8.1.9 + resolution: "@types/superagent@npm:8.1.9" + dependencies: + "@types/cookiejar": "npm:^2.1.5" + "@types/methods": "npm:^1.1.4" + "@types/node": "npm:*" + form-data: "npm:^4.0.0" + checksum: 10c0/12631f1d8b3a62e1f435bc885f6d64d1a2d1ae82b80f0c6d63d4d6372c40b6f1fee6b3da59ac18bb86250b1eb73583bf2d4b1f7882048c32468791c560c69b7c + languageName: node + linkType: hard + +"@types/supertest@npm:^6.0.3": + version: 6.0.3 + resolution: "@types/supertest@npm:6.0.3" + dependencies: + "@types/methods": "npm:^1.1.4" + "@types/superagent": "npm:^8.1.0" + checksum: 10c0/a2080f870154b09db123864a484fb633bc9e2a0f7294a194388df4c7effe5af9de36d5a5ebf819f72b404fa47b5e813c47d5a3a51354251fd2fa8589bfb64f2c + languageName: node + linkType: hard + +"@types/uuid@npm:^11.0.0": + version: 11.0.0 + resolution: "@types/uuid@npm:11.0.0" + dependencies: + uuid: "npm:*" + checksum: 10c0/6ebf1448d8fdc78d348a8a84389b74083f2f58bed75a5a6cf3be8419d33dcf757735c8b2de746b066ff8ef07f4384d02549774dc84195ffa46b24745471e9d8e + languageName: node + linkType: hard + +"@types/validator@npm:^13.15.3": + version: 13.15.10 + resolution: "@types/validator@npm:13.15.10" + checksum: 10c0/3e2e65fcd37dd6961ca3fd0535293d0c42f5911dc3ca44b96f458835e6db2392b678ccbb0c9815d8c0a14e653439e6c62c7b8758a6cd1d6e390551c9e56618ac + languageName: node + linkType: hard + +"@types/webidl-conversions@npm:*": + version: 7.0.3 + resolution: "@types/webidl-conversions@npm:7.0.3" + checksum: 10c0/ac2ccff93b95ac7c8ca73dc6064403181691bba7ea144296f462dc9108a07be16cbad7b9c704b3df706dcc5a117e1f7bf7fb27aeb75b09c0f3148de8aee11aff + languageName: node + linkType: hard + +"@types/whatwg-url@npm:^13.0.0": + version: 13.0.0 + resolution: "@types/whatwg-url@npm:13.0.0" + dependencies: + "@types/webidl-conversions": "npm:*" + checksum: 10c0/b7b53ae7b5290a0c26e2a5c6a2353af925fe9fc7ab0bbf642e8b76f65b39f638b471dadfda8da441aed3ca32cafd33b1a03459117c9ec85fd91b1e6c0e93044e + languageName: node + linkType: hard + +"@types/xml2js@npm:^0.4.14": + version: 0.4.14 + resolution: "@types/xml2js@npm:0.4.14" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/06776e7f7aec55a698795e60425417caa7d7db3ff680a7b4ccaae1567c5fec28ff49b9975e9a0d74ff4acb8f4a43730501bbe64f9f761d784c6476ba4db12e13 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.33": + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:8.56.0, @typescript-eslint/eslint-plugin@npm:^8.50.0": + version: 8.56.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.56.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.12.2" + "@typescript-eslint/scope-manager": "npm:8.56.0" + "@typescript-eslint/type-utils": "npm:8.56.0" + "@typescript-eslint/utils": "npm:8.56.0" + "@typescript-eslint/visitor-keys": "npm:8.56.0" + ignore: "npm:^7.0.5" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.4.0" + peerDependencies: + "@typescript-eslint/parser": ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/26e56d14562b3d2d34b366859ec56668fdac909d6ea534451cdb4267846ff50dcccd0026a4eba71ca41f7c8bdef30ef1356620c1ff2363ad64bd8fad33a72b19 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^6.0.0": + version: 6.21.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.5.1" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/type-utils": "npm:6.21.0" + "@typescript-eslint/utils": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.4" + natural-compare: "npm:^1.4.0" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:8.56.0, @typescript-eslint/parser@npm:^8.50.0": + version: 8.56.0 + resolution: "@typescript-eslint/parser@npm:8.56.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.56.0" + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/typescript-estree": "npm:8.56.0" + "@typescript-eslint/visitor-keys": "npm:8.56.0" + debug: "npm:^4.4.3" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/f3a29c6fdc4e0d1a1e7ddb9909ab839c2f67591933e432c10f44aabb69ae2229f8d2072a220f63b70618cc35c67ff53de0ed110be86b33f4f354c19993f764cb + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^6.0.0": + version: 6.21.0 + resolution: "@typescript-eslint/parser@npm:6.21.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d + languageName: node + linkType: hard + +"@typescript-eslint/project-service@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/project-service@npm:8.56.0" + dependencies: + "@typescript-eslint/tsconfig-utils": "npm:^8.56.0" + "@typescript-eslint/types": "npm:^8.56.0" + debug: "npm:^4.4.3" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/8302dc30ad8c0342137998ea872782cdd673f9e7ec4b244eeb0976915b86d6c44ef55485e2cdac2987dbf309d3663aaf293c85e88326093fc7656b51432369f6 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + checksum: 10c0/eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/scope-manager@npm:8.56.0" + dependencies: + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/visitor-keys": "npm:8.56.0" + checksum: 10c0/898b705295e0a4081702a52f98e0d1e50f8047900becd087b232bc71f8af2b87ed70a065bed0076a26abec8f4e5c6bb4a3a0de33b7ea0e3704ecdc7487043b57 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.56.0, @typescript-eslint/tsconfig-utils@npm:^8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.56.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/20f48af8b497d8a730dcac3724314b4f49ecc436f8871f3e17f5193d83e7d290c8838a126971767cd011208969bc4ff0f4bddc40eac167348c88d29fdb379c8b + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/type-utils@npm:6.21.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:6.21.0" + "@typescript-eslint/utils": "npm:6.21.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/type-utils@npm:8.56.0" + dependencies: + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/typescript-estree": "npm:8.56.0" + "@typescript-eslint/utils": "npm:8.56.0" + debug: "npm:^4.4.3" + ts-api-utils: "npm:^2.4.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/4da61c36fa46f9d21a519a06b4ea6c91e9fa8a8e420fede41fb5d0f29866faa11641562b6e01c221ca6ec86bc0c3ecd7b8f11fc85b92277c3fd450ffc8fa2522 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 10c0/020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.56.0, @typescript-eslint/types@npm:^8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/types@npm:8.56.0" + checksum: 10c0/5deb4ebf5fa62f9f927f6aa45f7245aa03567e88941cd76e7b083175fd59fc40368a804ba7ff7581eac75706e42ddd5c77d2a60d6b1e76ab7865d559c9af9937 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.56.0" + dependencies: + "@typescript-eslint/project-service": "npm:8.56.0" + "@typescript-eslint/tsconfig-utils": "npm:8.56.0" + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/visitor-keys": "npm:8.56.0" + debug: "npm:^4.4.3" + minimatch: "npm:^9.0.5" + semver: "npm:^7.7.3" + tinyglobby: "npm:^0.2.15" + ts-api-utils: "npm:^2.4.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/cc2ba5bbfabb71c1510aea8fb8bf0d8385cabb9ca5b65a621e73f3088a91089a02aea56a9d9a31bd707593b5ba4d33d0aa2fcbdeee3cc7f4eca8226107523c28 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: 10c0/ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/utils@npm:8.56.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.9.1" + "@typescript-eslint/scope-manager": "npm:8.56.0" + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/typescript-estree": "npm:8.56.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/49545d399345bb4d8113d1001ec60c05c7e0d28fd44cb3c75128e58a53c9bf7ae8d0680ca089a4f37ab9eea8a3ef39011fc731eb4ad8dd4ab642849d84318645 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.56.0" + dependencies: + "@typescript-eslint/types": "npm:8.56.0" + eslint-visitor-keys: "npm:^5.0.0" + checksum: 10c0/4cb7668430042da70707ac5cad826348e808af94095aca1f3d07d39d566745a33991d3defccd1e687f1b1f8aeea52eeb47591933e962452eb51c4bcd88773c12 + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0, @ungap/structured-clone@npm:^1.3.0": + version: 1.3.0 + resolution: "@ungap/structured-clone@npm:1.3.0" + checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.11" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/ast@npm:1.14.1" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + checksum: 10c0/67a59be8ed50ddd33fbb2e09daa5193ac215bf7f40a9371be9a0d9797a114d0d1196316d2f3943efdb923a3d809175e1563a3cb80c814fb8edccd1e77494972b + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" + checksum: 10c0/0e88bdb8b50507d9938be64df0867f00396b55eba9df7d3546eb5dc0ca64d62e06f8d881ec4a6153f2127d0f4c11d102b6e7d17aec2f26bb5ff95a5e60652412 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" + checksum: 10c0/31be497f996ed30aae4c08cac3cce50c8dcd5b29660383c0155fce1753804fc55d47fcba74e10141c7dd2899033164e117b3bcfcda23a6b043e4ded4f1003dfb + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" + checksum: 10c0/0d54105dc373c0fe6287f1091e41e3a02e36cdc05e8cf8533cdc16c59ff05a646355415893449d3768cda588af451c274f13263300a251dc11a575bc4c9bd210 + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.13.2" + "@webassemblyjs/helper-api-error": "npm:1.13.2" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/9c46852f31b234a8fb5a5a9d3f027bc542392a0d4de32f1a9c0075d5e8684aa073cb5929b56df565500b3f9cc0a2ab983b650314295b9bf208d1a1651bfc825a + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" + checksum: 10c0/c4355d14f369b30cf3cbdd3acfafc7d0488e086be6d578e3c9780bd1b512932352246be96e034e2a7fcfba4f540ec813352f312bfcbbfe5bcfbf694f82ccc682 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + checksum: 10c0/1f9b33731c3c6dbac3a9c483269562fa00d1b6a4e7133217f40e83e975e636fd0f8736e53abd9a47b06b66082ecc976c7384391ab0a68e12d509ea4e4b948d64 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/ieee754@npm:1.13.2" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/2e732ca78c6fbae3c9b112f4915d85caecdab285c0b337954b180460290ccd0fb00d2b1dc4bb69df3504abead5191e0d28d0d17dfd6c9d2f30acac8c4961c8a7 + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/leb128@npm:1.13.2" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/dad5ef9e383c8ab523ce432dfd80098384bf01c45f70eb179d594f85ce5db2f80fa8c9cba03adafd85684e6d6310f0d3969a882538975989919329ac4c984659 + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/utf8@npm:1.13.2" + checksum: 10c0/d3fac9130b0e3e5a1a7f2886124a278e9323827c87a2b971e6d0da22a2ba1278ac9f66a4f2e363ecd9fac8da42e6941b22df061a119e5c0335f81006de9ee799 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/helper-wasm-section": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-opt": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + "@webassemblyjs/wast-printer": "npm:1.14.1" + checksum: 10c0/5ac4781086a2ca4b320bdbfd965a209655fe8a208ca38d89197148f8597e587c9a2c94fb6bd6f1a7dbd4527c49c6844fcdc2af981f8d793a97bf63a016aa86d2 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10c0/d678810d7f3f8fecb2e2bdadfb9afad2ec1d2bc79f59e4711ab49c81cec578371e22732d4966f59067abe5fba8e9c54923b57060a729d28d408e608beef67b10 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + checksum: 10c0/515bfb15277ee99ba6b11d2232ddbf22aed32aad6d0956fe8a0a0a004a1b5a3a277a71d9a3a38365d0538ac40d1b7b7243b1a244ad6cd6dece1c1bb2eb5de7ee + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-api-error": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10c0/95427b9e5addbd0f647939bd28e3e06b8deefdbdadcf892385b5edc70091bf9b92fa5faac3fce8333554437c5d85835afef8c8a7d9d27ab6ba01ffab954db8c6 + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wast-printer@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/8d7768608996a052545251e896eac079c98e0401842af8dd4de78fba8d90bd505efb6c537e909cd6dae96e09db3fa2e765a6f26492553a675da56e2db51f9d24 + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 + languageName: node + linkType: hard + +"abbrev@npm:1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + languageName: node + linkType: hard + +"abbrev@npm:1.0.x": + version: 1.0.9 + resolution: "abbrev@npm:1.0.9" + checksum: 10c0/214632e37c68f71d61d2ee920644a11c7b0cee08ddde96961b02ebe95ad86de0d56bd6762ff337bd9cf6e5c1431ce724babd28c110fce4b20d35f6fa87944d00 + languageName: node + linkType: hard + +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5 + languageName: node + linkType: hard + +"abitype@npm:1.2.3, abitype@npm:^1.2.3": + version: 1.2.3 + resolution: "abitype@npm:1.2.3" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10c0/c8740de1ae4961723a153224a52cb9a34a57903fb5c2ad61d5082b0b79b53033c9335381aa8c663c7ec213c9955a9853f694d51e95baceedef27356f7745c634 + languageName: node + linkType: hard + +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: "npm:^5.0.0" + checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 + languageName: node + linkType: hard + +"accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + +"acorn-import-phases@npm:^1.0.3": + version: 1.0.4 + resolution: "acorn-import-phases@npm:1.0.4" + peerDependencies: + acorn: ^8.14.0 + checksum: 10c0/338eb46fc1aed5544f628344cb9af189450b401d152ceadbf1f5746901a5d923016cd0e7740d5606062d374fdf6941c29bb515d2bd133c4f4242d5d4cd73a3c7 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.1.1": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + languageName: node + linkType: hard + +"acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.15.0, acorn@npm:^8.4.1, acorn@npm:^8.9.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" + bin: + acorn: bin/acorn + checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec + languageName: node + linkType: hard + +"adm-zip@npm:^0.4.16": + version: 0.4.16 + resolution: "adm-zip@npm:0.4.16" + checksum: 10c0/c56c6e138fd19006155fc716acae14d54e07c267ae19d78c8a8cdca04762bf20170a71a41aa8d8bad2f13b70d4f3e9a191009bafa5280e05a440ee506f871a55 + languageName: node + linkType: hard + +"aes-js@npm:3.0.0": + version: 3.0.0 + resolution: "aes-js@npm:3.0.0" + checksum: 10c0/87dd5b2363534b867db7cef8bc85a90c355460783744877b2db7c8be09740aac5750714f9e00902822f692662bda74cdf40e03fbb5214ffec75c2666666288b8 + languageName: node + linkType: hard + +"aes-js@npm:4.0.0-beta.5": + version: 4.0.0-beta.5 + resolution: "aes-js@npm:4.0.0-beta.5" + checksum: 10c0/444f4eefa1e602cbc4f2a3c644bc990f93fd982b148425fee17634da510586fc09da940dcf8ace1b2d001453c07ff042e55f7a0482b3cc9372bf1ef75479090c + languageName: node + linkType: hard + +"agent-base@npm:6": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv-formats@npm:2.1.1, ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + peerDependencies: + ajv: ^8.8.2 + checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 + languageName: node + linkType: hard + +"ajv@npm:8.12.0, ajv@npm:^8.0.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.2.2" + checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e + languageName: node + linkType: hard + +"ajv@npm:^6.12.4, ajv@npm:^6.12.5": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ajv@npm:^8.0.1, ajv@npm:^8.9.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 + languageName: node + linkType: hard + +"amdefine@npm:>=0.0.4": + version: 1.0.1 + resolution: "amdefine@npm:1.0.1" + checksum: 10c0/ba8aa5d4ff5248b2ed067111e72644b36b5b7ae88d9a5a2c4223dddb3bdc9102db67291e0b414f59f12c6479ac6a365886bac72c7965e627cbc732e0962dd1ab + languageName: node + linkType: hard + +"ansi-align@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" + dependencies: + string-width: "npm:^4.1.0" + checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 + languageName: node + linkType: hard + +"ansi-colors@npm:4.1.3, ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.2": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-regex@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-regex@npm:3.0.1" + checksum: 10c0/d108a7498b8568caf4a46eea4f1784ab4e0dfb2e3f3938c697dee21443d622d765c958f2b7e2b9f6b9e55e2e2af0584eaa9915d51782b89a841c28e744e7a167 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.2.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 + languageName: node + linkType: hard + +"antlr4ts@npm:^0.5.0-alpha.4": + version: 0.5.0-dev + resolution: "antlr4ts@npm:0.5.0-dev" + dependencies: + source-map-support: "npm:^0.5.16" + checksum: 10c0/948d95d02497a5751105cc61e9931d03a9bf0566b33a28ea8f2c72484a47ec4c5148670e1a525bfbc0069b1b86ab820417ec3fad120081211ff55f542fb4a835 + languageName: node + linkType: hard + +"any-base@npm:^1.1.0": + version: 1.1.0 + resolution: "any-base@npm:1.1.0" + checksum: 10c0/1255cccb2c2ead4aa182eca000fd8aa0c1991d91781ff54e26323c132117ed23eb10eef057c0dcf1d919ab30d78e5b11bd8d88940352fc84586ecb961cc76466 + languageName: node + linkType: hard + +"anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"append-field@npm:^1.0.0": + version: 1.0.0 + resolution: "append-field@npm:1.0.0" + checksum: 10c0/1b5abcc227e5179936a9e4f7e2af4769fa1f00eda85bbaed907f7964b0fd1f7d61f0f332b35337f391389ff13dd5310c2546ba670f8e5a743b23ec85185c73ef + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"array-back@npm:^3.0.1, array-back@npm:^3.1.0": + version: 3.1.0 + resolution: "array-back@npm:3.1.0" + checksum: 10c0/bb1fe86aa8b39c21e73c68c7abf8b05ed939b8951a3b17527217f6a2a84e00e4cfa4fdec823081689c5e216709bf1f214a4f5feeee6726eaff83897fa1a7b8ee + languageName: node + linkType: hard + +"array-back@npm:^4.0.1, array-back@npm:^4.0.2": + version: 4.0.2 + resolution: "array-back@npm:4.0.2" + checksum: 10c0/8beb5b4c9535eab2905d4ff7d16c4d90ee5ca080d2b26b1e637434c0fcfadb3585283524aada753bd5d06bb88a5dac9e175c3a236183741d3d795a69b6678c96 + languageName: node + linkType: hard + +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 + languageName: node + linkType: hard + +"array-timsort@npm:^1.0.3": + version: 1.0.3 + resolution: "array-timsort@npm:1.0.3" + checksum: 10c0/bd3a1707b621947265c89867e67c9102b9b9f4c50f5b3974220112290d8b60d26ce60595edec5deed3325207b759d70b758bed3cd310b5ddadb835657ffb6d12 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array-uniq@npm:1.0.3": + version: 1.0.3 + resolution: "array-uniq@npm:1.0.3" + checksum: 10c0/3acbaf9e6d5faeb1010e2db04ab171b8d265889e46c61762e502979bdc5e55656013726e9a61507de3c82d329a0dc1e8072630a3454b4f2b881cb19ba7fd8aa6 + languageName: node + linkType: hard + +"asap@npm:^2.0.0, asap@npm:~2.0.6": + version: 2.0.6 + resolution: "asap@npm:2.0.6" + checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d + languageName: node + linkType: hard + +"assertion-error@npm:^1.1.0": + version: 1.1.0 + resolution: "assertion-error@npm:1.1.0" + checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b + languageName: node + linkType: hard + +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: 10c0/bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8 + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + +"async@npm:1.x": + version: 1.5.2 + resolution: "async@npm:1.5.2" + checksum: 10c0/9ee84592c393aad1047d1223004317ecc65a9a3f76101e0f4614a0818eac962e666510353400a3c9ea158df540579a293f486f3578e918c5e90a0f5ed52e8aea + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"await-to-js@npm:^3.0.0": + version: 3.0.0 + resolution: "await-to-js@npm:3.0.0" + checksum: 10c0/1e6184cf4090acf24f6573a475901623ec25df494a3e4b9c27eab9cd4a9f1c0bdb8150c41dbb98e719fd2513dbf32ab8cb88d2ac2c2c4c2fa57024e82128a3db + languageName: node + linkType: hard + +"axios@npm:^1.13.3, axios@npm:^1.5.1, axios@npm:^1.6.0": + version: 1.13.5 + resolution: "axios@npm:1.13.5" + dependencies: + follow-redirects: "npm:^1.15.11" + form-data: "npm:^4.0.5" + proxy-from-env: "npm:^1.1.0" + checksum: 10c0/abf468c34f2d145f3dc7dbc0f1be67e520630624307bda69a41bbe8d386bd672d87b4405c4ee77f9ff54b235ab02f96a9968fb00e75b13ce64706e352a3068fd + languageName: node + linkType: hard + +"babel-jest@npm:30.2.0": + version: 30.2.0 + resolution: "babel-jest@npm:30.2.0" + dependencies: + "@jest/transform": "npm:30.2.0" + "@types/babel__core": "npm:^7.20.5" + babel-plugin-istanbul: "npm:^7.0.1" + babel-preset-jest: "npm:30.2.0" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.11.0 || ^8.0.0-0 + checksum: 10c0/673b8c87e5aec97c4f7372319c005d1e2b018e2f2e973378c7fb0a4f1e111f89872e6f1e49dd50aff6290cd881c865117ade67f2c78a356a8275ab21af47340d + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^7.0.1": + version: 7.0.1 + resolution: "babel-plugin-istanbul@npm:7.0.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-instrument: "npm:^6.0.2" + test-exclude: "npm:^6.0.0" + checksum: 10c0/92975e3df12503b168695463b451468da0c20e117807221652eb8e33a26c160f3b9d4c5c4e65495657420e871c6a54e5e31f539e2e1da37ef2261d7ddd4b1dfd + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:30.2.0": + version: 30.2.0 + resolution: "babel-plugin-jest-hoist@npm:30.2.0" + dependencies: + "@types/babel__core": "npm:^7.20.5" + checksum: 10c0/a2bd862aaa4875127c02e6020d3da67556a8f25981060252668dda65cf9a146202937ae80d2e8612c3c47afe19ac85577647b8cc216faa98567c685525a3f203 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.2.0": + version: 1.2.0 + resolution: "babel-preset-current-node-syntax@npm:1.2.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 || ^8.0.0-0 + checksum: 10c0/94a4f81cddf9b051045d08489e4fff7336292016301664c138cfa3d9ffe3fe2ba10a24ad6ae589fd95af1ac72ba0216e1653555c187e694d7b17be0c002bea10 + languageName: node + linkType: hard + +"babel-preset-jest@npm:30.2.0": + version: 30.2.0 + resolution: "babel-preset-jest@npm:30.2.0" + dependencies: + babel-plugin-jest-hoist: "npm:30.2.0" + babel-preset-current-node-syntax: "npm:^1.2.0" + peerDependencies: + "@babel/core": ^7.11.0 || ^8.0.0-beta.1 + checksum: 10c0/fb2727bad450256146d63b5231b83a7638e73b96c9612296a20afd65fb8c76678ef9bc6fa56e81d1303109258aeb4fccea5b96568744059e47d3c6e3ebc98bd9 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"balanced-match@npm:^4.0.2": + version: 4.0.3 + resolution: "balanced-match@npm:4.0.3" + checksum: 10c0/4d96945d0815849934145b2cdc0ccb80fb869d909060820fde5f95da0a32040f2142560ef931584fbb6a1607d39d399707e7d2364030a720ac1dc6f78ddaf9dc + languageName: node + linkType: hard + +"base-x@npm:^3.0.2": + version: 3.0.11 + resolution: "base-x@npm:3.0.11" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/4c5b8cd9cef285973b0460934be4fc890eedfd22a8aca527fac3527f041c5d1c912f7b9a6816f19e43e69dc7c29a5deabfa326bd3d6a57ee46af0ad46e3991d5 + languageName: node + linkType: hard + +"base32.js@npm:^0.1.0": + version: 0.1.0 + resolution: "base32.js@npm:0.1.0" + checksum: 10c0/d5f520f8082193850df798a0a64c528eb56b25d507daa94393c39342cc07c41e1e8e3fae71dc318e397b9e28cee800548f582493018d46962b20fce8735efaad + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"baseline-browser-mapping@npm:^2.9.0": + version: 2.9.11 + resolution: "baseline-browser-mapping@npm:2.9.11" + bin: + baseline-browser-mapping: dist/cli.js + checksum: 10c0/eba49fcc1b33ab994aeeb73a4848f2670e06a0886dd5b903689ae6f60d47e7f1bea9262dbb2548c48179e858f7eda2b82ddf941ae783b862f4dcc51085a246f2 + languageName: node + linkType: hard + +"bech32@npm:1.1.4": + version: 1.1.4 + resolution: "bech32@npm:1.1.4" + checksum: 10c0/5f62ca47b8df99ace9c0e0d8deb36a919d91bf40066700aaa9920a45f86bb10eb56d537d559416fd8703aa0fb60dddb642e58f049701e7291df678b2033e5ee5 + languageName: node + linkType: hard + +"before-after-hook@npm:^4.0.0": + version: 4.0.0 + resolution: "before-after-hook@npm:4.0.0" + checksum: 10c0/9f8ae8d1b06142bcfb9ef6625226b5e50348bb11210f266660eddcf9734e0db6f9afc4cb48397ee3f5ac0a3728f3ae401cdeea88413f7bed748a71db84657be2 + languageName: node + linkType: hard + +"bignumber.js@npm:^9.3.1": + version: 9.3.1 + resolution: "bignumber.js@npm:9.3.1" + checksum: 10c0/61342ba5fe1c10887f0ecf5be02ff6709271481aff48631f86b4d37d55a99b87ce441cfd54df3d16d10ee07ceab7e272fc0be430c657ffafbbbf7b7d631efb75 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"bip39@npm:^3.1.0": + version: 3.1.0 + resolution: "bip39@npm:3.1.0" + dependencies: + "@noble/hashes": "npm:^1.2.0" + checksum: 10c0/68f9673a0d6a851e9635f3af8a85f2a1ecef9066c76d77e6f0d58d274b5bf22a67f429da3997e07c0d2cf153a4d7321f9273e656cac0526f667575ddee28ef71 + languageName: node + linkType: hard + +"bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"blakejs@npm:^1.1.0": + version: 1.2.1 + resolution: "blakejs@npm:1.2.1" + checksum: 10c0/c284557ce55b9c70203f59d381f1b85372ef08ee616a90162174d1291a45d3e5e809fdf9edab6e998740012538515152471dc4f1f9dbfa974ba2b9c1f7b9aad7 + languageName: node + linkType: hard + +"bmp-ts@npm:^1.0.9": + version: 1.0.9 + resolution: "bmp-ts@npm:1.0.9" + checksum: 10c0/4b7f504d41a647e8b0560b77da3ea6c86c5dbb3b256320dde1a2c34dcc776ac3652c7aa12c32c2782f52a3be86da6bafb4178b4af5089163e22f0b4f5837a307 + languageName: node + linkType: hard + +"bn.js@npm:4.11.6": + version: 4.11.6 + resolution: "bn.js@npm:4.11.6" + checksum: 10c0/e6ee7d3f597f60722cc3361071e23ccf71d3387e166de02381f180f22d2fa79f5dbbdf9e4909e81faaf5da01c16ec6857ddff02678339ce085e2058fd0e405db + languageName: node + linkType: hard + +"bn.js@npm:^4.11.9": + version: 4.12.2 + resolution: "bn.js@npm:4.12.2" + checksum: 10c0/09a249faa416a9a1ce68b5f5ec8bbca87fe54e5dd4ef8b1cc8a4969147b80035592bddcb1e9cc814c3ba79e573503d5c5178664b722b509fb36d93620dba9b57 + languageName: node + linkType: hard + +"bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": + version: 5.2.2 + resolution: "bn.js@npm:5.2.2" + checksum: 10c0/cb97827d476aab1a0194df33cd84624952480d92da46e6b4a19c32964aa01553a4a613502396712704da2ec8f831cf98d02e74ca03398404bd78a037ba93f2ab + languageName: node + linkType: hard + +"body-parser@npm:1.20.3": + version: 1.20.3 + resolution: "body-parser@npm:1.20.3" + dependencies: + bytes: "npm:3.1.2" + content-type: "npm:~1.0.5" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + on-finished: "npm:2.4.1" + qs: "npm:6.13.0" + raw-body: "npm:2.5.2" + type-is: "npm:~1.6.18" + unpipe: "npm:1.0.0" + checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310 + languageName: node + linkType: hard + +"boxen@npm:^5.1.2": + version: 5.1.2 + resolution: "boxen@npm:5.1.2" + dependencies: + ansi-align: "npm:^3.0.0" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.1.0" + cli-boxes: "npm:^2.2.1" + string-width: "npm:^4.2.2" + type-fest: "npm:^0.20.2" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/71f31c2eb3dcacd5fce524ae509e0cc90421752e0bfbd0281fd3352871d106c462a0f810c85f2fdb02f3a9fab2d7a84e9718b4999384d651b76104ebe5d2c024 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.2 + resolution: "brace-expansion@npm:2.0.2" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf + languageName: node + linkType: hard + +"brace-expansion@npm:^5.0.2": + version: 5.0.2 + resolution: "brace-expansion@npm:5.0.2" + dependencies: + balanced-match: "npm:^4.0.2" + checksum: 10c0/60c765e5df6fc0ceca3d5703202ae6779db61f28ea3bf93a04dbf0d50c22ef8e4644e09d0459c827077cd2d09ba8f199a04d92c36419fcf874601a5565013174 + languageName: node + linkType: hard + +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 + languageName: node + linkType: hard + +"browser-stdout@npm:^1.3.1": + version: 1.3.1 + resolution: "browser-stdout@npm:1.3.1" + checksum: 10c0/c40e482fd82be872b6ea7b9f7591beafbf6f5ba522fe3dade98ba1573a1c29a11101564993e4eb44e5488be8f44510af072df9a9637c739217eb155ceb639205 + languageName: node + linkType: hard + +"browserify-aes@npm:^1.2.0": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + dependencies: + buffer-xor: "npm:^1.0.3" + cipher-base: "npm:^1.0.0" + create-hash: "npm:^1.1.0" + evp_bytestokey: "npm:^1.0.3" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 + languageName: node + linkType: hard + +"browserslist@npm:^4.24.0, browserslist@npm:^4.28.1": + version: 4.28.1 + resolution: "browserslist@npm:4.28.1" + dependencies: + baseline-browser-mapping: "npm:^2.9.0" + caniuse-lite: "npm:^1.0.30001759" + electron-to-chromium: "npm:^1.5.263" + node-releases: "npm:^2.0.27" + update-browserslist-db: "npm:^1.2.0" + bin: + browserslist: cli.js + checksum: 10c0/545a5fa9d7234e3777a7177ec1e9134bb2ba60a69e6b95683f6982b1473aad347c77c1264ccf2ac5dea609a9731fbfbda6b85782bdca70f80f86e28a402504bd + languageName: node + linkType: hard + +"bs-logger@npm:^0.2.6": + version: 0.2.6 + resolution: "bs-logger@npm:0.2.6" + dependencies: + fast-json-stable-stringify: "npm:2.x" + checksum: 10c0/80e89aaaed4b68e3374ce936f2eb097456a0dddbf11f75238dbd53140b1e39259f0d248a5089ed456f1158984f22191c3658d54a713982f676709fbe1a6fa5a0 + languageName: node + linkType: hard + +"bs58@npm:^4.0.0": + version: 4.0.1 + resolution: "bs58@npm:4.0.1" + dependencies: + base-x: "npm:^3.0.2" + checksum: 10c0/613a1b1441e754279a0e3f44d1faeb8c8e838feef81e550efe174ff021dd2e08a4c9ae5805b52dfdde79f97b5c0918c78dd24a0eb726c4a94365f0984a0ffc65 + languageName: node + linkType: hard + +"bs58check@npm:^2.1.2": + version: 2.1.2 + resolution: "bs58check@npm:2.1.2" + dependencies: + bs58: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/5d33f319f0d7abbe1db786f13f4256c62a076bc8d184965444cb62ca4206b2c92bee58c93bce57150ffbbbe00c48838ac02e6f384e0da8215cac219c0556baa9 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"bson@npm:^7.0.0": + version: 7.0.0 + resolution: "bson@npm:7.0.0" + checksum: 10c0/6b12fb0411f4e6f4473da878c0aa615f03439040a349f4115beae336e3922265b25d833c6cc93fcb299017904b32e4ef86e284996f1103addc5918c576b57d9d + languageName: node + linkType: hard + +"buffer-equal-constant-time@npm:^1.0.1": + version: 1.0.1 + resolution: "buffer-equal-constant-time@npm:1.0.1" + checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + +"bullmq@npm:^5.66.2": + version: 5.70.0 + resolution: "bullmq@npm:5.70.0" + dependencies: + cron-parser: "npm:4.9.0" + ioredis: "npm:5.9.2" + msgpackr: "npm:1.11.5" + node-abort-controller: "npm:3.1.1" + semver: "npm:7.7.4" + tslib: "npm:2.8.1" + uuid: "npm:11.1.0" + checksum: 10c0/c5964c254031c4e1c46bfe3c5c258ee999a4cb907e29ed2ae560743b1ff45cf85e1edc065ccb35aa5e2e1999b852e8015a7a64af165eb573dff55d7c680749a8 + languageName: node + linkType: hard + +"busboy@npm:^1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: "npm:^1.1.0" + checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + languageName: node + linkType: hard + +"bytes@npm:3.1.2, bytes@npm:~3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + languageName: node + linkType: hard + +"cacache@npm:^20.0.1": + version: 20.0.3 + resolution: "cacache@npm:20.0.3" + dependencies: + "@npmcli/fs": "npm:^5.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^13.0.0" + lru-cache: "npm:^11.1.0" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^13.0.0" + unique-filename: "npm:^5.0.0" + checksum: 10c0/c7da1ca694d20e8f8aedabd21dc11518f809a7d2b59aa76a1fc655db5a9e62379e465c157ddd2afe34b19230808882288effa6911b2de26a088a6d5645123462 + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.2" + checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0, callsites@npm:^3.1.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001759": + version: 1.0.30001772 + resolution: "caniuse-lite@npm:1.0.30001772" + checksum: 10c0/62a29a47e4b728f7e927301392733c3982af74293ccf523e63eafc06f70b66fe48d51a6b6272e4fe34e57af9dced8ef7a3c611f21b51b999c6bed793bb7c7ede + languageName: node + linkType: hard + +"caseless@npm:^0.12.0, caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: 10c0/ccf64bcb6c0232cdc5b7bd91ddd06e23a4b541f138336d4725233ac538041fb2f29c2e86c3c4a7a61ef990b665348db23a047060b9414c3a6603e9fa61ad4626 + languageName: node + linkType: hard + +"cbor@npm:^8.1.0": + version: 8.1.0 + resolution: "cbor@npm:8.1.0" + dependencies: + nofilter: "npm:^3.1.0" + checksum: 10c0/a836e2e7ea0efb1b9c4e5a4be906c57113d730cc42293a34072e0164ed110bb8ac035dc7dca2e3ebb641bd4b37e00fdbbf09c951aa864b3d4888a6ed8c6243f7 + languageName: node + linkType: hard + +"chai-as-promised@npm:^7.1.1": + version: 7.1.2 + resolution: "chai-as-promised@npm:7.1.2" + dependencies: + check-error: "npm:^1.0.2" + peerDependencies: + chai: ">= 2.1.2 < 6" + checksum: 10c0/ee20ed75296d8cbf828b2f3c9ad64627cee67b1a38b8e906ca59fe788fb6965ddb10f702ae66645ed88f15a905ade4f2d9f8540029e92e2d59b229c9f912273f + languageName: node + linkType: hard + +"chai@npm:^4.3.10": + version: 4.5.0 + resolution: "chai@npm:4.5.0" + dependencies: + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.1.0" + checksum: 10c0/b8cb596bd1aece1aec659e41a6e479290c7d9bee5b3ad63d2898ad230064e5b47889a3bc367b20100a0853b62e026e2dc514acf25a3c9385f936aa3614d4ab4d + languageName: node + linkType: hard + +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + +"chalk@npm:^5.3.0": + version: 5.6.2 + resolution: "chalk@npm:5.6.2" + checksum: 10c0/99a4b0f0e7991796b1e7e3f52dceb9137cae2a9dfc8fc0784a550dc4c558e15ab32ed70b14b21b52beb2679b4892b41a0aa44249bcb996f01e125d58477c6976 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + languageName: node + linkType: hard + +"charenc@npm:>= 0.0.1": + version: 0.0.2 + resolution: "charenc@npm:0.0.2" + checksum: 10c0/a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 + languageName: node + linkType: hard + +"check-error@npm:^1.0.2, check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: "npm:^2.0.2" + checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 + languageName: node + linkType: hard + +"chokidar@npm:3.6.0, chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chokidar@npm:^4.0.0": + version: 4.0.3 + resolution: "chokidar@npm:4.0.3" + dependencies: + readdirp: "npm:^4.0.1" + checksum: 10c0/a58b9df05bb452f7d105d9e7229ac82fa873741c0c40ddcc7bb82f8a909fbe3f7814c9ebe9bc9a2bef9b737c0ec6e2d699d179048ef06ad3ec46315df0ebe6ad + languageName: node + linkType: hard + +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2": + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: 10c0/3058da7a5f4934b87cf6a90ef5fb68ebc5f7d06f143ed5a4650208e5d7acae47bc03ec844b29fbf5ba7e46e8daa6acecc878f7983a4f4bb7271593da91e61ff5 + languageName: node + linkType: hard + +"ci-info@npm:^2.0.0": + version: 2.0.0 + resolution: "ci-info@npm:2.0.0" + checksum: 10c0/8c5fa3830a2bcee2b53c2e5018226f0141db9ec9f7b1e27a5c57db5512332cde8a0beb769bcbaf0d8775a78afbf2bb841928feca4ea6219638a5b088f9884b46 + languageName: node + linkType: hard + +"ci-info@npm:^4.2.0": + version: 4.3.1 + resolution: "ci-info@npm:4.3.1" + checksum: 10c0/7dd82000f514d76ddfe7775e4cb0d66e5c638f5fa0e2a3be29557e898da0d32ac04f231217d414d07fb968b1fbc6d980ee17ddde0d2c516f23da9cfff608f6c1 + languageName: node + linkType: hard + +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.7 + resolution: "cipher-base@npm:1.0.7" + dependencies: + inherits: "npm:^2.0.4" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.2" + checksum: 10c0/53c5046a9d9b60c586479b8f13fde263c3f905e13f11e8e04c7a311ce399c91d9c3ec96642332e0de077d356e1014ee12bba96f74fbaad0de750f49122258836 + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^2.1.0": + version: 2.1.1 + resolution: "cjs-module-lexer@npm:2.1.1" + checksum: 10c0/813697c0ed1533f4a88bd8051d8ae1cb1b21d3ff1c6a5720353817d50c3f3f83bb2af6bd83922aae94b3ef90d64d01a6eb123fa8249f4dc7215e3afd89364f86 + languageName: node + linkType: hard + +"class-transformer@npm:^0.5.1": + version: 0.5.1 + resolution: "class-transformer@npm:0.5.1" + checksum: 10c0/19809914e51c6db42c036166839906420bb60367df14e15f49c45c8c1231bf25ae661ebe94736ee29cc688b77101ef851a8acca299375cc52fc141b64acde18a + languageName: node + linkType: hard + +"class-validator@npm:^0.14.3": + version: 0.14.3 + resolution: "class-validator@npm:0.14.3" + dependencies: + "@types/validator": "npm:^13.15.3" + libphonenumber-js: "npm:^1.11.1" + validator: "npm:^13.15.20" + checksum: 10c0/6d451c359aecb04479b95034b10cca02015d3b6f34480574c618c070e12f3676cb4cdfa76bfa61353356a483ff01326e9ce3f07ef584be6c31806190117f7fa4 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cli-boxes@npm:^2.2.1": + version: 2.2.1 + resolution: "cli-boxes@npm:2.2.1" + checksum: 10c0/6111352edbb2f62dbc7bfd58f2d534de507afed7f189f13fa894ce5a48badd94b2aa502fda28f1d7dd5f1eb456e7d4033d09a76660013ef50c7f66e7a034f050 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cli-table3@npm:0.6.5": + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" + dependencies: + "@colors/colors": "npm:1.5.0" + string-width: "npm:^4.2.0" + dependenciesMeta: + "@colors/colors": + optional: true + checksum: 10c0/d7cc9ed12212ae68241cc7a3133c52b844113b17856e11f4f81308acc3febcea7cc9fd298e70933e294dd642866b29fd5d113c2c098948701d0c35f09455de78 + languageName: node + linkType: hard + +"cli-table3@npm:^0.5.0": + version: 0.5.1 + resolution: "cli-table3@npm:0.5.1" + dependencies: + colors: "npm:^1.1.2" + object-assign: "npm:^4.1.0" + string-width: "npm:^2.1.1" + dependenciesMeta: + colors: + optional: true + checksum: 10c0/659c40ead17539d0665aa9dea85a7650fc161939f9d8bd3842c6cf5da51dc867057d3066fe8c962dafa163da39ce2029357754aee2c8f9513ea7a0810511d1d6 + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + languageName: node + linkType: hard + +"cli-width@npm:^4.1.0": + version: 4.1.0 + resolution: "cli-width@npm:4.1.0" + checksum: 10c0/1fbd56413578f6117abcaf858903ba1f4ad78370a4032f916745fa2c7e390183a9d9029cf837df320b0fdce8137668e522f60a30a5f3d6529ff3872d265a955f + languageName: node + linkType: hard + +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"cluster-key-slot@npm:^1.1.0": + version: 1.1.2 + resolution: "cluster-key-slot@npm:1.1.2" + checksum: 10c0/d7d39ca28a8786e9e801eeb8c770e3c3236a566625d7299a47bb71113fb2298ce1039596acb82590e598c52dbc9b1f088c8f587803e697cb58e1867a95ff94d3 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.2": + version: 1.0.3 + resolution: "collect-v8-coverage@npm:1.0.3" + checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"colors@npm:1.4.0, colors@npm:^1.1.2": + version: 1.4.0 + resolution: "colors@npm:1.4.0" + checksum: 10c0/9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"command-exists@npm:^1.2.8": + version: 1.2.9 + resolution: "command-exists@npm:1.2.9" + checksum: 10c0/75040240062de46cd6cd43e6b3032a8b0494525c89d3962e280dde665103f8cc304a8b313a5aa541b91da2f5a9af75c5959dc3a77893a2726407a5e9a0234c16 + languageName: node + linkType: hard + +"command-line-args@npm:^5.1.1": + version: 5.2.1 + resolution: "command-line-args@npm:5.2.1" + dependencies: + array-back: "npm:^3.1.0" + find-replace: "npm:^3.0.0" + lodash.camelcase: "npm:^4.3.0" + typical: "npm:^4.0.0" + checksum: 10c0/a4f6a23a1e420441bd1e44dee24efd12d2e49af7efe6e21eb32fca4e843ca3d5501ddebad86a4e9d99aa626dd6dcb64c04a43695388be54e3a803dbc326cc89f + languageName: node + linkType: hard + +"command-line-usage@npm:^6.1.0": + version: 6.1.3 + resolution: "command-line-usage@npm:6.1.3" + dependencies: + array-back: "npm:^4.0.2" + chalk: "npm:^2.4.2" + table-layout: "npm:^1.0.2" + typical: "npm:^5.2.0" + checksum: 10c0/23d7577ccb6b6c004e67bb6a9a8cb77282ae7b7507ae92249a9548a39050b7602fef70f124c765000ab23b8f7e0fb7a3352419ab73ea42a2d9ea32f520cdfe9e + languageName: node + linkType: hard + +"commander@npm:4.1.1": + version: 4.1.1 + resolution: "commander@npm:4.1.1" + checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab + languageName: node + linkType: hard + +"commander@npm:^14.0.2": + version: 14.0.3 + resolution: "commander@npm:14.0.3" + checksum: 10c0/755652564bbf56ff2ff083313912b326450d3f8d8c85f4b71416539c9a05c3c67dbd206821ca72635bf6b160e2afdefcb458e86b317827d5cb333b69ce7f1a24 + languageName: node + linkType: hard + +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"commander@npm:^8.1.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 10c0/8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 + languageName: node + linkType: hard + +"comment-json@npm:4.2.5": + version: 4.2.5 + resolution: "comment-json@npm:4.2.5" + dependencies: + array-timsort: "npm:^1.0.3" + core-util-is: "npm:^1.0.3" + esprima: "npm:^4.0.1" + has-own-prop: "npm:^2.0.0" + repeat-string: "npm:^1.6.1" + checksum: 10c0/e22f13f18fcc484ac33c8bc02a3d69c3f9467ae5063fdfb3df7735f83a8d9a2cab6a32b7d4a0c53123413a9577de8e17c8cc88369c433326799558febb34ef9c + languageName: node + linkType: hard + +"component-emitter@npm:^1.3.1": + version: 1.3.1 + resolution: "component-emitter@npm:1.3.1" + checksum: 10c0/e4900b1b790b5e76b8d71b328da41482118c0f3523a516a41be598dc2785a07fd721098d9bf6e22d89b19f4fa4e1025160dc00317ea111633a3e4f75c2b86032 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"concat-stream@npm:^1.6.0, concat-stream@npm:^1.6.2": + version: 1.6.2 + resolution: "concat-stream@npm:1.6.2" + dependencies: + buffer-from: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.2.2" + typedarray: "npm:^0.0.6" + checksum: 10c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 + languageName: node + linkType: hard + +"concat-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "concat-stream@npm:2.0.0" + dependencies: + buffer-from: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.0.2" + typedarray: "npm:^0.0.6" + checksum: 10c0/29565dd9198fe1d8cf57f6cc71527dbc6ad67e12e4ac9401feb389c53042b2dceedf47034cbe702dfc4fd8df3ae7e6bfeeebe732cc4fa2674e484c13f04c219a + languageName: node + linkType: hard + +"consola@npm:^2.15.0": + version: 2.15.3 + resolution: "consola@npm:2.15.3" + checksum: 10c0/34a337e6b4a1349ee4d7b4c568484344418da8fdb829d7d71bfefcd724f608f273987633b6eef465e8de510929907a092e13cb7a28a5d3acb3be446fcc79fd5e + languageName: node + linkType: hard + +"content-disposition@npm:0.5.4": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + languageName: node + linkType: hard + +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 + languageName: node + linkType: hard + +"cookie@npm:0.7.1": + version: 0.7.1 + resolution: "cookie@npm:0.7.1" + checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde + languageName: node + linkType: hard + +"cookie@npm:^0.4.1": + version: 0.4.2 + resolution: "cookie@npm:0.4.2" + checksum: 10c0/beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 + languageName: node + linkType: hard + +"cookiejar@npm:^2.1.4": + version: 2.1.4 + resolution: "cookiejar@npm:2.1.4" + checksum: 10c0/2dae55611c6e1678f34d93984cbd4bda58f4fe3e5247cc4993f4a305cd19c913bbaf325086ed952e892108115073a747596453d3dc1c34947f47f731818b8ad1 + languageName: node + linkType: hard + +"core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"cors@npm:2.8.5": + version: 2.8.5 + resolution: "cors@npm:2.8.5" + dependencies: + object-assign: "npm:^4" + vary: "npm:^1" + checksum: 10c0/373702b7999409922da80de4a61938aabba6929aea5b6fd9096fefb9e8342f626c0ebd7507b0e8b0b311380744cc985f27edebc0a26e0ddb784b54e1085de761 + languageName: node + linkType: hard + +"cosmiconfig@npm:^8.2.0": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + path-type: "npm:^4.0.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: "npm:^1.0.1" + inherits: "npm:^2.0.1" + md5.js: "npm:^1.3.4" + ripemd160: "npm:^2.0.1" + sha.js: "npm:^2.4.0" + checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 + languageName: node + linkType: hard + +"create-hmac@npm:1.1.7, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: "npm:^1.0.3" + create-hash: "npm:^1.1.0" + inherits: "npm:^2.0.1" + ripemd160: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + languageName: node + linkType: hard + +"cron-parser@npm:4.9.0": + version: 4.9.0 + resolution: "cron-parser@npm:4.9.0" + dependencies: + luxon: "npm:^3.2.1" + checksum: 10c0/348622bdcd1a15695b61fc33af8a60133e5913a85cf99f6344367579e7002896514ba3b0a9d6bb569b02667d6b06836722bf2295fcd101b3de378f71d37bed0b + languageName: node + linkType: hard + +"cron@npm:4.3.5": + version: 4.3.5 + resolution: "cron@npm:4.3.5" + dependencies: + "@types/luxon": "npm:~3.7.0" + luxon: "npm:~3.7.0" + checksum: 10c0/5d05afe6dd2e045709ecbc22a6ea2d5a7913cec32d4bdfff1649b32a2b0e11dafc75b1cc021aedfd1c1a8e4a813acde886ececc078207f19c90521e97a224c55 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"crypt@npm:>= 0.0.1": + version: 0.0.2 + resolution: "crypt@npm:0.0.2" + checksum: 10c0/adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 + languageName: node + linkType: hard + +"death@npm:^1.1.0": + version: 1.1.0 + resolution: "death@npm:1.1.0" + checksum: 10c0/4cf8ec37728b99cd18566e605b4c967eedaeeb1533a3003cb88cbc69e6fe1787393b21bfa8c26045222f4e7dd75044eaf6b4c566b67da84ecb81717a7e3ca391 + languageName: node + linkType: hard + +"debug@npm:2.6.9": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: "npm:2.0.0" + checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7, debug@npm:^4.4.0, debug@npm:^4.4.3": + version: 4.4.3 + resolution: "debug@npm:4.4.3" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 + languageName: node + linkType: hard + +"decamelize@npm:^4.0.0": + version: 4.0.0 + resolution: "decamelize@npm:4.0.0" + checksum: 10c0/e06da03fc05333e8cd2778c1487da67ffbea5b84e03ca80449519b8fa61f888714bbc6f459ea963d5641b4aa98832130eb5cd193d90ae9f0a27eee14be8e278d + languageName: node + linkType: hard + +"dedent@npm:^1.6.0": + version: 1.7.1 + resolution: "dedent@npm:1.7.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/ae29ec1c5bd5216c698c9f23acaa5b720260fd4cef3c8b5af887eb5f8c9e6fdd5fed8668767437b4efea35e2991bd798987717633411a1734807c28255769b78 + languageName: node + linkType: hard + +"deep-eql@npm:^4.0.1, deep-eql@npm:^4.1.3": + version: 4.1.4 + resolution: "deep-eql@npm:4.1.4" + dependencies: + type-detect: "npm:^4.0.0" + checksum: 10c0/264e0613493b43552fc908f4ff87b8b445c0e6e075656649600e1b8a17a57ee03e960156fce7177646e4d2ddaf8e5ee616d76bd79929ff593e5c79e4e5e6c517 + languageName: node + linkType: hard + +"deep-extend@npm:~0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + +"define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"denque@npm:^2.1.0": + version: 2.1.0 + resolution: "denque@npm:2.1.0" + checksum: 10c0/f9ef81aa0af9c6c614a727cb3bd13c5d7db2af1abf9e6352045b86e85873e629690f6222f4edd49d10e4ccf8f078bbeec0794fafaf61b659c0589d0c511ec363 + languageName: node + linkType: hard + +"depd@npm:2.0.0, depd@npm:~2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c + languageName: node + linkType: hard + +"destroy@npm:1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 + languageName: node + linkType: hard + +"detect-libc@npm:^2.0.1": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 + languageName: node + linkType: hard + +"detect-newline@npm:^3.1.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + +"dezalgo@npm:^1.0.4": + version: 1.0.4 + resolution: "dezalgo@npm:1.0.4" + dependencies: + asap: "npm:^2.0.0" + wrappy: "npm:1" + checksum: 10c0/8a870ed42eade9a397e6141fe5c025148a59ed52f1f28b1db5de216b4d57f0af7a257070c3af7ce3d5508c1ce9dd5009028a76f4b2cc9370dc56551d2355fad8 + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + languageName: node + linkType: hard + +"diff@npm:^5.2.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 + languageName: node + linkType: hard + +"difflib@npm:^0.2.4": + version: 0.2.4 + resolution: "difflib@npm:0.2.4" + dependencies: + heap: "npm:>= 0.2.0" + checksum: 10c0/4b151f1f6d378b0837ef28f4706d89d05b78f1093253b06c975c621f7ef8b048978588baf9e8f284c64b133d0abb08303b0789519cc91e5180d420cb3bb99c05 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dotenv-expand@npm:12.0.1": + version: 12.0.1 + resolution: "dotenv-expand@npm:12.0.1" + dependencies: + dotenv: "npm:^16.4.5" + checksum: 10c0/51996bfa670073d7a441b8fbed26ac991026fba2c05e9a937a898ce7d2a2e7166f7b6ec4eb8879e576defb5d1ad399ed1300db8f803d6977577fea55b4d82dac + languageName: node + linkType: hard + +"dotenv@npm:16.4.7": + version: 16.4.7 + resolution: "dotenv@npm:16.4.7" + checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462 + languageName: node + linkType: hard + +"dotenv@npm:^16.4.5": + version: 16.6.1 + resolution: "dotenv@npm:16.6.1" + checksum: 10c0/15ce56608326ea0d1d9414a5c8ee6dcf0fffc79d2c16422b4ac2268e7e2d76ff5a572d37ffe747c377de12005f14b3cc22361e79fc7f1061cce81f77d2c973dc + languageName: node + linkType: hard + +"dotenv@npm:^17.2.3": + version: 17.3.1 + resolution: "dotenv@npm:17.3.1" + checksum: 10c0/c78e0c2d5a549c751e544cc60e2b95e7cb67e0c551f42e094d161c6b297aa44b630a3c2dcacf5569e529a6c2a6b84e2ab9be8d37b299d425df5a18b81ce4a35f + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"ecdsa-sig-formatter@npm:1.0.11": + version: 1.0.11 + resolution: "ecdsa-sig-formatter@npm:1.0.11" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c + languageName: node + linkType: hard + +"ed25519-hd-key@npm:^1.3.0": + version: 1.3.0 + resolution: "ed25519-hd-key@npm:1.3.0" + dependencies: + create-hmac: "npm:1.1.7" + tweetnacl: "npm:1.0.3" + checksum: 10c0/8fb2fa9a9cb90bfbd0261b1f14f2f6367c98c51d0d5b9045df6e95634372493c59fc162dd1c584f569717fc18c23067a570edc3f48506d644c81eb8fde90c1b2 + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.263": + version: 1.5.267 + resolution: "electron-to-chromium@npm:1.5.267" + checksum: 10c0/0732bdb891b657f2e43266a3db8cf86fff6cecdcc8d693a92beff214e136cb5c2ee7dc5945ed75fa1db16e16bad0c38695527a020d15f39e79084e0b2e447621 + languageName: node + linkType: hard + +"elliptic@npm:6.6.1, elliptic@npm:^6.5.7": + version: 6.6.1 + resolution: "elliptic@npm:6.6.1" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/8b24ef782eec8b472053793ea1e91ae6bee41afffdfcb78a81c0a53b191e715cbe1292aa07165958a9bbe675bd0955142560b1a007ffce7d6c765bcaf951a867 + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec + languageName: node + linkType: hard + +"encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.17.4, enhanced-resolve@npm:^5.7.0": + version: 5.18.4 + resolution: "enhanced-resolve@npm:5.18.4" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/8f6d42c8a0787a746c493e724c9de5d091cfe8e3f871f2464e2f78a6c55fa1a3aaba495334f923c8ea3ac23e1472491f79feef6fc0fb46a75169cb447ffbe2dc + languageName: node + linkType: hard + +"enquirer@npm:^2.3.0": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" + dependencies: + ansi-colors: "npm:^4.1.1" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.4 + resolution: "error-ex@npm:1.3.4" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/b9e34ff4778b8f3b31a8377e1c654456f4c41aeaa3d10a1138c3b7635d8b7b2e03eb2475d46d8ae055c1f180a1063e100bffabf64ea7e7388b37735df5328664 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.2.1": + version: 1.7.0 + resolution: "es-module-lexer@npm:1.7.0" + checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b + languageName: node + linkType: hard + +"es-module-lexer@npm:^2.0.0": + version: 2.0.0 + resolution: "es-module-lexer@npm:2.0.0" + checksum: 10c0/ae78dbbd43035a4b972c46cfb6877e374ea290adfc62bc2f5a083fea242c0b2baaab25c5886af86be55f092f4a326741cb94334cd3c478c383fdc8a9ec5ff817 + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"escodegen@npm:1.8.x": + version: 1.8.1 + resolution: "escodegen@npm:1.8.1" + dependencies: + esprima: "npm:^2.7.1" + estraverse: "npm:^1.9.1" + esutils: "npm:^2.0.2" + optionator: "npm:^0.8.1" + source-map: "npm:~0.2.0" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: ./bin/escodegen.js + esgenerate: ./bin/esgenerate.js + checksum: 10c0/ac19704975bb22e20f04d0da8b4586c11e302fd9fb48bbf945c5b9c0fd01dc85ed25975b6eaba733047e9cc7e57a4bb95c39820843d1f8f55daf88be02398d8f + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^9.0.0": + version: 9.1.2 + resolution: "eslint-config-prettier@npm:9.1.2" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/d2e9dc913b1677764a4732433d83d258f40820458c65d0274cb9e3eaf6559b39f2136446f310c05abed065a4b3c2e901807ccf583dff76c6227eaebf4132c39a + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:^5.0.0": + version: 5.5.4 + resolution: "eslint-plugin-prettier@npm:5.5.4" + dependencies: + prettier-linter-helpers: "npm:^1.0.0" + synckit: "npm:^0.11.7" + peerDependencies: + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" + prettier: ">=3.0.0" + peerDependenciesMeta: + "@types/eslint": + optional: true + eslint-config-prettier: + optional: true + checksum: 10c0/5cc780e0ab002f838ad8057409e86de4ff8281aa2704a50fa8511abff87028060c2e45741bc9cbcbd498712e8d189de8026e70aed9e20e50fe5ba534ee5a8442 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^5.0.0": + version: 5.0.1 + resolution: "eslint-visitor-keys@npm:5.0.1" + checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678 + languageName: node + linkType: hard + +"eslint@npm:^8.42.0": + version: 8.57.1 + resolution: "eslint@npm:8.57.1" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.57.1" + "@humanwhocodes/config-array": "npm:^0.13.0" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1 + languageName: node + linkType: hard + +"eslint@npm:^9.39.2": + version: 9.39.2 + resolution: "eslint@npm:9.39.2" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.8.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.21.1" + "@eslint/config-helpers": "npm:^0.4.2" + "@eslint/core": "npm:^0.17.0" + "@eslint/eslintrc": "npm:^3.3.1" + "@eslint/js": "npm:9.39.2" + "@eslint/plugin-kit": "npm:^0.4.1" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.6" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^8.4.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" + esquery: "npm:^1.5.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10c0/bb88ca8fd16bb7e1ac3e13804c54d41c583214460c0faa7b3e7c574e69c5600c7122295500fb4b0c06067831111db740931e98da1340329527658e1cf80073d3 + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: "npm:^8.15.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esprima@npm:2.7.x, esprima@npm:^2.7.1": + version: 2.7.3 + resolution: "esprima@npm:2.7.3" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/6e1e99f280eed2ecd521ae28217c5f7c7a03fd0a1ac913bffd4a4ba278caf32cb8d9fc01e41d4b4bc904617282873dea297d60e1f93ea20156f29994c348a04f + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2, esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^1.9.1": + version: 1.9.3 + resolution: "estraverse@npm:1.9.3" + checksum: 10c0/2477bab0c5cdc7534162fbb16b25282c49f434875227937726692ed105762403e9830324cc97c3ea8bf332fe91122ea321f4d4292aaf50db7a90d857e169719e + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 + languageName: node + linkType: hard + +"eth-gas-reporter@npm:^0.2.25": + version: 0.2.27 + resolution: "eth-gas-reporter@npm:0.2.27" + dependencies: + "@solidity-parser/parser": "npm:^0.14.0" + axios: "npm:^1.5.1" + cli-table3: "npm:^0.5.0" + colors: "npm:1.4.0" + ethereum-cryptography: "npm:^1.0.3" + ethers: "npm:^5.7.2" + fs-readdir-recursive: "npm:^1.1.0" + lodash: "npm:^4.17.14" + markdown-table: "npm:^1.1.3" + mocha: "npm:^10.2.0" + req-cwd: "npm:^2.0.0" + sha1: "npm:^1.1.1" + sync-request: "npm:^6.0.0" + peerDependencies: + "@codechecks/client": ^0.1.0 + peerDependenciesMeta: + "@codechecks/client": + optional: true + checksum: 10c0/62a7b8ea41d82731fe91a7741eb2362f08d55e0fece1c12e69effe1684933999961d97d1011037a54063fda20c33a61ef143f04b7ccef36c3002f40975b0415f + languageName: node + linkType: hard + +"ethereum-bloom-filters@npm:^1.0.6": + version: 1.2.0 + resolution: "ethereum-bloom-filters@npm:1.2.0" + dependencies: + "@noble/hashes": "npm:^1.4.0" + checksum: 10c0/7a0ed420cb2e85f621042d78576eb4ddea535a57f3186e314160604b29c37bcd0d3561b03695971e3a96e9c9db402b87de7248a1ac640cbc3dda1b8077cf841f + languageName: node + linkType: hard + +"ethereum-cryptography@npm:^0.1.3": + version: 0.1.3 + resolution: "ethereum-cryptography@npm:0.1.3" + dependencies: + "@types/pbkdf2": "npm:^3.0.0" + "@types/secp256k1": "npm:^4.0.1" + blakejs: "npm:^1.1.0" + browserify-aes: "npm:^1.2.0" + bs58check: "npm:^2.1.2" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + hash.js: "npm:^1.1.7" + keccak: "npm:^3.0.0" + pbkdf2: "npm:^3.0.17" + randombytes: "npm:^2.1.0" + safe-buffer: "npm:^5.1.2" + scrypt-js: "npm:^3.0.0" + secp256k1: "npm:^4.0.1" + setimmediate: "npm:^1.0.5" + checksum: 10c0/aa36e11fca9d67d67c96e02a98b33bae2e1add20bd11af43feb7f28cdafe0cd3bdbae3bfecc7f2d9ec8f504b10a1c8f7590f5f7fe236560fd8083dd321ad7144 + languageName: node + linkType: hard + +"ethereum-cryptography@npm:^1.0.3": + version: 1.2.0 + resolution: "ethereum-cryptography@npm:1.2.0" + dependencies: + "@noble/hashes": "npm:1.2.0" + "@noble/secp256k1": "npm:1.7.1" + "@scure/bip32": "npm:1.1.5" + "@scure/bip39": "npm:1.1.1" + checksum: 10c0/93e486a4a8b266dc2f274b69252e751345ef47551163371939b01231afb7b519133e2572b5975bb9cb4cc77ac54ccd36002c7c759a72488abeeaf216e4d55b46 + languageName: node + linkType: hard + +"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2, ethereum-cryptography@npm:^2.2.1": + version: 2.2.1 + resolution: "ethereum-cryptography@npm:2.2.1" + dependencies: + "@noble/curves": "npm:1.4.2" + "@noble/hashes": "npm:1.4.0" + "@scure/bip32": "npm:1.4.0" + "@scure/bip39": "npm:1.3.0" + checksum: 10c0/c6c7626d393980577b57f709878b2eb91f270fe56116044b1d7afb70d5c519cddc0c072e8c05e4a335e05342eb64d9c3ab39d52f78bb75f76ad70817da9645ef + languageName: node + linkType: hard + +"ethereumjs-util@npm:^7.1.4": + version: 7.1.5 + resolution: "ethereumjs-util@npm:7.1.5" + dependencies: + "@types/bn.js": "npm:^5.1.0" + bn.js: "npm:^5.1.2" + create-hash: "npm:^1.1.2" + ethereum-cryptography: "npm:^0.1.3" + rlp: "npm:^2.2.4" + checksum: 10c0/8b9487f35ecaa078bf9af6858eba6855fc61c73cc2b90c8c37486fcf94faf4fc1c5cda9758e6769f9ef2658daedaf2c18b366312ac461f8c8a122b392e3041eb + languageName: node + linkType: hard + +"ethers@npm:^5.7.2": + version: 5.8.0 + resolution: "ethers@npm:5.8.0" + dependencies: + "@ethersproject/abi": "npm:5.8.0" + "@ethersproject/abstract-provider": "npm:5.8.0" + "@ethersproject/abstract-signer": "npm:5.8.0" + "@ethersproject/address": "npm:5.8.0" + "@ethersproject/base64": "npm:5.8.0" + "@ethersproject/basex": "npm:5.8.0" + "@ethersproject/bignumber": "npm:5.8.0" + "@ethersproject/bytes": "npm:5.8.0" + "@ethersproject/constants": "npm:5.8.0" + "@ethersproject/contracts": "npm:5.8.0" + "@ethersproject/hash": "npm:5.8.0" + "@ethersproject/hdnode": "npm:5.8.0" + "@ethersproject/json-wallets": "npm:5.8.0" + "@ethersproject/keccak256": "npm:5.8.0" + "@ethersproject/logger": "npm:5.8.0" + "@ethersproject/networks": "npm:5.8.0" + "@ethersproject/pbkdf2": "npm:5.8.0" + "@ethersproject/properties": "npm:5.8.0" + "@ethersproject/providers": "npm:5.8.0" + "@ethersproject/random": "npm:5.8.0" + "@ethersproject/rlp": "npm:5.8.0" + "@ethersproject/sha2": "npm:5.8.0" + "@ethersproject/signing-key": "npm:5.8.0" + "@ethersproject/solidity": "npm:5.8.0" + "@ethersproject/strings": "npm:5.8.0" + "@ethersproject/transactions": "npm:5.8.0" + "@ethersproject/units": "npm:5.8.0" + "@ethersproject/wallet": "npm:5.8.0" + "@ethersproject/web": "npm:5.8.0" + "@ethersproject/wordlists": "npm:5.8.0" + checksum: 10c0/8f187bb6af3736fbafcb613d8fb5be31fe7667a1bae480dd0a4c31b597ed47e0693d552adcababcb05111da39a059fac22e44840ce1671b1cc972de22d6d85d9 + languageName: node + linkType: hard + +"ethers@npm:^6.16.0": + version: 6.16.0 + resolution: "ethers@npm:6.16.0" + dependencies: + "@adraffy/ens-normalize": "npm:1.10.1" + "@noble/curves": "npm:1.2.0" + "@noble/hashes": "npm:1.3.2" + "@types/node": "npm:22.7.5" + aes-js: "npm:4.0.0-beta.5" + tslib: "npm:2.7.0" + ws: "npm:8.17.1" + checksum: 10c0/65c0ff7016b1592b1961c3b68508902b89fc75e1ad025bab3a722df1b5699fd077551875a7285e65b2d0cfea9a85b2459bb84010a0fa4e4494d231848aee3a73 + languageName: node + linkType: hard + +"ethjs-unit@npm:0.1.6": + version: 0.1.6 + resolution: "ethjs-unit@npm:0.1.6" + dependencies: + bn.js: "npm:4.11.6" + number-to-bn: "npm:1.7.0" + checksum: 10c0/0115ddeb4bc932026b9cd259f6eb020a45b38be62e3786526b70e4c5fb0254184bf6e8b7b3f0c8bb80d4d596a73893e386c02221faf203895db7cb9c29b37188 + languageName: node + linkType: hard + +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b + languageName: node + linkType: hard + +"eventemitter3@npm:5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + languageName: node + linkType: hard + +"events@npm:^3.2.0, events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + languageName: node + linkType: hard + +"eventsource@npm:^2.0.2": + version: 2.0.2 + resolution: "eventsource@npm:2.0.2" + checksum: 10c0/0b8c70b35e45dd20f22ff64b001be9d530e33b92ca8bdbac9e004d0be00d957ab02ef33c917315f59bf2f20b178c56af85c52029bc8e6cc2d61c31d87d943573 + languageName: node + linkType: hard + +"evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: "npm:^1.3.4" + node-gyp: "npm:latest" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 + languageName: node + linkType: hard + +"execa@npm:^5.1.1": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exif-parser@npm:^0.1.12": + version: 0.1.12 + resolution: "exif-parser@npm:0.1.12" + checksum: 10c0/ef1df84edbba50621fcfe19510c8db3ddd9e7fb374459d3f77c9256c24584767c7fb4cf1b15aef46e87a06528d3c48e44de02cecc314656d22a5cf954a0e7192 + languageName: node + linkType: hard + +"exit-x@npm:^0.2.2": + version: 0.2.2 + resolution: "exit-x@npm:0.2.2" + checksum: 10c0/212a7a095ca5540e9581f1ef2d1d6a40df7a6027c8cc96e78ce1d16b86d1a88326d4a0eff8dff2b5ec1e68bb0c1edd5d0dfdde87df1869bf7514d4bc6a5cbd72 + languageName: node + linkType: hard + +"expect@npm:30.2.0, expect@npm:^30.0.0": + version: 30.2.0 + resolution: "expect@npm:30.2.0" + dependencies: + "@jest/expect-utils": "npm:30.2.0" + "@jest/get-type": "npm:30.1.0" + jest-matcher-utils: "npm:30.2.0" + jest-message-util: "npm:30.2.0" + jest-mock: "npm:30.2.0" + jest-util: "npm:30.2.0" + checksum: 10c0/fe440b3a036e2de1a3ede84bc6a699925328056e74324fbd2fdd9ce7b7358d03e515ac8db559c33828bcb0b7887b493dbaaece565e67d88748685850da5d9209 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 + languageName: node + linkType: hard + +"express@npm:4.21.2": + version: 4.21.2 + resolution: "express@npm:4.21.2" + dependencies: + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:1.20.3" + content-disposition: "npm:0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:0.7.1" + cookie-signature: "npm:1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:1.3.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + merge-descriptors: "npm:1.0.3" + methods: "npm:~1.1.2" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:0.1.12" + proxy-addr: "npm:~2.0.7" + qs: "npm:6.13.0" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:0.19.0" + serve-static: "npm:1.16.2" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10c0/38168fd0a32756600b56e6214afecf4fc79ec28eca7f7a91c2ab8d50df4f47562ca3f9dee412da7f5cea6b1a1544b33b40f9f8586dbacfbdada0fe90dbb10a1f + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3, external-editor@npm:^3.1.0": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + languageName: node + linkType: hard + +"fast-content-type-parse@npm:^3.0.0": + version: 3.0.0 + resolution: "fast-content-type-parse@npm:3.0.0" + checksum: 10c0/06251880c83b7118af3a5e66e8bcee60d44f48b39396fc60acc2b4630bd5f3e77552b999b5c8e943d45a818854360e5e97164c374ec4b562b4df96a2cdf2e188 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-equals@npm:^5.0.1": + version: 5.4.0 + resolution: "fast-equals@npm:5.4.0" + checksum: 10c0/4fdce3a8f814e78af7296ca4ebe82f4765074a6dfe557ee98c18f5d2958c3de59025fbff7556d65f250165ccef424d37f9952ee159400f8ebe5f2edb704ec80e + languageName: node + linkType: hard + +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.9": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fast-levenshtein@npm:^3.0.0": + version: 3.0.0 + resolution: "fast-levenshtein@npm:3.0.0" + dependencies: + fastest-levenshtein: "npm:^1.0.7" + checksum: 10c0/9e147c682bd0ca54474f1cbf906f6c45262fd2e7c051d2caf2cc92729dcf66949dc809f2392de6adbe1c8716fdf012f91ce38c9422aef63b5732fc688eee4046 + languageName: node + linkType: hard + +"fast-safe-stringify@npm:2.1.1, fast-safe-stringify@npm:^2.1.1": + version: 2.1.1 + resolution: "fast-safe-stringify@npm:2.1.1" + checksum: 10c0/d90ec1c963394919828872f21edaa3ad6f1dddd288d2bd4e977027afff09f5db40f94e39536d4646f7e01761d704d72d51dce5af1b93717f3489ef808f5f4e4d + languageName: node + linkType: hard + +"fast-uri@npm:^3.0.1": + version: 3.1.0 + resolution: "fast-uri@npm:3.1.0" + checksum: 10c0/44364adca566f70f40d1e9b772c923138d47efeac2ae9732a872baafd77061f26b097ba2f68f0892885ad177becd065520412b8ffeec34b16c99433c5b9e2de7 + languageName: node + linkType: hard + +"fastest-levenshtein@npm:^1.0.7": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: 10c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.20.1 + resolution: "fastq@npm:1.20.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.2": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f + languageName: node + linkType: hard + +"feaxios@npm:^0.0.23": + version: 0.0.23 + resolution: "feaxios@npm:0.0.23" + dependencies: + is-retry-allowed: "npm:^3.0.0" + checksum: 10c0/e82204eba05ecf9744fc6ae15b7db725888e8ffaf883c17fe84a5118d141d717ea0704d21764d1566c528b574013d5fd2cc1a6601dbc4bdbedfbf662d621f176 + languageName: node + linkType: hard + +"fflate@npm:^0.8.2": + version: 0.8.2 + resolution: "fflate@npm:0.8.2" + checksum: 10c0/03448d630c0a583abea594835a9fdb2aaf7d67787055a761515bf4ed862913cfd693b4c4ffd5c3f3b355a70cf1e19033e9ae5aedcca103188aaff91b8bd6e293 + languageName: node + linkType: hard + +"figures@npm:^3.0.0, figures@npm:^3.2.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 + languageName: node + linkType: hard + +"file-type@npm:20.4.1": + version: 20.4.1 + resolution: "file-type@npm:20.4.1" + dependencies: + "@tokenizer/inflate": "npm:^0.2.6" + strtok3: "npm:^10.2.0" + token-types: "npm:^6.0.0" + uint8array-extras: "npm:^1.4.0" + checksum: 10c0/ae6f65e537205a9a3e07ae574de74ed5210aa78899d6478351a466f97e3f17096b93d74cb97f3fce7488bc8486a21e449ab076ec358ed06984f4a9a8f48a9f55 + languageName: node + linkType: hard + +"file-type@npm:^16.0.0": + version: 16.5.4 + resolution: "file-type@npm:16.5.4" + dependencies: + readable-web-to-node-stream: "npm:^3.0.0" + strtok3: "npm:^6.2.4" + token-types: "npm:^4.1.1" + checksum: 10c0/a6c9ab8bc05bc9c212bec239fb0d5bf59ddc9b3912f00c4ef44622e67ae4e553a1cc8372e9e595e14859035188eb305d05d488fa3c5c2a2ad90bb7745b3004ef + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"finalhandler@npm:1.3.1": + version: 1.3.1 + resolution: "finalhandler@npm:1.3.1" + dependencies: + debug: "npm:2.6.9" + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + statuses: "npm:2.0.1" + unpipe: "npm:~1.0.0" + checksum: 10c0/d38035831865a49b5610206a3a9a9aae4e8523cbbcd01175d0480ffbf1278c47f11d89be3ca7f617ae6d94f29cf797546a4619cd84dd109009ef33f12f69019f + languageName: node + linkType: hard + +"find-replace@npm:^3.0.0": + version: 3.0.0 + resolution: "find-replace@npm:3.0.0" + dependencies: + array-back: "npm:^3.0.1" + checksum: 10c0/fcd1bf7960388c8193c2861bcdc760c18ac14edb4bde062a961915d9a25727b2e8aabf0229e90cc09c753fd557e5a3e5ae61e49cadbe727be89a9e8e49ce7668 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.12.1, follow-redirects@npm:^1.15.11": + version: 1.15.11 + resolution: "follow-redirects@npm:1.15.11" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/d301f430542520a54058d4aeeb453233c564aaccac835d29d15e050beb33f339ad67d9bddbce01739c5dc46a6716dbe3d9d0d5134b1ca203effa11a7ef092343 + languageName: node + linkType: hard + +"for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" + dependencies: + is-callable: "npm:^1.2.7" + checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" + dependencies: + cross-spawn: "npm:^7.0.6" + signal-exit: "npm:^4.0.1" + checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 + languageName: node + linkType: hard + +"fork-ts-checker-webpack-plugin@npm:9.0.2": + version: 9.0.2 + resolution: "fork-ts-checker-webpack-plugin@npm:9.0.2" + dependencies: + "@babel/code-frame": "npm:^7.16.7" + chalk: "npm:^4.1.2" + chokidar: "npm:^3.5.3" + cosmiconfig: "npm:^8.2.0" + deepmerge: "npm:^4.2.2" + fs-extra: "npm:^10.0.0" + memfs: "npm:^3.4.1" + minimatch: "npm:^3.0.4" + node-abort-controller: "npm:^3.0.1" + schema-utils: "npm:^3.1.1" + semver: "npm:^7.3.5" + tapable: "npm:^2.2.1" + peerDependencies: + typescript: ">3.6.0" + webpack: ^5.11.0 + checksum: 10c0/37e11dadcc65d297f07882f1661795289f2bf16fa9dea0b90bcc438855d48787378bce4dfcd8e842782f220503438995efbb28cbe560126f6a744ff740e8cc38 + languageName: node + linkType: hard + +"form-data@npm:^2.2.0": + version: 2.5.5 + resolution: "form-data@npm:2.5.5" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + es-set-tostringtag: "npm:^2.1.0" + hasown: "npm:^2.0.2" + mime-types: "npm:^2.1.35" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/7fb70447849fc9bce4d01fe9a626f6587441f85779a2803b67f803e1ab52b0bd78db0a7acd80d944c665f68ca90936c327f1244b730719b638a0219e98b20488 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0, form-data@npm:^4.0.4, form-data@npm:^4.0.5": + version: 4.0.5 + resolution: "form-data@npm:4.0.5" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + es-set-tostringtag: "npm:^2.1.0" + hasown: "npm:^2.0.2" + mime-types: "npm:^2.1.12" + checksum: 10c0/dd6b767ee0bbd6d84039db12a0fa5a2028160ffbfaba1800695713b46ae974a5f6e08b3356c3195137f8530dcd9dfcb5d5ae1eeff53d0db1e5aad863b619ce3b + languageName: node + linkType: hard + +"formidable@npm:^3.5.4": + version: 3.5.4 + resolution: "formidable@npm:3.5.4" + dependencies: + "@paralleldrive/cuid2": "npm:^2.2.2" + dezalgo: "npm:^1.0.4" + once: "npm:^1.4.0" + checksum: 10c0/3a311ce57617eb8f532368e91c0f2bbfb299a0f1a35090e085bd6ca772298f196fbb0b66f0d4b5549d7bf3c5e1844439338d4402b7b6d1fedbe206ad44a931f8 + languageName: node + linkType: hard + +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 + languageName: node + linkType: hard + +"fp-ts@npm:1.19.3": + version: 1.19.3 + resolution: "fp-ts@npm:1.19.3" + checksum: 10c0/a016cfc98ad5e61564ab2d53a5379bbb8254642b66df13ced47e8c1d8d507abf4588d8bb43530198dfe1907211d8bae8f112cab52ba0ac6ab055da9168a6e260 + languageName: node + linkType: hard + +"fp-ts@npm:^1.0.0": + version: 1.19.5 + resolution: "fp-ts@npm:1.19.5" + checksum: 10c0/2a330fa1779561307740c26a7255fdffeb1ca2d0c7448d4dc094b477b772b0c8f7da1dfc88569b6f13f6958169b63b5df7361e514535b46b2e215bbf03a3722d + languageName: node + linkType: hard + +"fresh@npm:0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a + languageName: node + linkType: hard + +"fs-extra@npm:^10.0.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e + languageName: node + linkType: hard + +"fs-extra@npm:^7.0.0, fs-extra@npm:^7.0.1": + version: 7.0.1 + resolution: "fs-extra@npm:7.0.1" + dependencies: + graceful-fs: "npm:^4.1.2" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10c0/1943bb2150007e3739921b8d13d4109abdc3cc481e53b97b7ea7f77eda1c3c642e27ae49eac3af074e3496ea02fde30f411ef410c760c70a38b92e656e5da784 + languageName: node + linkType: hard + +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10c0/259f7b814d9e50d686899550c4f9ded85c46c643f7fe19be69504888e007fcbc08f306fae8ec495b8b998635e997c9e3e175ff2eeed230524ef1c1684cc96423 + languageName: node + linkType: hard + +"fs-extra@npm:^9.1.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: "npm:^1.0.0" + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs-monkey@npm:^1.0.4": + version: 1.1.0 + resolution: "fs-monkey@npm:1.1.0" + checksum: 10c0/45596fe14753ae8f3fa180724106383de68c8de2836eb24d1647cacf18a6d05335402f3611d32e00234072a60d2f3371024c00cd295593bfbce35b84ff9f6a34 + languageName: node + linkType: hard + +"fs-readdir-recursive@npm:^1.1.0": + version: 1.1.0 + resolution: "fs-readdir-recursive@npm:1.1.0" + checksum: 10c0/7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:^2.3.3, fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" + dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-port@npm:^3.1.0": + version: 3.2.0 + resolution: "get-port@npm:3.2.0" + checksum: 10c0/1b6c3fe89074be3753d9ddf3d67126ea351ab9890537fe53fefebc2912d1d66fdc112451bbc76d33ae5ceb6ca70be2a91017944e3ee8fb0814ac9b295bf2a5b8 + languageName: node + linkType: hard + +"get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"ghost-testrpc@npm:^0.0.2": + version: 0.0.2 + resolution: "ghost-testrpc@npm:0.0.2" + dependencies: + chalk: "npm:^2.4.2" + node-emoji: "npm:^1.10.0" + bin: + testrpc-sc: ./index.js + checksum: 10c0/604efc022dfccda3da38ba5726ea52e5156c232814de440193ed7543dd1bb6a3899942df56ca8943c32fec2692abd9b62eb0fe381c7718b0941b3eb301c75b77 + languageName: node + linkType: hard + +"gifwrap@npm:^0.10.1": + version: 0.10.1 + resolution: "gifwrap@npm:0.10.1" + dependencies: + image-q: "npm:^4.0.0" + omggif: "npm:^1.0.10" + checksum: 10c0/dd7327725d47c15bd4b23b69dc149043adff9013e352280a3f86a965eecab7f3e6027ecbb4177b05a6ab3bd1995f447f7adb9fdcb41db4372d8a239859f22492 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 + languageName: node + linkType: hard + +"glob@npm:10.4.5": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"glob@npm:7.1.7": + version: 7.1.7 + resolution: "glob@npm:7.1.7" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/173245e6f9ccf904309eb7ef4a44a11f3bf68e9e341dff5a28b5db0dd7123b7506daf41497f3437a0710f57198187b758c2351eeaabce4d16935e956920da6a4 + languageName: node + linkType: hard + +"glob@npm:^10.3.10": + version: 10.5.0 + resolution: "glob@npm:10.5.0" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/100705eddbde6323e7b35e1d1ac28bcb58322095bd8e63a7d0bef1a2cdafe0d0f7922a981b2b48369a4f8c1b077be5c171804534c3509dfe950dde15fbe6d828 + languageName: node + linkType: hard + +"glob@npm:^13.0.0": + version: 13.0.6 + resolution: "glob@npm:13.0.6" + dependencies: + minimatch: "npm:^10.2.2" + minipass: "npm:^7.1.3" + path-scurry: "npm:^2.0.2" + checksum: 10c0/269c236f11a9b50357fe7a8c6aadac667e01deb5242b19c84975628f05f4438d8ee1354bb62c5d6c10f37fd59911b54d7799730633a2786660d8c69f1d18120a + languageName: node + linkType: hard + +"glob@npm:^5.0.15": + version: 5.0.15 + resolution: "glob@npm:5.0.15" + dependencies: + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:2 || 3" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/ed17b34406bedceb334a1df3502774a089ce822db07585ad2a6851d6040531540ce07407d7da5f0e0bded238114ea50302902f025e551499108076e635fcd9b1 + languageName: node + linkType: hard + +"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:^8.1.0": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + +"global-modules@npm:^2.0.0": + version: 2.0.0 + resolution: "global-modules@npm:2.0.0" + dependencies: + global-prefix: "npm:^3.0.0" + checksum: 10c0/43b770fe24aa6028f4b9770ea583a47f39750be15cf6e2578f851e4ccc9e4fa674b8541928c0b09c21461ca0763f0d36e4068cec86c914b07fd6e388e66ba5b9 + languageName: node + linkType: hard + +"global-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "global-prefix@npm:3.0.0" + dependencies: + ini: "npm:^1.3.5" + kind-of: "npm:^6.0.2" + which: "npm:^1.3.1" + checksum: 10c0/510f489fb68d1cc7060f276541709a0ee6d41356ef852de48f7906c648ac223082a1cc8fce86725ca6c0e032bcdc1189ae77b4744a624b29c34a9d0ece498269 + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d + languageName: node + linkType: hard + +"globby@npm:^10.0.1": + version: 10.0.2 + resolution: "globby@npm:10.0.2" + dependencies: + "@types/glob": "npm:^7.1.1" + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.0.3" + glob: "npm:^7.1.3" + ignore: "npm:^5.1.1" + merge2: "npm:^1.2.3" + slash: "npm:^3.0.0" + checksum: 10c0/9c610ad47117b9dfbc5b0c6c2408c3b72f89c1b9f91ee14c4dc794794e35768ee0920e2a403b688cfa749f48617c6ba3f3a52df07677ed73d602d4349b68c810 + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"handlebars@npm:^4.0.1, handlebars@npm:^4.7.8": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: "npm:^1.2.5" + neo-async: "npm:^2.6.2" + source-map: "npm:^0.6.1" + uglify-js: "npm:^3.1.4" + wordwrap: "npm:^1.0.0" + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 10c0/7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d + languageName: node + linkType: hard + +"hardhat-gas-reporter@npm:^1.0.10": + version: 1.0.10 + resolution: "hardhat-gas-reporter@npm:1.0.10" + dependencies: + array-uniq: "npm:1.0.3" + eth-gas-reporter: "npm:^0.2.25" + sha1: "npm:^1.1.1" + peerDependencies: + hardhat: ^2.0.2 + checksum: 10c0/3711ea331bcbbff4d37057cb3de47a9127011e3ee128c2254a68f3b7f12ab2133965cbcfa3a7ce1bba8461f3b1bda1b175c4814a048c8b06b3ad450001d119d8 + languageName: node + linkType: hard + +"hardhat@npm:^2.22.3": + version: 2.28.6 + resolution: "hardhat@npm:2.28.6" + dependencies: + "@ethereumjs/util": "npm:^9.1.0" + "@ethersproject/abi": "npm:^5.1.2" + "@nomicfoundation/edr": "npm:0.12.0-next.23" + "@nomicfoundation/solidity-analyzer": "npm:^0.1.0" + "@sentry/node": "npm:^5.18.1" + adm-zip: "npm:^0.4.16" + aggregate-error: "npm:^3.0.0" + ansi-escapes: "npm:^4.3.0" + boxen: "npm:^5.1.2" + chokidar: "npm:^4.0.0" + ci-info: "npm:^2.0.0" + debug: "npm:^4.1.1" + enquirer: "npm:^2.3.0" + env-paths: "npm:^2.2.0" + ethereum-cryptography: "npm:^1.0.3" + find-up: "npm:^5.0.0" + fp-ts: "npm:1.19.3" + fs-extra: "npm:^7.0.1" + immutable: "npm:^4.0.0-rc.12" + io-ts: "npm:1.10.4" + json-stream-stringify: "npm:^3.1.4" + keccak: "npm:^3.0.2" + lodash: "npm:^4.17.11" + micro-eth-signer: "npm:^0.14.0" + mnemonist: "npm:^0.38.0" + mocha: "npm:^10.0.0" + p-map: "npm:^4.0.0" + picocolors: "npm:^1.1.0" + raw-body: "npm:^2.4.1" + resolve: "npm:1.17.0" + semver: "npm:^6.3.0" + solc: "npm:0.8.26" + source-map-support: "npm:^0.5.13" + stacktrace-parser: "npm:^0.1.10" + tinyglobby: "npm:^0.2.6" + tsort: "npm:0.0.1" + undici: "npm:^5.14.0" + uuid: "npm:^8.3.2" + ws: "npm:^7.4.6" + peerDependencies: + ts-node: "*" + typescript: "*" + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + bin: + hardhat: internal/cli/bootstrap.js + checksum: 10c0/c2113bec0020c18d2f1c9ed7f0bbcc428196942d8d6e185f98638f744193ab6c0ebc39e684f15391de15809808287c0e7dca69e4ecbfbe926887a132121716ff + languageName: node + linkType: hard + +"has-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "has-flag@npm:1.0.0" + checksum: 10c0/d0ad4bebbbc005edccfa1e2c0600c89375be5663d23f49a129e0f817187405748b0b515abfc5b3c209c92692e39bb0481c83c0ee4df69433d6ffd0242183100b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-own-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "has-own-prop@npm:2.0.0" + checksum: 10c0/2745497283d80228b5c5fbb8c63ab1029e604bce7db8d4b36255e427b3695b2153dc978b176674d0dd2a23f132809e04d7ef41fefc0ab85870a5caa918c5c0d9 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"hash-base@npm:^3.0.0, hash-base@npm:^3.1.2": + version: 3.1.2 + resolution: "hash-base@npm:3.1.2" + dependencies: + inherits: "npm:^2.0.4" + readable-stream: "npm:^2.3.8" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.1" + checksum: 10c0/f3b7fae1853b31340048dd659f40f5260ca6f3ff53b932f807f4ab701ee09039f6e9dbe1841723ff61e20f3f69d6387a352e4ccc5f997dedb0d375c7d88bc15e + languageName: node + linkType: hard + +"hash.js@npm:1.1.7, hash.js@npm:^1.0.0, hash.js@npm:^1.0.3, hash.js@npm:^1.1.7": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.1" + checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + languageName: node + linkType: hard + +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 + languageName: node + linkType: hard + +"heap@npm:>= 0.2.0": + version: 0.2.7 + resolution: "heap@npm:0.2.7" + checksum: 10c0/341c5d51ae13dc8346c371a8a69c57c972fcb9a3233090d3dd5ba29d483d6b5b4e75492443cbfeacd46608bb30e6680f646ffb7a6205900221735587d07a79b6 + languageName: node + linkType: hard + +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: "npm:^1.0.3" + minimalistic-assert: "npm:^1.0.0" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + +"http-basic@npm:^8.1.1": + version: 8.1.3 + resolution: "http-basic@npm:8.1.3" + dependencies: + caseless: "npm:^0.12.0" + concat-stream: "npm:^1.6.2" + http-response-object: "npm:^3.0.1" + parse-cache-control: "npm:^1.0.1" + checksum: 10c0/dbc67b943067db7f43d1dd94539f874e6b78614227491c0a5c0acb9b0490467a4ec97247da21eb198f8968a5dc4089160165cb0103045cadb9b47bb844739752 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 + languageName: node + linkType: hard + +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: "npm:2.0.0" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + toidentifier: "npm:1.0.1" + checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 + languageName: node + linkType: hard + +"http-errors@npm:~2.0.1": + version: 2.0.1 + resolution: "http-errors@npm:2.0.1" + dependencies: + depd: "npm:~2.0.0" + inherits: "npm:~2.0.4" + setprototypeof: "npm:~1.2.0" + statuses: "npm:~2.0.2" + toidentifier: "npm:~1.0.1" + checksum: 10c0/fb38906cef4f5c83952d97661fe14dc156cb59fe54812a42cd448fa57b5c5dfcb38a40a916957737bd6b87aab257c0648d63eb5b6a9ca9f548e105b6072712d4 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"http-response-object@npm:^3.0.1": + version: 3.0.2 + resolution: "http-response-object@npm:3.0.2" + dependencies: + "@types/node": "npm:^10.0.3" + checksum: 10c0/f161db99184087798563cb14c48a67eebe9405668a5ed2341faf85d3079a2c00262431df8e0ccbe274dc6415b6729179f12b09f875d13ad33d83401e4b1ed22e + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24, iconv-lite@npm:~0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"ignore@npm:^7.0.5": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d + languageName: node + linkType: hard + +"image-q@npm:^4.0.0": + version: 4.0.0 + resolution: "image-q@npm:4.0.0" + dependencies: + "@types/node": "npm:16.9.1" + checksum: 10c0/4463f8f4c0b6897c2213dfccf08c7731edcaa0ff8e2dab81ce3cafd5bb97d4eaa7bdd64f715d616910cf7b87aba718e4326ed4270b5d13bccc49af24bf5ce1a1 + languageName: node + linkType: hard + +"immutable@npm:^4.0.0-rc.12": + version: 4.3.7 + resolution: "immutable@npm:4.3.7" + checksum: 10c0/9b099197081b22f6433003e34929da8ecddbbdc1474cdc8aa3b7669dee4adda349c06143de22def36016d1b6de5322b043eccd7a11db1dad2ca85dad4fff5435 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec + languageName: node + linkType: hard + +"import-local@npm:^3.2.0": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"ini@npm:^1.3.5": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + +"inquirer@npm:8.2.6": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.1" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:0.0.8" + ora: "npm:^5.4.1" + run-async: "npm:^2.4.0" + rxjs: "npm:^7.5.5" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + wrap-ansi: "npm:^6.0.1" + checksum: 10c0/eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 + languageName: node + linkType: hard + +"inquirer@npm:9.2.15": + version: 9.2.15 + resolution: "inquirer@npm:9.2.15" + dependencies: + "@ljharb/through": "npm:^2.3.12" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^5.3.0" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^4.1.0" + external-editor: "npm:^3.1.0" + figures: "npm:^3.2.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:1.0.0" + ora: "npm:^5.4.1" + run-async: "npm:^3.0.0" + rxjs: "npm:^7.8.1" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/c94d5863d4d05aeb1c6acfd30416037da03ecc1d7a9be099faf746000cd17ea134038b46888f5baed7abc0fa8efc1918029db896048d9dfa93610b7c999a1b71 + languageName: node + linkType: hard + +"interpret@npm:^1.0.0": + version: 1.4.0 + resolution: "interpret@npm:1.4.0" + checksum: 10c0/08c5ad30032edeec638485bc3f6db7d0094d9b3e85e0f950866600af3c52e9fd69715416d29564731c479d9f4d43ff3e4d302a178196bdc0e6837ec147640450 + languageName: node + linkType: hard + +"io-ts@npm:1.10.4": + version: 1.10.4 + resolution: "io-ts@npm:1.10.4" + dependencies: + fp-ts: "npm:^1.0.0" + checksum: 10c0/9370988a7e17fc23c194115808168ccd1ccf7b7ebe92c39c1cc2fd91c1dc641552a5428bb04fe28c01c826fa4f230e856eb4f7d27c774a1400af3fecf2936ab5 + languageName: node + linkType: hard + +"ioredis@npm:5.9.2": + version: 5.9.2 + resolution: "ioredis@npm:5.9.2" + dependencies: + "@ioredis/commands": "npm:1.5.0" + cluster-key-slot: "npm:^1.1.0" + debug: "npm:^4.3.4" + denque: "npm:^2.1.0" + lodash.defaults: "npm:^4.2.0" + lodash.isarguments: "npm:^3.1.0" + redis-errors: "npm:^1.2.0" + redis-parser: "npm:^3.0.0" + standard-as-callback: "npm:^2.1.0" + checksum: 10c0/9732a3adab56c63a0e76bd1a1c891e4201448c44ab31e7e9aee8e83005be07597a4969199593c0d59642fb3fcd64ce00e9a8fad6c92d80e648df20b4b2b184ce + languageName: node + linkType: hard + +"ioredis@npm:^5.8.2": + version: 5.8.2 + resolution: "ioredis@npm:5.8.2" + dependencies: + "@ioredis/commands": "npm:1.4.0" + cluster-key-slot: "npm:^1.1.0" + debug: "npm:^4.3.4" + denque: "npm:^2.1.0" + lodash.defaults: "npm:^4.2.0" + lodash.isarguments: "npm:^3.1.0" + redis-errors: "npm:^1.2.0" + redis-parser: "npm:^3.0.0" + standard-as-callback: "npm:^2.1.0" + checksum: 10c0/305e385f811d49908899e32c2de69616cd059f909afd9e0a53e54f596b1a5835ee3449bfc6a3c49afbc5a2fd27990059e316cc78f449c94024957bd34c826d88 + languageName: node + linkType: hard + +"ip-address@npm:^10.0.1": + version: 10.1.0 + resolution: "ip-address@npm:10.1.0" + checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 + languageName: node + linkType: hard + +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.16.1": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^2.0.0": + version: 2.0.0 + resolution: "is-fullwidth-code-point@npm:2.0.0" + checksum: 10c0/e58f3e4a601fc0500d8b2677e26e9fe0cd450980e66adb29d85b6addf7969731e38f8e43ed2ec868a09c101a55ac3d8b78902209269f38c5286bc98f5bc1b4d9 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-hex-prefixed@npm:1.0.0": + version: 1.0.0 + resolution: "is-hex-prefixed@npm:1.0.0" + checksum: 10c0/767fa481020ae654ab085ca24c63c518705ff36fdfbfc732292dc69092c6f8fdc551f6ce8c5f6ae704b0a19294e6f62be1b4b9859f0e1ac76e3b1b0733599d94 + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-plain-obj@npm:^2.1.0": + version: 2.1.0 + resolution: "is-plain-obj@npm:2.1.0" + checksum: 10c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53 + languageName: node + linkType: hard + +"is-retry-allowed@npm:^3.0.0": + version: 3.0.0 + resolution: "is-retry-allowed@npm:3.0.0" + checksum: 10c0/7dc52fb51c7b1767c4710e8cafed9887cfeae515a02195e9a11868fd851e601a4456e638fdc9b184a73c483d305cac46e76583edd16d78c82d7db169d3974fe9 + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.14": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^4.0.0": + version: 4.0.0 + resolution: "isexe@npm:4.0.0" + checksum: 10c0/5884815115bceac452877659a9c7726382531592f43dc29e5d48b7c4100661aed54018cb90bd36cb2eaeba521092570769167acbb95c18d39afdccbcca06c5ce + languageName: node + linkType: hard + +"isows@npm:1.0.7": + version: 1.0.7 + resolution: "isows@npm:1.0.7" + peerDependencies: + ws: "*" + checksum: 10c0/43c41fe89c7c07258d0be3825f87e12da8ac9023c5b5ae6741ec00b2b8169675c04331ea73ef8c172d37a6747066f4dc93947b17cd369f92828a3b3e741afbda + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0, istanbul-lib-instrument@npm:^6.0.2": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^5.0.0": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.23" + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.2.0 + resolution: "istanbul-reports@npm:3.2.0" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/d596317cfd9c22e1394f22a8d8ba0303d2074fe2e971887b32d870e4b33f8464b10f8ccbe6847808f7db485f084eba09e6c2ed706b3a978e4b52f07085b8f9bc + languageName: node + linkType: hard + +"iterare@npm:1.2.1": + version: 1.2.1 + resolution: "iterare@npm:1.2.1" + checksum: 10c0/02667d486e3e83ead028ba8484d927498c2ceab7e8c6a69dd881fd02abc4114f00b13abb36b592252fbb578b6e6f99ca1dfc2835408b9158c9a112a9964f453f + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jest-changed-files@npm:30.2.0": + version: 30.2.0 + resolution: "jest-changed-files@npm:30.2.0" + dependencies: + execa: "npm:^5.1.1" + jest-util: "npm:30.2.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/0ce838f8bffdadcdc19028f4b7a24c04d2f9885ee5c5c1bb4746c205cb96649934090ef6492c3dc45b1be097672b4f8043ad141278bc82f390579fa3ea4c11fe + languageName: node + linkType: hard + +"jest-circus@npm:30.2.0": + version: 30.2.0 + resolution: "jest-circus@npm:30.2.0" + dependencies: + "@jest/environment": "npm:30.2.0" + "@jest/expect": "npm:30.2.0" + "@jest/test-result": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + co: "npm:^4.6.0" + dedent: "npm:^1.6.0" + is-generator-fn: "npm:^2.1.0" + jest-each: "npm:30.2.0" + jest-matcher-utils: "npm:30.2.0" + jest-message-util: "npm:30.2.0" + jest-runtime: "npm:30.2.0" + jest-snapshot: "npm:30.2.0" + jest-util: "npm:30.2.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:30.2.0" + pure-rand: "npm:^7.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/32fc88e13d3e811a9af5ca02d31f7cc742e726a0128df0b023330d6dff6ac29bf981da09937162f7c0705cf327df8d24e46de84860f6817dbc134438315c2967 + languageName: node + linkType: hard + +"jest-cli@npm:30.2.0": + version: 30.2.0 + resolution: "jest-cli@npm:30.2.0" + dependencies: + "@jest/core": "npm:30.2.0" + "@jest/test-result": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + chalk: "npm:^4.1.2" + exit-x: "npm:^0.2.2" + import-local: "npm:^3.2.0" + jest-config: "npm:30.2.0" + jest-util: "npm:30.2.0" + jest-validate: "npm:30.2.0" + yargs: "npm:^17.7.2" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: ./bin/jest.js + checksum: 10c0/b722a98cdf7b0ff1c273dd4efbaf331d683335f1f338a76a24492574e582a4e5a12a9df66e41bf4c92c7cffe0f51b759818ecd42044cd9bbef67d40359240989 + languageName: node + linkType: hard + +"jest-config@npm:30.2.0": + version: 30.2.0 + resolution: "jest-config@npm:30.2.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/get-type": "npm:30.1.0" + "@jest/pattern": "npm:30.0.1" + "@jest/test-sequencer": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + babel-jest: "npm:30.2.0" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + deepmerge: "npm:^4.3.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + jest-circus: "npm:30.2.0" + jest-docblock: "npm:30.2.0" + jest-environment-node: "npm:30.2.0" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.2.0" + jest-runner: "npm:30.2.0" + jest-util: "npm:30.2.0" + jest-validate: "npm:30.2.0" + micromatch: "npm:^4.0.8" + parse-json: "npm:^5.2.0" + pretty-format: "npm:30.2.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + esbuild-register: ">=3.4.0" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + checksum: 10c0/f02bb747e3382cdbb5a00abd583e9118a0b4f1d9d4cad01b5cc06b7fab9b817419ec183856cd791b2e9167051cad52b3d22ea34319a28c8f3e70a5ce73d05faa + languageName: node + linkType: hard + +"jest-diff@npm:30.2.0": + version: 30.2.0 + resolution: "jest-diff@npm:30.2.0" + dependencies: + "@jest/diff-sequences": "npm:30.0.1" + "@jest/get-type": "npm:30.1.0" + chalk: "npm:^4.1.2" + pretty-format: "npm:30.2.0" + checksum: 10c0/5fac2cd89a10b282c5a68fc6206a95dfff9955ed0b758d24ffb0edcb20fb2f98e1fa5045c5c4205d952712ea864c6a086654f80cdd500cce054a2f5daf5b4419 + languageName: node + linkType: hard + +"jest-docblock@npm:30.2.0": + version: 30.2.0 + resolution: "jest-docblock@npm:30.2.0" + dependencies: + detect-newline: "npm:^3.1.0" + checksum: 10c0/2578366604eef1b36d59ffe1fc52a710995571535d437f83d94ff94756a83f78e699c1ba004c38a34c01859d669fd6c64e865c23c5a7d5bf4837cfca4bef3dda + languageName: node + linkType: hard + +"jest-each@npm:30.2.0": + version: 30.2.0 + resolution: "jest-each@npm:30.2.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + "@jest/types": "npm:30.2.0" + chalk: "npm:^4.1.2" + jest-util: "npm:30.2.0" + pretty-format: "npm:30.2.0" + checksum: 10c0/4fa7e88a2741daaebd58cf49f9add8bd6c68657d2c106a170ebe4d7f86082c9eede2b13924304277a92e02b31b59a3c34949877da077bc27712b57913bb88321 + languageName: node + linkType: hard + +"jest-environment-node@npm:30.2.0": + version: 30.2.0 + resolution: "jest-environment-node@npm:30.2.0" + dependencies: + "@jest/environment": "npm:30.2.0" + "@jest/fake-timers": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + jest-mock: "npm:30.2.0" + jest-util: "npm:30.2.0" + jest-validate: "npm:30.2.0" + checksum: 10c0/866ba2c04ccf003845a8ca1f372081d76923849ae8e06e50cdfed792e41a976b5f953e15f3af17ff51b111b9540cf846f7f582530ca724c2a2abf15d15a99728 + languageName: node + linkType: hard + +"jest-haste-map@npm:30.2.0": + version: 30.2.0 + resolution: "jest-haste-map@npm:30.2.0" + dependencies: + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + anymatch: "npm:^3.1.3" + fb-watchman: "npm:^2.0.2" + fsevents: "npm:^2.3.3" + graceful-fs: "npm:^4.2.11" + jest-regex-util: "npm:30.0.1" + jest-util: "npm:30.2.0" + jest-worker: "npm:30.2.0" + micromatch: "npm:^4.0.8" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/61b4ad5a59b4dfadac2f903f3d723d9017aada268c49b9222ec1e15c4892fd4c36af59b65f37f026d747d829672ab9679509fea5d4248d07a93b892963e1bb4e + languageName: node + linkType: hard + +"jest-leak-detector@npm:30.2.0": + version: 30.2.0 + resolution: "jest-leak-detector@npm:30.2.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + pretty-format: "npm:30.2.0" + checksum: 10c0/68e2822aabe302983b65a08b19719a2444259af8a23ff20a6e2b6ce7759f55730f51c7cf16c65cb6be930c80a6cc70a4820239c84e8f333c9670a8e3a4a21801 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:30.2.0": + version: 30.2.0 + resolution: "jest-matcher-utils@npm:30.2.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + chalk: "npm:^4.1.2" + jest-diff: "npm:30.2.0" + pretty-format: "npm:30.2.0" + checksum: 10c0/f221c8afa04cee693a2be735482c5db4ec6f845f8ca3a04cb419be34c6257f4531dab89c836251f31d1859318c38997e8e9f34bf7b4cdcc8c7be8ae6e2ecb9f2 + languageName: node + linkType: hard + +"jest-message-util@npm:30.2.0": + version: 30.2.0 + resolution: "jest-message-util@npm:30.2.0" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@jest/types": "npm:30.2.0" + "@types/stack-utils": "npm:^2.0.3" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + micromatch: "npm:^4.0.8" + pretty-format: "npm:30.2.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/9c4aae95f9e73a754e5ecababa06e5c00cf549ff1651bbbf9aadc671ee57e688b01606ef0e9932d9dfe3d4b8f4511b6e8d01e131a49d2f82761c820ab93ae519 + languageName: node + linkType: hard + +"jest-mock-extended@npm:^4.0.0": + version: 4.0.0 + resolution: "jest-mock-extended@npm:4.0.0" + dependencies: + ts-essentials: "npm:^10.0.2" + peerDependencies: + "@jest/globals": ^28.0.0 || ^29.0.0 || ^30.0.0 + jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 || ^30.0.0 + typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 10c0/ba51e8e49dba995a54bd9c45aa4d27e6b64a6199289c92292a286117d3f8a733fe480fc56b6d356505696fc79af193625892f5022ea69243525e706515a93249 + languageName: node + linkType: hard + +"jest-mock@npm:30.2.0": + version: 30.2.0 + resolution: "jest-mock@npm:30.2.0" + dependencies: + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + jest-util: "npm:30.2.0" + checksum: 10c0/dfc8eb87f4075242f1b31d9dcac606f945c4f6a245d2bb67273738d266bea6345e10de3afa675076d545361bc96b754f764cffb0ccc2e99767484bece981b2f8 + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.3": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:30.0.1": + version: 30.0.1 + resolution: "jest-regex-util@npm:30.0.1" + checksum: 10c0/f30c70524ebde2d1012afe5ffa5691d5d00f7d5ba9e43d588f6460ac6fe96f9e620f2f9b36a02d0d3e7e77bc8efb8b3450ae3b80ac53c8be5099e01bf54f6728 + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:30.2.0": + version: 30.2.0 + resolution: "jest-resolve-dependencies@npm:30.2.0" + dependencies: + jest-regex-util: "npm:30.0.1" + jest-snapshot: "npm:30.2.0" + checksum: 10c0/f98f2187b490f402dd9ed6b15b5d324b1220d250a5768d46b1f1582cef05b830311351532a7d19f1868a2ce0049856ae6c26587f3869995cae7850739088b879 + languageName: node + linkType: hard + +"jest-resolve@npm:30.2.0": + version: 30.2.0 + resolution: "jest-resolve@npm:30.2.0" + dependencies: + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.2.0" + jest-pnp-resolver: "npm:^1.2.3" + jest-util: "npm:30.2.0" + jest-validate: "npm:30.2.0" + slash: "npm:^3.0.0" + unrs-resolver: "npm:^1.7.11" + checksum: 10c0/149576b81609a79889d08298a95d52920839f796d24f8701beacaf998a4916df205acf86b64d0bc294172a821b88d144facf44ae5a4cb3cfaa03fa06a3fc666d + languageName: node + linkType: hard + +"jest-runner@npm:30.2.0": + version: 30.2.0 + resolution: "jest-runner@npm:30.2.0" + dependencies: + "@jest/console": "npm:30.2.0" + "@jest/environment": "npm:30.2.0" + "@jest/test-result": "npm:30.2.0" + "@jest/transform": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-docblock: "npm:30.2.0" + jest-environment-node: "npm:30.2.0" + jest-haste-map: "npm:30.2.0" + jest-leak-detector: "npm:30.2.0" + jest-message-util: "npm:30.2.0" + jest-resolve: "npm:30.2.0" + jest-runtime: "npm:30.2.0" + jest-util: "npm:30.2.0" + jest-watcher: "npm:30.2.0" + jest-worker: "npm:30.2.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/68cb5eb993b4a02143fc442c245b17567432709879ad5f859fec635ccdf4ad0ef128c9fc6765c1582b3f5136b36cad5c5dd173926081bfc527d490b27406383e + languageName: node + linkType: hard + +"jest-runtime@npm:30.2.0": + version: 30.2.0 + resolution: "jest-runtime@npm:30.2.0" + dependencies: + "@jest/environment": "npm:30.2.0" + "@jest/fake-timers": "npm:30.2.0" + "@jest/globals": "npm:30.2.0" + "@jest/source-map": "npm:30.0.1" + "@jest/test-result": "npm:30.2.0" + "@jest/transform": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + cjs-module-lexer: "npm:^2.1.0" + collect-v8-coverage: "npm:^1.0.2" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.2.0" + jest-message-util: "npm:30.2.0" + jest-mock: "npm:30.2.0" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.2.0" + jest-snapshot: "npm:30.2.0" + jest-util: "npm:30.2.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/d77b7eb75485f2b4913f635aeffa8e3e1b9baafb7a7f901f3c212195beb31f519e4b03358b5e454caee5cc94a2b9952c962fa7e5b0ff2ed06009a661924fd23e + languageName: node + linkType: hard + +"jest-snapshot@npm:30.2.0": + version: 30.2.0 + resolution: "jest-snapshot@npm:30.2.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/generator": "npm:^7.27.5" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + "@babel/types": "npm:^7.27.3" + "@jest/expect-utils": "npm:30.2.0" + "@jest/get-type": "npm:30.1.0" + "@jest/snapshot-utils": "npm:30.2.0" + "@jest/transform": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + babel-preset-current-node-syntax: "npm:^1.2.0" + chalk: "npm:^4.1.2" + expect: "npm:30.2.0" + graceful-fs: "npm:^4.2.11" + jest-diff: "npm:30.2.0" + jest-matcher-utils: "npm:30.2.0" + jest-message-util: "npm:30.2.0" + jest-util: "npm:30.2.0" + pretty-format: "npm:30.2.0" + semver: "npm:^7.7.2" + synckit: "npm:^0.11.8" + checksum: 10c0/961b13a3c9dcf8c533fe2ab8375bcdf441bd8680a7a7878245d8d8a4697432d806f7817cfaa061904e0c6cc939a38f1fe9f5af868b86328e77833a58822b3b63 + languageName: node + linkType: hard + +"jest-util@npm:30.2.0, jest-util@npm:^30.2.0": + version: 30.2.0 + resolution: "jest-util@npm:30.2.0" + dependencies: + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + graceful-fs: "npm:^4.2.11" + picomatch: "npm:^4.0.2" + checksum: 10c0/896d663554b35258a87ec1a0a0fdd8741fdf4f3239d09fc52fdd88fa5c411a5ece7903bbbbd7d5194743fcb69f62afc3287e90f57736a91e7df95ad421937936 + languageName: node + linkType: hard + +"jest-validate@npm:30.2.0": + version: 30.2.0 + resolution: "jest-validate@npm:30.2.0" + dependencies: + "@jest/get-type": "npm:30.1.0" + "@jest/types": "npm:30.2.0" + camelcase: "npm:^6.3.0" + chalk: "npm:^4.1.2" + leven: "npm:^3.1.0" + pretty-format: "npm:30.2.0" + checksum: 10c0/56566643d79ca07f021fa14cebb62c423ae405757cb8d742113ff0070f0761b80c77f665fac8d89622faaab71fc5452e1471939028187a88c8445303d7976255 + languageName: node + linkType: hard + +"jest-watcher@npm:30.2.0": + version: 30.2.0 + resolution: "jest-watcher@npm:30.2.0" + dependencies: + "@jest/test-result": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + jest-util: "npm:30.2.0" + string-length: "npm:^4.0.2" + checksum: 10c0/51587968fabb5b180383d638a04db253b82d9cc3f53fbba06ba7b0544146178d50becc090aca7931e2d4eb9aa1624bb3fbd1a2571484c9391554404e8b5d8fe7 + languageName: node + linkType: hard + +"jest-worker@npm:30.2.0": + version: 30.2.0 + resolution: "jest-worker@npm:30.2.0" + dependencies: + "@types/node": "npm:*" + "@ungap/structured-clone": "npm:^1.3.0" + jest-util: "npm:30.2.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.1.1" + checksum: 10c0/1ea47f6c682ba6cdbd50630544236aabccacf1d88335607206c10871a9777a45b0fc6336c8eb6344e32e69dd7681de17b2199b4d4552b00d48aade303627125c + languageName: node + linkType: hard + +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "npm:*" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b + languageName: node + linkType: hard + +"jest@npm:^30.2.0": + version: 30.2.0 + resolution: "jest@npm:30.2.0" + dependencies: + "@jest/core": "npm:30.2.0" + "@jest/types": "npm:30.2.0" + import-local: "npm:^3.2.0" + jest-cli: "npm:30.2.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: ./bin/jest.js + checksum: 10c0/af580c6e265d21870c2c98e31f17f2f5cb5c9e6cf9be26b95eaf4fad4140a01579f3b5844d4264cd8357eb24908e95f983ea84d20b8afef46e62aed3dd9452eb + languageName: node + linkType: hard + +"jimp@npm:^1.6.0": + version: 1.6.0 + resolution: "jimp@npm:1.6.0" + dependencies: + "@jimp/core": "npm:1.6.0" + "@jimp/diff": "npm:1.6.0" + "@jimp/js-bmp": "npm:1.6.0" + "@jimp/js-gif": "npm:1.6.0" + "@jimp/js-jpeg": "npm:1.6.0" + "@jimp/js-png": "npm:1.6.0" + "@jimp/js-tiff": "npm:1.6.0" + "@jimp/plugin-blit": "npm:1.6.0" + "@jimp/plugin-blur": "npm:1.6.0" + "@jimp/plugin-circle": "npm:1.6.0" + "@jimp/plugin-color": "npm:1.6.0" + "@jimp/plugin-contain": "npm:1.6.0" + "@jimp/plugin-cover": "npm:1.6.0" + "@jimp/plugin-crop": "npm:1.6.0" + "@jimp/plugin-displace": "npm:1.6.0" + "@jimp/plugin-dither": "npm:1.6.0" + "@jimp/plugin-fisheye": "npm:1.6.0" + "@jimp/plugin-flip": "npm:1.6.0" + "@jimp/plugin-hash": "npm:1.6.0" + "@jimp/plugin-mask": "npm:1.6.0" + "@jimp/plugin-print": "npm:1.6.0" + "@jimp/plugin-quantize": "npm:1.6.0" + "@jimp/plugin-resize": "npm:1.6.0" + "@jimp/plugin-rotate": "npm:1.6.0" + "@jimp/plugin-threshold": "npm:1.6.0" + "@jimp/types": "npm:1.6.0" + "@jimp/utils": "npm:1.6.0" + checksum: 10c0/15220bc83333773a6fd99cc568adeeb133083dd889b1d2fec546fbc0fb07ba76a1c0af8bb3f470b820f185d1ef43140519215cd4825cd6665a2a50c1745794a4 + languageName: node + linkType: hard + +"jpeg-js@npm:^0.4.4": + version: 0.4.4 + resolution: "jpeg-js@npm:0.4.4" + checksum: 10c0/4d0d5097f8e55d8bbce6f1dc32ffaf3f43f321f6222e4e6490734fdc6d005322e3bd6fb992c2df7f5b587343b1441a1c333281dc3285bc9116e369fd2a2b43a7 + languageName: node + linkType: hard + +"js-sha3@npm:0.8.0, js-sha3@npm:^0.8.0": + version: 0.8.0 + resolution: "js-sha3@npm:0.8.0" + checksum: 10c0/43a21dc7967c871bd2c46cb1c2ae97441a97169f324e509f382d43330d8f75cf2c96dba7c806ab08a425765a9c847efdd4bffbac2d99c3a4f3de6c0218f40533 + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:3.x, js-yaml@npm:^3.13.1": + version: 3.14.2 + resolution: "js-yaml@npm:3.14.2" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/3261f25912f5dd76605e5993d0a126c2b6c346311885d3c483706cd722efe34f697ea0331f654ce27c00a42b426e524518ec89d65ed02ea47df8ad26dcc8ce69 + languageName: node + linkType: hard + +"js-yaml@npm:4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1": + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json-stream-stringify@npm:^3.1.4, json-stream-stringify@npm:^3.1.6": + version: 3.1.6 + resolution: "json-stream-stringify@npm:3.1.6" + checksum: 10c0/cb45e65143f4634ebb2dc0732410a942eaf86f88a7938b2f6397f4c6b96a7ba936e74d4d17db48c9221f669153996362b2ff50fe8c7fed8a7548646f98ae1f58 + languageName: node + linkType: hard + +"json5@npm:^2.2.2, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonc-parser@npm:3.2.1": + version: 3.2.1 + resolution: "jsonc-parser@npm:3.2.1" + checksum: 10c0/ada66dec143d7f9cb0e2d0d29c69e9ce40d20f3a4cb96b0c6efb745025ac7f9ba647d7ac0990d0adfc37a2d2ae084a12009a9c833dbdbeadf648879a99b9df89 + languageName: node + linkType: hard + +"jsonc-parser@npm:3.3.1": + version: 3.3.1 + resolution: "jsonc-parser@npm:3.3.1" + checksum: 10c0/269c3ae0a0e4f907a914bf334306c384aabb9929bd8c99f909275ebd5c2d3bc70b9bcd119ad794f339dec9f24b6a4ee9cd5a8ab2e6435e730ad4075388fc2ab6 + languageName: node + linkType: hard + +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: "npm:^4.1.6" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.2.0 + resolution: "jsonfile@npm:6.2.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/7f4f43b08d1869ded8a6822213d13ae3b99d651151d77efd1557ced0889c466296a7d9684e397bd126acf5eb2cfcb605808c3e681d0fdccd2fe5a04b47e76c0d + languageName: node + linkType: hard + +"jsonschema@npm:^1.2.4": + version: 1.5.0 + resolution: "jsonschema@npm:1.5.0" + checksum: 10c0/c24ddb8d741f02efc0da3ad9b597a275f6b595062903d3edbfaa535c3f9c4c98613df68da5cb6635ed9aeab30d658986fea61d7662fc5b2b92840d5a1e21235e + languageName: node + linkType: hard + +"jsonwebtoken@npm:9.0.3, jsonwebtoken@npm:^9.0.0": + version: 9.0.3 + resolution: "jsonwebtoken@npm:9.0.3" + dependencies: + jws: "npm:^4.0.1" + lodash.includes: "npm:^4.3.0" + lodash.isboolean: "npm:^3.0.3" + lodash.isinteger: "npm:^4.0.4" + lodash.isnumber: "npm:^3.0.3" + lodash.isplainobject: "npm:^4.0.6" + lodash.isstring: "npm:^4.0.1" + lodash.once: "npm:^4.0.0" + ms: "npm:^2.1.1" + semver: "npm:^7.5.4" + checksum: 10c0/6ca7f1e54886ea3bde7146a5a22b53847c46e25453c7f7307a69818b9a6ad48c390b2e59d5690fcfd03c529b01960060cc4bb0c686991d6edae2285dfd30f4ba + languageName: node + linkType: hard + +"jsqr@npm:^1.4.0": + version: 1.4.0 + resolution: "jsqr@npm:1.4.0" + checksum: 10c0/69fbfe4c866a04c97b377901a166544a583bfc76b838c275efa9af058d64e5612267079b1e96ea7b6434385803571b1c6a97a43c85f4373e8afa4f4034fc916c + languageName: node + linkType: hard + +"jwa@npm:^2.0.1": + version: 2.0.1 + resolution: "jwa@npm:2.0.1" + dependencies: + buffer-equal-constant-time: "npm:^1.0.1" + ecdsa-sig-formatter: "npm:1.0.11" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/ab3ebc6598e10dc11419d4ed675c9ca714a387481466b10e8a6f3f65d8d9c9237e2826f2505280a739cf4cbcf511cb288eeec22b5c9c63286fc5a2e4f97e78cf + languageName: node + linkType: hard + +"jws@npm:^4.0.1": + version: 4.0.1 + resolution: "jws@npm:4.0.1" + dependencies: + jwa: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/6be1ed93023aef570ccc5ea8d162b065840f3ef12f0d1bb3114cade844de7a357d5dc558201d9a65101e70885a6fa56b17462f520e6b0d426195510618a154d0 + languageName: node + linkType: hard + +"kareem@npm:3.2.0": + version: 3.2.0 + resolution: "kareem@npm:3.2.0" + checksum: 10c0/15b840a20c4c3cecda33a794dfcf603f3c124a37ba6d13c084ac92ab8d3680b5366dd0f99589dfc218591cbbdaa390c0544d79fcda85b6c3e4b733755bcb54ef + languageName: node + linkType: hard + +"keccak@npm:^3.0.0, keccak@npm:^3.0.2": + version: 3.0.4 + resolution: "keccak@npm:3.0.4" + dependencies: + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/153525c1c1f770beadb8f8897dec2f1d2dcbee11d063fe5f61957a5b236bfd3d2a111ae2727e443aa6a848df5edb98b9ef237c78d56df49087b0ca8a232ca9cd + languageName: node + linkType: hard + +"keyv@npm:^4.5.3, keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"levn@npm:~0.3.0": + version: 0.3.0 + resolution: "levn@npm:0.3.0" + dependencies: + prelude-ls: "npm:~1.1.2" + type-check: "npm:~0.3.2" + checksum: 10c0/e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 + languageName: node + linkType: hard + +"libphonenumber-js@npm:^1.11.1": + version: 1.12.33 + resolution: "libphonenumber-js@npm:1.12.33" + checksum: 10c0/8a2ae4884da48bb28bf3651ff23bb896eb5f12ea0600bb1ca321538458805f5f22b860ff6eaaed42f897212fa9edfa1d62fe1fa0755a44c707cc465a7975c246 + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"loader-runner@npm:^4.2.0, loader-runner@npm:^4.3.1": + version: 4.3.1 + resolution: "loader-runner@npm:4.3.1" + checksum: 10c0/a523b6329f114e0a98317158e30a7dfce044b731521be5399464010472a93a15ece44757d1eaed1d8845019869c5390218bc1c7c3110f4eeaef5157394486eac + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 + languageName: node + linkType: hard + +"lodash.clonedeep@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.clonedeep@npm:4.5.0" + checksum: 10c0/2caf0e4808f319d761d2939ee0642fa6867a4bbf2cfce43276698828380756b99d4c4fa226d881655e6ac298dd453fe12a5ec8ba49861777759494c534936985 + languageName: node + linkType: hard + +"lodash.defaults@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.defaults@npm:4.2.0" + checksum: 10c0/d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707 + languageName: node + linkType: hard + +"lodash.includes@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.includes@npm:4.3.0" + checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b + languageName: node + linkType: hard + +"lodash.isarguments@npm:^3.1.0": + version: 3.1.0 + resolution: "lodash.isarguments@npm:3.1.0" + checksum: 10c0/5e8f95ba10975900a3920fb039a3f89a5a79359a1b5565e4e5b4310ed6ebe64011e31d402e34f577eca983a1fc01ff86c926e3cbe602e1ddfc858fdd353e62d8 + languageName: node + linkType: hard + +"lodash.isboolean@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isboolean@npm:3.0.3" + checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 + languageName: node + linkType: hard + +"lodash.isequal@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f + languageName: node + linkType: hard + +"lodash.isinteger@npm:^4.0.4": + version: 4.0.4 + resolution: "lodash.isinteger@npm:4.0.4" + checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 + languageName: node + linkType: hard + +"lodash.isnumber@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isnumber@npm:3.0.3" + checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d + languageName: node + linkType: hard + +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb + languageName: node + linkType: hard + +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 + languageName: node + linkType: hard + +"lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash.once@npm:^4.0.0": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 + languageName: node + linkType: hard + +"lodash.truncate@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.truncate@npm:4.4.2" + checksum: 10c0/4e870d54e8a6c86c8687e057cec4069d2e941446ccab7f40b4d9555fa5872d917d0b6aa73bece7765500a3123f1723bcdba9ae881b679ef120bba9e1a0b0ed70 + languageName: node + linkType: hard + +"lodash@npm:4.17.21, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + +"loupe@npm:^2.3.6": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" + dependencies: + get-func-name: "npm:^2.0.1" + checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 + languageName: node + linkType: hard + +"lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.6 + resolution: "lru-cache@npm:11.2.6" + checksum: 10c0/73bbffb298760e71b2bfe8ebc16a311c6a60ceddbba919cfedfd8635c2d125fbfb5a39b71818200e67973b11f8d59c5a9e31d6f90722e340e90393663a66e5cd + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"lru_map@npm:^0.3.3": + version: 0.3.3 + resolution: "lru_map@npm:0.3.3" + checksum: 10c0/d861f14a142a4a74ebf8d3ad57f2e768a5b820db4100ae53eed1a64eb6350912332e6ebc87cb7415ad6d0cd8f3ce6d20beab9a5e6042ccb5996ea0067a220448 + languageName: node + linkType: hard + +"luxon@npm:^3.2.1, luxon@npm:~3.7.0": + version: 3.7.2 + resolution: "luxon@npm:3.7.2" + checksum: 10c0/ed8f0f637826c08c343a29dd478b00628be93bba6f068417b1d8896b61cb61c6deacbe1df1e057dbd9298334044afa150f9aaabbeb3181418ac8520acfdc2ae2 + languageName: node + linkType: hard + +"magic-string@npm:0.30.8": + version: 0.30.8 + resolution: "magic-string@npm:0.30.8" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.4.15" + checksum: 10c0/51a1f06f678c082aceddfb5943de9b6bdb88f2ea1385a1c2adf116deb73dfcfa50df6c222901d691b529455222d4d68d0b28be5689ac6f69b3baa3462861f922 + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + +"make-error@npm:^1.1.1, make-error@npm:^1.3.6": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + +"make-fetch-happen@npm:^15.0.0": + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" + dependencies: + "@npmcli/agent": "npm:^4.0.0" + cacache: "npm:^20.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^6.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^13.0.0" + checksum: 10c0/525f74915660be60b616bcbd267c4a5b59481b073ba125e45c9c3a041bb1a47a2bd0ae79d028eb6f5f95bf9851a4158423f5068539c3093621abb64027e8e461 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"mantle-rwa-platform@workspace:.": + version: 0.0.0-use.local + resolution: "mantle-rwa-platform@workspace:." + dependencies: + "@eslint/js": "npm:^9.39.2" + "@stellar/stellar-sdk": "npm:^14.5.0" + "@types/jest": "npm:^30.0.0" + "@types/multer": "npm:^2.0.0" + "@types/node": "npm:^25.0.3" + "@typescript-eslint/eslint-plugin": "npm:^8.50.0" + "@typescript-eslint/parser": "npm:^8.50.0" + bip39: "npm:^3.1.0" + dotenv: "npm:^16.4.5" + ed25519-hd-key: "npm:^1.3.0" + eslint: "npm:^9.39.2" + typescript: "npm:^5.9.3" + typescript-eslint: "npm:^8.50.0" + languageName: unknown + linkType: soft + +"markdown-table@npm:^1.1.3": + version: 1.1.3 + resolution: "markdown-table@npm:1.1.3" + checksum: 10c0/aea6eb998900449d938ce46819630492792dd26ac9737f8b506f98baf88c98b7cc1e69c33b72959e0f8578fc0a4b4b44d740daf2db9d8e92ccf3c3522f749fda + languageName: node + linkType: hard + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 + languageName: node + linkType: hard + +"memfs@npm:^3.4.1": + version: 3.5.3 + resolution: "memfs@npm:3.5.3" + dependencies: + fs-monkey: "npm:^1.0.4" + checksum: 10c0/038fc81bce17ea92dde15aaa68fa0fdaf4960c721ce3ffc7c2cb87a259333f5159784ea48b3b72bf9e054254d9d0d0d5209d0fdc3d07d08653a09933b168fbd7 + languageName: node + linkType: hard + +"memory-pager@npm:^1.0.2": + version: 1.5.0 + resolution: "memory-pager@npm:1.5.0" + checksum: 10c0/2596e80c99fee24f05bd8a20cde2ee899012c996f4ec361ac76ed6f009f34149d733ac6f76880106ccd6a66d062ad439357578d383d429df66ba1278f68806e9 + languageName: node + linkType: hard + +"memorystream@npm:^0.3.1": + version: 0.3.1 + resolution: "memorystream@npm:0.3.1" + checksum: 10c0/4bd164657711d9747ff5edb0508b2944414da3464b7fe21ac5c67cf35bba975c4b446a0124bd0f9a8be54cfc18faf92e92bd77563a20328b1ccf2ff04e9f39b9 + languageName: node + linkType: hard + +"merge-descriptors@npm:1.0.3": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"methods@npm:^1.1.2, methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 + languageName: node + linkType: hard + +"micro-eth-signer@npm:^0.14.0": + version: 0.14.0 + resolution: "micro-eth-signer@npm:0.14.0" + dependencies: + "@noble/curves": "npm:~1.8.1" + "@noble/hashes": "npm:~1.7.1" + micro-packed: "npm:~0.7.2" + checksum: 10c0/62c90d54d2b97cb4eaf713c69bc4ceb5903012d0237c26f0966076cfb89c4527de68b395e1bc29e6f237152ce08f7b551fb57b332003518a1331c2c0890fb164 + languageName: node + linkType: hard + +"micro-ftch@npm:^0.3.1": + version: 0.3.1 + resolution: "micro-ftch@npm:0.3.1" + checksum: 10c0/b87d35a52aded13cf2daca8d4eaa84e218722b6f83c75ddd77d74f32cc62e699a672e338e1ee19ceae0de91d19cc24dcc1a7c7d78c81f51042fe55f01b196ed3 + languageName: node + linkType: hard + +"micro-packed@npm:~0.7.2": + version: 0.7.3 + resolution: "micro-packed@npm:0.7.3" + dependencies: + "@scure/base": "npm:~1.2.5" + checksum: 10c0/1fde48a96d8d5606d3298ff36717bf7483d6d59e2d96f50cb88727379127a4d52881f48e7e1ce0d4906b2711b1902fb04d2128576326ce4d07e171ac022a4c2d + languageName: node + linkType: hard + +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.35, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 + languageName: node + linkType: hard + +"mime@npm:2.6.0": + version: 2.6.0 + resolution: "mime@npm:2.6.0" + bin: + mime: cli.js + checksum: 10c0/a7f2589900d9c16e3bdf7672d16a6274df903da958c1643c9c45771f0478f3846dcb1097f31eb9178452570271361e2149310931ec705c037210fc69639c8e6c + languageName: node + linkType: hard + +"mime@npm:3": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + languageName: node + linkType: hard + +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 + languageName: node + linkType: hard + +"minimatch@npm:2 || 3, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:9.0.3": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minimatch@npm:^10.2.2": + version: 10.2.2 + resolution: "minimatch@npm:10.2.2" + dependencies: + brace-expansion: "npm:^5.0.2" + checksum: 10c0/098831f2f542cb802e1f249c809008a016e1fef6b3a9eda9cf9ecb2b3d7979083951bd47c0c82fcf34330bd3b36638a493d4fa8e24cce58caf5b481de0f4e238 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.6": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minimist@npm:^1.2.5, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^5.0.0": + version: 5.0.1 + resolution: "minipass-fetch@npm:5.0.1" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^2.0.0" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/50bcf48c9841ebb25e29a2817468595219c72cfffc7c175a1d7327843c8bef9b72cb01778f46df7eca695dfe47ab98e6167af4cb026ddd80f660842919a5193c + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^2.0.0": + version: 2.0.0 + resolution: "minipass-sized@npm:2.0.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/f9201696a6f6d68610d04c9c83e3d2e5cb9c026aae1c8cbf7e17f386105cb79c1bb088dbc21bf0b1eb4f3fb5df384fd1e7aa3bf1f33868c416ae8c8a92679db8 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb + languageName: node + linkType: hard + +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec + languageName: node + linkType: hard + +"mkdirp@npm:0.5.x, mkdirp@npm:^0.5.6": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: "npm:^1.2.6" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mnemonist@npm:^0.38.0": + version: 0.38.5 + resolution: "mnemonist@npm:0.38.5" + dependencies: + obliterator: "npm:^2.0.0" + checksum: 10c0/a73a2718f88cd12c3b108ecc530619a1b0f2783d479c7f98e7367375102cc3a28811bab384e17eb731553dc8d7ee9d60283d694a9f676af5f306104e75027d4f + languageName: node + linkType: hard + +"mocha@npm:^10.0.0, mocha@npm:^10.2.0": + version: 10.8.2 + resolution: "mocha@npm:10.8.2" + dependencies: + ansi-colors: "npm:^4.1.3" + browser-stdout: "npm:^1.3.1" + chokidar: "npm:^3.5.3" + debug: "npm:^4.3.5" + diff: "npm:^5.2.0" + escape-string-regexp: "npm:^4.0.0" + find-up: "npm:^5.0.0" + glob: "npm:^8.1.0" + he: "npm:^1.2.0" + js-yaml: "npm:^4.1.0" + log-symbols: "npm:^4.1.0" + minimatch: "npm:^5.1.6" + ms: "npm:^2.1.3" + serialize-javascript: "npm:^6.0.2" + strip-json-comments: "npm:^3.1.1" + supports-color: "npm:^8.1.1" + workerpool: "npm:^6.5.1" + yargs: "npm:^16.2.0" + yargs-parser: "npm:^20.2.9" + yargs-unparser: "npm:^2.0.0" + bin: + _mocha: bin/_mocha + mocha: bin/mocha.js + checksum: 10c0/1f786290a32a1c234f66afe2bfcc68aa50fe9c7356506bd39cca267efb0b4714a63a0cb333815578d63785ba2fba058bf576c2512db73997c0cae0d659a88beb + languageName: node + linkType: hard + +"mongodb-connection-string-url@npm:^7.0.0": + version: 7.0.0 + resolution: "mongodb-connection-string-url@npm:7.0.0" + dependencies: + "@types/whatwg-url": "npm:^13.0.0" + whatwg-url: "npm:^14.1.0" + checksum: 10c0/33fe304a0f8e59bf541b2ddef073ddb2ae66d6cb3175c6297c8f844004b1608573e2e61892aa8486f8273634c9cb8a90202d21c289aa1b1f8b8e5cd92711be09 + languageName: node + linkType: hard + +"mongodb@npm:~7.0": + version: 7.0.0 + resolution: "mongodb@npm:7.0.0" + dependencies: + "@mongodb-js/saslprep": "npm:^1.3.0" + bson: "npm:^7.0.0" + mongodb-connection-string-url: "npm:^7.0.0" + peerDependencies: + "@aws-sdk/credential-providers": ^3.806.0 + "@mongodb-js/zstd": ^7.0.0 + gcp-metadata: ^7.0.1 + kerberos: ^7.0.0 + mongodb-client-encryption: ">=7.0.0 <7.1.0" + snappy: ^7.3.2 + socks: ^2.8.6 + peerDependenciesMeta: + "@aws-sdk/credential-providers": + optional: true + "@mongodb-js/zstd": + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + checksum: 10c0/425258188fd6d0d73c58ce2f16177d53d4280804b52de0e6dfd4ce0bec2c2965625c1765111f800ce8e6f2a28187657e8f42bf7dd6cc9675844e619b0dec18b9 + languageName: node + linkType: hard + +"mongoose@npm:^9.0.2": + version: 9.2.1 + resolution: "mongoose@npm:9.2.1" + dependencies: + kareem: "npm:3.2.0" + mongodb: "npm:~7.0" + mpath: "npm:0.9.0" + mquery: "npm:6.0.0" + ms: "npm:2.1.3" + sift: "npm:17.1.3" + checksum: 10c0/91c72b8a7ad08bda799026bd0141910b83da4fcce536ad5c992ba45732236f1596cf0c8dc064c2da93a4d491578e693b9d49b0d751eb8a8f01255db1a5df7247 + languageName: node + linkType: hard + +"mpath@npm:0.9.0": + version: 0.9.0 + resolution: "mpath@npm:0.9.0" + checksum: 10c0/ac1a77ebbd44567f122fb3026c9647836215d5bb75b54064d1f3d998125644fe7a775b89441b94d4d60f43ad9638a12d830a9e29f36116e93b8cdfd111816e8f + languageName: node + linkType: hard + +"mquery@npm:6.0.0": + version: 6.0.0 + resolution: "mquery@npm:6.0.0" + checksum: 10c0/5b566ad66d5de1d9213827e21ef87905c7e67ac07780a7f09ad3adf76e7537d5810138d3270633d06430e3ee7886205fbc174f3389e730e23ee8530993354b6b + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d + languageName: node + linkType: hard + +"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"msgpackr-extract@npm:^3.0.2": + version: 3.0.3 + resolution: "msgpackr-extract@npm:3.0.3" + dependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-darwin-x64": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm64": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-x64": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-win32-x64": "npm:3.0.3" + node-gyp: "npm:latest" + node-gyp-build-optional-packages: "npm:5.2.2" + dependenciesMeta: + "@msgpackr-extract/msgpackr-extract-darwin-arm64": + optional: true + "@msgpackr-extract/msgpackr-extract-darwin-x64": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-arm": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-arm64": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-x64": + optional: true + "@msgpackr-extract/msgpackr-extract-win32-x64": + optional: true + bin: + download-msgpackr-prebuilds: bin/download-prebuilds.js + checksum: 10c0/e504fd8bf86a29d7527c83776530ee6dc92dcb0273bb3679fd4a85173efead7f0ee32fb82c8410a13c33ef32828c45f81118ffc0fbed5d6842e72299894623b4 + languageName: node + linkType: hard + +"msgpackr@npm:1.11.5": + version: 1.11.5 + resolution: "msgpackr@npm:1.11.5" + dependencies: + msgpackr-extract: "npm:^3.0.2" + dependenciesMeta: + msgpackr-extract: + optional: true + checksum: 10c0/f35ffd218661e8afc52490cde3dbf2656304e7940563c5313aa2f45e31ac5bdce3b58f27e55b785c700085ee76f26fc7afbae25ae5abe05068a8f000fd0ac6cd + languageName: node + linkType: hard + +"multer@npm:2.0.2": + version: 2.0.2 + resolution: "multer@npm:2.0.2" + dependencies: + append-field: "npm:^1.0.0" + busboy: "npm:^1.6.0" + concat-stream: "npm:^2.0.0" + mkdirp: "npm:^0.5.6" + object-assign: "npm:^4.1.1" + type-is: "npm:^1.6.18" + xtend: "npm:^4.0.2" + checksum: 10c0/d3b99dd0512169bbabf15440e1bbb3ecdc000b761e5a3e4aaca40b5e5e213c6cdcc9b7dffebaa601b7691a84f6876aa87e0173ffcc47139253793cf5657819eb + languageName: node + linkType: hard + +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + languageName: node + linkType: hard + +"mute-stream@npm:1.0.0": + version: 1.0.0 + resolution: "mute-stream@npm:1.0.0" + checksum: 10c0/dce2a9ccda171ec979a3b4f869a102b1343dee35e920146776780de182f16eae459644d187e38d59a3d37adf85685e1c17c38cf7bfda7e39a9880f7a1d10a74c + languageName: node + linkType: hard + +"napi-postinstall@npm:^0.3.0": + version: 0.3.4 + resolution: "napi-postinstall@npm:0.3.4" + bin: + napi-postinstall: lib/cli.js + checksum: 10c0/b33d64150828bdade3a5d07368a8b30da22ee393f8dd8432f1b9e5486867be21c84ec443dd875dd3ef3c7401a079a7ab7e2aa9d3538a889abbcd96495d5104fe + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + languageName: node + linkType: hard + +"node-abort-controller@npm:3.1.1, node-abort-controller@npm:^3.0.1": + version: 3.1.1 + resolution: "node-abort-controller@npm:3.1.1" + checksum: 10c0/f7ad0e7a8e33809d4f3a0d1d65036a711c39e9d23e0319d80ebe076b9a3b4432b4d6b86a7fab65521de3f6872ffed36fc35d1327487c48eb88c517803403eda3 + languageName: node + linkType: hard + +"node-addon-api@npm:^2.0.0": + version: 2.0.2 + resolution: "node-addon-api@npm:2.0.2" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/ade6c097ba829fa4aee1ca340117bb7f8f29fdae7b777e343a9d5cbd548481d1f0894b7b907d23ce615c70d932e8f96154caed95c3fa935cfe8cf87546510f64 + languageName: node + linkType: hard + +"node-addon-api@npm:^5.0.0": + version: 5.1.0 + resolution: "node-addon-api@npm:5.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/0eb269786124ba6fad9df8007a149e03c199b3e5a3038125dfb3e747c2d5113d406a4e33f4de1ea600aa2339be1f137d55eba1a73ee34e5fff06c52a5c296d1d + languageName: node + linkType: hard + +"node-emoji@npm:1.11.0, node-emoji@npm:^1.10.0": + version: 1.11.0 + resolution: "node-emoji@npm:1.11.0" + dependencies: + lodash: "npm:^4.17.21" + checksum: 10c0/5dac6502dbef087092d041fcc2686d8be61168593b3a9baf964d62652f55a3a9c2277f171b81cccb851ccef33f2d070f45e633fab1fda3264f8e1ae9041c673f + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.1": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-gyp-build-optional-packages@npm:5.2.2": + version: 5.2.2 + resolution: "node-gyp-build-optional-packages@npm:5.2.2" + dependencies: + detect-libc: "npm:^2.0.1" + bin: + node-gyp-build-optional-packages: bin.js + node-gyp-build-optional-packages-optional: optional.js + node-gyp-build-optional-packages-test: build-test.js + checksum: 10c0/c81128c6f91873381be178c5eddcbdf66a148a6a89a427ce2bcd457593ce69baf2a8662b6d22cac092d24aa9c43c230dec4e69b3a0da604503f4777cd77e282b + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.2.0": + version: 4.8.4 + resolution: "node-gyp-build@npm:4.8.4" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 12.2.0 + resolution: "node-gyp@npm:12.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^15.0.0" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.5.4" + tinyglobby: "npm:^0.2.12" + which: "npm:^6.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/3ed046746a5a7d90950cd8b0547332b06598443f31fe213ef4332a7174c7b7d259e1704835feda79b87d3f02e59d7791842aac60642ede4396ab25fdf0f8f759 + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + +"node-releases@npm:^2.0.27": + version: 2.0.27 + resolution: "node-releases@npm:2.0.27" + checksum: 10c0/f1e6583b7833ea81880627748d28a3a7ff5703d5409328c216ae57befbced10ce2c991bea86434e8ec39003bd017f70481e2e5f8c1f7e0a7663241f81d6e00e2 + languageName: node + linkType: hard + +"nofilter@npm:^3.1.0": + version: 3.1.0 + resolution: "nofilter@npm:3.1.0" + checksum: 10c0/92459f3864a067b347032263f0b536223cbfc98153913b5dce350cb39c8470bc1813366e41993f22c33cc6400c0f392aa324a4b51e24c22040635c1cdb046499 + languageName: node + linkType: hard + +"nopt@npm:3.x": + version: 3.0.6 + resolution: "nopt@npm:3.0.6" + dependencies: + abbrev: "npm:1" + bin: + nopt: ./bin/nopt.js + checksum: 10c0/f4414223c392dd215910942268d9bdc101ab876400f2c0626b88b718254f5c730dbab5eda58519dc4ea05b681ed8f09c147570ed273ade7fc07757e2e4f12c3d + languageName: node + linkType: hard + +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" + dependencies: + abbrev: "npm:^4.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"number-to-bn@npm:1.7.0": + version: 1.7.0 + resolution: "number-to-bn@npm:1.7.0" + dependencies: + bn.js: "npm:4.11.6" + strip-hex-prefix: "npm:1.0.0" + checksum: 10c0/83d1540173c4fc60ef4e91e88ed17f2c38418c8e5e62f469d62404527efba48d9c40f364da5c5e6857234a6c1154ff32b3642d80f873ba6cb8d2dd05fb6bc303 + languageName: node + linkType: hard + +"object-assign@npm:^4, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.3": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 + languageName: node + linkType: hard + +"obliterator@npm:^2.0.0": + version: 2.0.5 + resolution: "obliterator@npm:2.0.5" + checksum: 10c0/36e67d88271c51aa6412a7d449d6c60ae6387176f94dbc557eea67456bf6ccedbcbcecdb1e56438aa4f4694f68f531b3bf2be87b019e2f69961b144bec124e70 + languageName: node + linkType: hard + +"omggif@npm:^1.0.10": + version: 1.0.10 + resolution: "omggif@npm:1.0.10" + checksum: 10c0/5ddb6959555bf16ac93ee8724a6f600b0e97e77855515af9df0f657c69ebe0eb7d769763fdc4765f888827e4e64ca71ebeaf7255c7f51058e4bba5cc7950fe8e + languageName: node + linkType: hard + +"on-finished@npm:2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: "npm:1.1.1" + checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 + languageName: node + linkType: hard + +"once@npm:1.x, once@npm:^1.3.0, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"optionator@npm:^0.8.1": + version: 0.8.3 + resolution: "optionator@npm:0.8.3" + dependencies: + deep-is: "npm:~0.1.3" + fast-levenshtein: "npm:~2.0.6" + levn: "npm:~0.3.0" + prelude-ls: "npm:~1.1.2" + type-check: "npm:~0.3.2" + word-wrap: "npm:~1.2.3" + checksum: 10c0/ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"ora@npm:5.4.1, ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"ordinal@npm:^1.0.3": + version: 1.0.3 + resolution: "ordinal@npm:1.0.3" + checksum: 10c0/faa276fc1b1660477fd5c8749323c9715ae4f482c21fb8e67e57d1eb57845ba1b902796ecdcf6405325a8c3b042360970f5dc3b7f8cc7d79e0b2a756ab09174d + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + languageName: node + linkType: hard + +"ox@npm:0.12.4": + version: 0.12.4 + resolution: "ox@npm:0.12.4" + dependencies: + "@adraffy/ens-normalize": "npm:^1.11.0" + "@noble/ciphers": "npm:^1.3.0" + "@noble/curves": "npm:1.9.1" + "@noble/hashes": "npm:^1.8.0" + "@scure/bip32": "npm:^1.7.0" + "@scure/bip39": "npm:^1.6.0" + abitype: "npm:^1.2.3" + eventemitter3: "npm:5.0.1" + peerDependencies: + typescript: ">=5.4.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/4b03aebe0ee02b9ba57faa765418acd9a58471f2feedd9f3c6db6fd9b9cf0b96a7c89795721977b110481ca2e525176ffd23f4bab8ac55deb7553205768d3068 + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"p-map@npm:^7.0.2": + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 10c0/a5030935d3cb2919d7e89454d1ce82141e6f9955413658b8c9403cfe379283770ed3048146b44cde168aa9e8c716505f196d5689db0ae3ce9a71521a2fef3abd + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"pako@npm:^1.0.11": + version: 1.0.11 + resolution: "pako@npm:1.0.11" + checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-bmfont-ascii@npm:^1.0.6": + version: 1.0.6 + resolution: "parse-bmfont-ascii@npm:1.0.6" + checksum: 10c0/f76c57be4678fbb05221e263b21671fa3dbe03d0bae7be133b7f102dbe666958811759b615bfcfc81d76a34efeae1fb76c3305a5a4f28e14eb3baa9ec72c8c4f + languageName: node + linkType: hard + +"parse-bmfont-binary@npm:^1.0.6": + version: 1.0.6 + resolution: "parse-bmfont-binary@npm:1.0.6" + checksum: 10c0/2bcc4f041871ce9cec767105a9438704f114ef43c5827754c4dbcd821f792ec440f8120944d3a5396503e4387e68269ba68d933668a92a3322ad32a079911ea4 + languageName: node + linkType: hard + +"parse-bmfont-xml@npm:^1.1.6": + version: 1.1.6 + resolution: "parse-bmfont-xml@npm:1.1.6" + dependencies: + xml-parse-from-string: "npm:^1.0.0" + xml2js: "npm:^0.5.0" + checksum: 10c0/e18e816a2553d3d34795e5a60b584f64a327d4a92f83b48dcb01b9ec30fc75b5338488d9f9d25cd8b463665c13f59264464f39e73c0e8d8d3665ce7f4f128328 + languageName: node + linkType: hard + +"parse-cache-control@npm:^1.0.1": + version: 1.0.1 + resolution: "parse-cache-control@npm:1.0.1" + checksum: 10c0/330a0d9e3a22a7b0f6e8a973c0b9f51275642ee28544cd0d546420273946d555d20a5c7b49fca24d68d2e698bae0186f0f41f48d62133d3153c32454db05f2df + languageName: node + linkType: hard + +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 + languageName: node + linkType: hard + +"passport-jwt@npm:^4.0.1": + version: 4.0.1 + resolution: "passport-jwt@npm:4.0.1" + dependencies: + jsonwebtoken: "npm:^9.0.0" + passport-strategy: "npm:^1.0.0" + checksum: 10c0/d7e2b472d399f596a1db31310f8e63d10777ab7468b9a378c964156e5f0a772598b007417356ead578cfdaf60dc2bba39a55f0033ca865186fdb2a2b198e2e7e + languageName: node + linkType: hard + +"passport-strategy@npm:1.x.x, passport-strategy@npm:^1.0.0": + version: 1.0.0 + resolution: "passport-strategy@npm:1.0.0" + checksum: 10c0/cf4cd32e1bf2538a239651581292fbb91ccc83973cde47089f00d2014c24bed63d3e65af21da8ddef649a8896e089eb9c3ac9ca639f36c797654ae9ee4ed65e1 + languageName: node + linkType: hard + +"passport@npm:^0.7.0": + version: 0.7.0 + resolution: "passport@npm:0.7.0" + dependencies: + passport-strategy: "npm:1.x.x" + pause: "npm:0.0.1" + utils-merge: "npm:^1.0.1" + checksum: 10c0/08c940b86e4adbfe43e753f8097300a5a9d1ce9a3aa002d7b12d27770943a1a87202c54597c0f04dbfd4117d67de76303433577512fc19c7e364fec37b0d3fc5 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/b35ad37cf6557a87fd057121ce2be7695380c9138d93e87ae928609da259ea0a170fac6f3ef1eb3ece8a068e8b7f2f3adf5bb2374cf4d4a57fe484954fcc9482 + languageName: node + linkType: hard + +"path-to-regexp@npm:0.1.12": + version: 0.1.12 + resolution: "path-to-regexp@npm:0.1.12" + checksum: 10c0/1c6ff10ca169b773f3bba943bbc6a07182e332464704572962d277b900aeee81ac6aa5d060ff9e01149636c30b1f63af6e69dd7786ba6e0ddb39d4dee1f0645b + languageName: node + linkType: hard + +"path-to-regexp@npm:3.3.0": + version: 3.3.0 + resolution: "path-to-regexp@npm:3.3.0" + checksum: 10c0/ffa0ebe7088d38d435a8d08b0fe6e8c93ceb2a81a65d4dd1d9a538f52e09d5e3474ed5f553cb3b180d894b0caa10698a68737ab599fd1e56b4663d1a64c9f77b + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pathval@npm:^1.1.1": + version: 1.1.1 + resolution: "pathval@npm:1.1.1" + checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc + languageName: node + linkType: hard + +"pause@npm:0.0.1": + version: 0.0.1 + resolution: "pause@npm:0.0.1" + checksum: 10c0/f362655dfa7f44b946302c5a033148852ed5d05f744bd848b1c7eae6a543f743e79c7751ee896ba519fd802affdf239a358bb2ea5ca1b1c1e4e916279f83ab75 + languageName: node + linkType: hard + +"pbkdf2@npm:^3.0.17": + version: 3.1.5 + resolution: "pbkdf2@npm:3.1.5" + dependencies: + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + ripemd160: "npm:^2.0.3" + safe-buffer: "npm:^5.2.1" + sha.js: "npm:^2.4.12" + to-buffer: "npm:^1.2.1" + checksum: 10c0/ea42e8695e49417eefabb19a08ab19a602cc6cc72d2df3f109c39309600230dee3083a6f678d5d42fe035d6ae780038b80ace0e68f9792ee2839bf081fe386f3 + languageName: node + linkType: hard + +"pdf-parse@npm:^2.4.5": + version: 2.4.5 + resolution: "pdf-parse@npm:2.4.5" + dependencies: + "@napi-rs/canvas": "npm:0.1.80" + pdfjs-dist: "npm:5.4.296" + bin: + pdf-parse: bin/cli.mjs + checksum: 10c0/0bf737c8405994a232e5ce11c6bd80016942cad291debcfe40afa9365e864de9f3f704ef2931e66a84512e28e8c3a9cff6537cc84d2981a39a6f0447a4389036 + languageName: node + linkType: hard + +"pdfjs-dist@npm:5.4.296": + version: 5.4.296 + resolution: "pdfjs-dist@npm:5.4.296" + dependencies: + "@napi-rs/canvas": "npm:^0.1.80" + dependenciesMeta: + "@napi-rs/canvas": + optional: true + checksum: 10c0/a9e438f12771963f7c29934b4d5e58d508fa43954e4e4cbf951b040c6c89891d048e3d9d3799ed9ec6ceade677628a25f88062b300c5425777ce0b522e457532 + languageName: node + linkType: hard + +"peek-readable@npm:^4.1.0": + version: 4.1.0 + resolution: "peek-readable@npm:4.1.0" + checksum: 10c0/f9b81ce3eed185cc9ebbf7dff0b6e130dd6da7b05f1802bbf726a78e4d84990b0a65f8e701959c50eb1124cc2ad352205147954bf39793faba29bb00ce742a44 + languageName: node + linkType: hard + +"picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:4.0.1": + version: 4.0.1 + resolution: "picomatch@npm:4.0.1" + checksum: 10c0/a036a085b18b376493e8ccef155bb03c65a2be7203582b717bb0498d1446e6a80f7f86a36e07877590abd0431f26c64c6154058c31f4f46105d3686a34fa3cf6 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 + languageName: node + linkType: hard + +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + languageName: node + linkType: hard + +"pirates@npm:^4.0.7": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a + languageName: node + linkType: hard + +"pixelmatch@npm:^5.3.0": + version: 5.3.0 + resolution: "pixelmatch@npm:5.3.0" + dependencies: + pngjs: "npm:^6.0.0" + bin: + pixelmatch: bin/pixelmatch + checksum: 10c0/30850661db29b57cefbe6cf36e930b7517aea4e0ed129e85fcc8ec04a7e6e7648a822a972f8e01d2d3db268ca3c735555caf6b8099a164d8b64d105986d682d2 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"pluralize@npm:8.0.0": + version: 8.0.0 + resolution: "pluralize@npm:8.0.0" + checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 + languageName: node + linkType: hard + +"pngjs@npm:^6.0.0": + version: 6.0.0 + resolution: "pngjs@npm:6.0.0" + checksum: 10c0/ac23ea329b1881d1a10575aff58116dc27b894ec3f5b84ba15c7f527d21e609fbce7ba16d48f8ccb86c7ce45ceed622472765476ab2875949d4bec55e153f87a + languageName: node + linkType: hard + +"pngjs@npm:^7.0.0": + version: 7.0.0 + resolution: "pngjs@npm:7.0.0" + checksum: 10c0/0d4c7a0fd476a9c33df7d0a2a73e1d56537628a668841f6995c2bca070cf30819f9254a64363266bc14ef2fee47659dd3b4f2b18eec7ab65143015139f497b38 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prelude-ls@npm:~1.1.2": + version: 1.1.2 + resolution: "prelude-ls@npm:1.1.2" + checksum: 10c0/7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.1 + resolution: "prettier-linter-helpers@npm:1.0.1" + dependencies: + fast-diff: "npm:^1.1.2" + checksum: 10c0/91cea965681bc5f62c9d26bd3ca6358b81557261d4802e96ec1cf0acbd99d4b61632d53320cd2c3ec7d7f7805a81345644108a41ef46ddc9688e783a9ac792d1 + languageName: node + linkType: hard + +"prettier@npm:^2.3.1": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a + languageName: node + linkType: hard + +"prettier@npm:^3.0.0": + version: 3.7.4 + resolution: "prettier@npm:3.7.4" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/9675d2cd08eacb1faf1d1a2dbfe24bfab6a912b059fc9defdb380a408893d88213e794a40a2700bd29b140eb3172e0b07c852853f6e22f16f3374659a1a13389 + languageName: node + linkType: hard + +"pretty-format@npm:30.2.0, pretty-format@npm:^30.0.0": + version: 30.2.0 + resolution: "pretty-format@npm:30.2.0" + dependencies: + "@jest/schemas": "npm:30.0.5" + ansi-styles: "npm:^5.2.0" + react-is: "npm:^18.3.1" + checksum: 10c0/8fdacfd281aa98124e5df80b2c17223fdcb84433876422b54863a6849381b3059eb42b9806d92d2853826bcb966bcb98d499bea5b1e912d869a3c3107fd38d35 + languageName: node + linkType: hard + +"proc-log@npm:^6.0.0": + version: 6.1.0 + resolution: "proc-log@npm:6.1.0" + checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"promise@npm:^8.0.0": + version: 8.3.0 + resolution: "promise@npm:8.3.0" + dependencies: + asap: "npm:~2.0.6" + checksum: 10c0/6fccae27a10bcce7442daf090279968086edd2e3f6cebe054b71816403e2526553edf510d13088a4d0f14d7dfa9b9dfb188cab72d6f942e186a4353b6a29c8bf + languageName: node + linkType: hard + +"proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: "npm:0.2.0" + ipaddr.js: "npm:1.9.1" + checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 + languageName: node + linkType: hard + +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.3.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"pure-rand@npm:^7.0.0": + version: 7.0.1 + resolution: "pure-rand@npm:7.0.1" + checksum: 10c0/9cade41030f5ec95f5d55a11a71404cd6f46b69becaad892097cd7f58e2c6248cd0a933349ca7d21336ab629f1da42ffe899699b671bc4651600eaf6e57f837e + languageName: node + linkType: hard + +"qs@npm:6.13.0": + version: 6.13.0 + resolution: "qs@npm:6.13.0" + dependencies: + side-channel: "npm:^1.0.6" + checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 + languageName: node + linkType: hard + +"qs@npm:^6.11.2, qs@npm:^6.4.0": + version: 6.15.0 + resolution: "qs@npm:6.15.0" + dependencies: + side-channel: "npm:^1.1.0" + checksum: 10c0/ff341078a78a991d8a48b4524d52949211447b4b1ad907f489cac0770cbc346a28e47304455c0320e5fb000f8762d64b03331e3b71865f663bf351bcba8cdb4b + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + +"range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 + languageName: node + linkType: hard + +"raw-body@npm:2.5.2": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 + languageName: node + linkType: hard + +"raw-body@npm:^2.4.1": + version: 2.5.3 + resolution: "raw-body@npm:2.5.3" + dependencies: + bytes: "npm:~3.1.2" + http-errors: "npm:~2.0.1" + iconv-lite: "npm:~0.4.24" + unpipe: "npm:~1.0.0" + checksum: 10c0/449844344fc90547fb994383a494b83300e4f22199f146a79f68d78a199a8f2a923ea9fd29c3be979bfd50291a3884733619ffc15ba02a32e703b612f8d3f74a + languageName: node + linkType: hard + +"react-is@npm:^18.3.1": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.8": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readable-stream@npm:^3.0.2, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readable-stream@npm:^4.7.0": + version: 4.7.0 + resolution: "readable-stream@npm:4.7.0" + dependencies: + abort-controller: "npm:^3.0.0" + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + process: "npm:^0.11.10" + string_decoder: "npm:^1.3.0" + checksum: 10c0/fd86d068da21cfdb10f7a4479f2e47d9c0a9b0c862fc0c840a7e5360201580a55ac399c764b12a4f6fa291f8cee74d9c4b7562e0d53b3c4b2769f2c98155d957 + languageName: node + linkType: hard + +"readable-web-to-node-stream@npm:^3.0.0": + version: 3.0.4 + resolution: "readable-web-to-node-stream@npm:3.0.4" + dependencies: + readable-stream: "npm:^4.7.0" + checksum: 10c0/2dc417d5d0b0c0191fcf57f87df3b2853db21d1da5554ec32b1e1c5a515e5a1243fc077a23f74046d711c2d736628f64b31054a8379b95bb016212430b5110c5 + languageName: node + linkType: hard + +"readdirp@npm:^4.0.1": + version: 4.1.2 + resolution: "readdirp@npm:4.1.2" + checksum: 10c0/60a14f7619dec48c9c850255cd523e2717001b0e179dc7037cfa0895da7b9e9ab07532d324bfb118d73a710887d1e35f79c495fa91582784493e085d18c72c62 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"rechoir@npm:^0.6.2": + version: 0.6.2 + resolution: "rechoir@npm:0.6.2" + dependencies: + resolve: "npm:^1.1.6" + checksum: 10c0/22c4bb32f4934a9468468b608417194f7e3ceba9a508512125b16082c64f161915a28467562368eeb15dc16058eb5b7c13a20b9eb29ff9927d1ebb3b5aa83e84 + languageName: node + linkType: hard + +"recursive-readdir@npm:^2.2.2": + version: 2.2.3 + resolution: "recursive-readdir@npm:2.2.3" + dependencies: + minimatch: "npm:^3.0.5" + checksum: 10c0/d0238f137b03af9cd645e1e0b40ae78b6cda13846e3ca57f626fcb58a66c79ae018a10e926b13b3a460f1285acc946a4e512ea8daa2e35df4b76a105709930d1 + languageName: node + linkType: hard + +"redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": + version: 1.2.0 + resolution: "redis-errors@npm:1.2.0" + checksum: 10c0/5b316736e9f532d91a35bff631335137a4f974927bb2fb42bf8c2f18879173a211787db8ac4c3fde8f75ed6233eb0888e55d52510b5620e30d69d7d719c8b8a7 + languageName: node + linkType: hard + +"redis-parser@npm:^3.0.0": + version: 3.0.0 + resolution: "redis-parser@npm:3.0.0" + dependencies: + redis-errors: "npm:^1.0.0" + checksum: 10c0/ee16ac4c7b2a60b1f42a2cdaee22b005bd4453eb2d0588b8a4939718997ae269da717434da5d570fe0b05030466eeb3f902a58cf2e8e1ca058bf6c9c596f632f + languageName: node + linkType: hard + +"reduce-flatten@npm:^2.0.0": + version: 2.0.0 + resolution: "reduce-flatten@npm:2.0.0" + checksum: 10c0/9275064535bc070a787824c835a4f18394942f8a78f08e69fb500920124ce1c46a287c8d9e565a7ffad8104875a6feda14efa8e951e8e4585370b8ff007b0abd + languageName: node + linkType: hard + +"reflect-metadata@npm:^0.1.13": + version: 0.1.14 + resolution: "reflect-metadata@npm:0.1.14" + checksum: 10c0/3a6190c7f6cb224f26a012d11f9e329360c01c1945e2cbefea23976a8bacf9db6b794aeb5bf18adcb673c448a234fbc06fc41853c00a6c206b30f0777ecf019e + languageName: node + linkType: hard + +"repeat-string@npm:^1.6.1": + version: 1.6.1 + resolution: "repeat-string@npm:1.6.1" + checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d + languageName: node + linkType: hard + +"req-cwd@npm:^2.0.0": + version: 2.0.0 + resolution: "req-cwd@npm:2.0.0" + dependencies: + req-from: "npm:^2.0.0" + checksum: 10c0/9cefc80353594b07d1a31d7ee4e4b5c7252f054f0fda7d5caf038c1cb5aa4b322acb422de7e18533734e8557f5769c2318f3ee9256e2e4f4e359b9b776c7ed1a + languageName: node + linkType: hard + +"req-from@npm:^2.0.0": + version: 2.0.0 + resolution: "req-from@npm:2.0.0" + dependencies: + resolve-from: "npm:^3.0.0" + checksum: 10c0/84aa6b4f7291675d9443ac156139841c7c1ae7eccf080f3b344972d6470170b0c32682656c560763b330d00e133196bcfdb1fcb4c5031f59ecbe80dea4dd1c82 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + +"resolve-from@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-from@npm:3.0.0" + checksum: 10c0/24affcf8e81f4c62f0dcabc774afe0e19c1f38e34e43daac0ddb409d79435fc3037f612b0cc129178b8c220442c3babd673e88e870d27215c99454566e770ebc + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve@npm:1.1.x": + version: 1.1.7 + resolution: "resolve@npm:1.1.7" + checksum: 10c0/f66dcad51854fca283fa68e9c11445c2117d7963b9ced6c43171784987df3bed6fb16c4af2bf6f07c02ace94a4f4ebe158d13780b6e14d60944478c860208245 + languageName: node + linkType: hard + +"resolve@npm:1.17.0": + version: 1.17.0 + resolution: "resolve@npm:1.17.0" + dependencies: + path-parse: "npm:^1.0.6" + checksum: 10c0/4e6c76cc1a7b08bff637b092ce035d7901465067915605bc5a23ac0c10fe42ec205fc209d5d5f7a5f27f37ce71d687def7f656bbb003631cd46a8374f55ec73d + languageName: node + linkType: hard + +"resolve@npm:^1.1.6": + version: 1.22.11 + resolution: "resolve@npm:1.22.11" + dependencies: + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A1.1.x#optional!builtin": + version: 1.1.7 + resolution: "resolve@patch:resolve@npm%3A1.1.7#optional!builtin::version=1.1.7&hash=3bafbf" + checksum: 10c0/f4f1471423d600a10944785222fa7250237ed8c98aa6b1e1f4dc0bb3dbfbcafcaac69a2ed23cd1f6f485ed23e7c939894ac1978284e4163754fade8a05358823 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A1.17.0#optional!builtin": + version: 1.17.0 + resolution: "resolve@patch:resolve@npm%3A1.17.0#optional!builtin::version=1.17.0&hash=c3c19d" + dependencies: + path-parse: "npm:^1.0.6" + checksum: 10c0/e072e52be3c3dbfd086761115db4a5136753e7aefc0e665e66e7307ddcd9d6b740274516055c74aee44921625e95993f03570450aa310b8d73b1c9daa056c4cd + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin": + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + +"rfdc@npm:^1.3.1": + version: 1.4.1 + resolution: "rfdc@npm:1.4.1" + checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1, ripemd160@npm:^2.0.3": + version: 2.0.3 + resolution: "ripemd160@npm:2.0.3" + dependencies: + hash-base: "npm:^3.1.2" + inherits: "npm:^2.0.4" + checksum: 10c0/3f472fb453241cfe692a77349accafca38dbcdc9d96d5848c088b2932ba41eb968630ecff7b175d291c7487a4945aee5a81e30c064d1f94e36070f7e0c37ed6c + languageName: node + linkType: hard + +"rlp@npm:^2.2.4": + version: 2.2.7 + resolution: "rlp@npm:2.2.7" + dependencies: + bn.js: "npm:^5.2.0" + bin: + rlp: bin/rlp + checksum: 10c0/166c449f4bc794d47f8e337bf0ffbcfdb26c33109030aac4b6e5a33a91fa85783f2290addeb7b3c89d6d9b90c8276e719494d193129bed0a60a2d4a6fd658277 + languageName: node + linkType: hard + +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + +"run-async@npm:^3.0.0": + version: 3.0.0 + resolution: "run-async@npm:3.0.0" + checksum: 10c0/b18b562ae37c3020083dcaae29642e4cc360c824fbfb6b7d50d809a9d5227bb986152d09310255842c8dce40526e82ca768f02f00806c91ba92a8dfa6159cb85 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"rxjs@npm:7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + +"rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": + version: 7.8.2 + resolution: "rxjs@npm:7.8.2" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/1fcd33d2066ada98ba8f21fcbbcaee9f0b271de1d38dc7f4e256bfbc6ffcdde68c8bfb69093de7eeb46f24b1fb820620bf0223706cff26b4ab99a7ff7b2e2c45 + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"sax@npm:>=0.6.0": + version: 1.4.3 + resolution: "sax@npm:1.4.3" + checksum: 10c0/45bba07561d93f184a8686e1a543418ced8c844b994fbe45cc49d5cd2fc8ac7ec949dae38565e35e388ad0cca2b75997a29b6857c927bf6553da3f80ed0e4e62 + languageName: node + linkType: hard + +"sc-istanbul@npm:^0.4.5": + version: 0.4.6 + resolution: "sc-istanbul@npm:0.4.6" + dependencies: + abbrev: "npm:1.0.x" + async: "npm:1.x" + escodegen: "npm:1.8.x" + esprima: "npm:2.7.x" + glob: "npm:^5.0.15" + handlebars: "npm:^4.0.1" + js-yaml: "npm:3.x" + mkdirp: "npm:0.5.x" + nopt: "npm:3.x" + once: "npm:1.x" + resolve: "npm:1.1.x" + supports-color: "npm:^3.1.0" + which: "npm:^1.1.1" + wordwrap: "npm:^1.0.0" + bin: + istanbul: lib/cli.js + checksum: 10c0/3eba8f6b7ba423fb03fdd67e72b0a71c71aa1dbd117692f3225003320dd45adf03cd32dd1739bd347aa58c690ca8f719fd8ae70cefe0fc06433fac4725668942 + languageName: node + linkType: hard + +"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": "npm:^7.0.8" + ajv: "npm:^6.12.5" + ajv-keywords: "npm:^3.5.2" + checksum: 10c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 + languageName: node + linkType: hard + +"schema-utils@npm:^4.3.0, schema-utils@npm:^4.3.3": + version: 4.3.3 + resolution: "schema-utils@npm:4.3.3" + dependencies: + "@types/json-schema": "npm:^7.0.9" + ajv: "npm:^8.9.0" + ajv-formats: "npm:^2.1.1" + ajv-keywords: "npm:^5.1.0" + checksum: 10c0/1c8d2c480a026d7c02ab2ecbe5919133a096d6a721a3f201fa50663e4f30f6d6ba020dfddd93cb828b66b922e76b342e103edd19a62c95c8f60e9079cc403202 + languageName: node + linkType: hard + +"scrypt-js@npm:3.0.1, scrypt-js@npm:^3.0.0": + version: 3.0.1 + resolution: "scrypt-js@npm:3.0.1" + checksum: 10c0/e2941e1c8b5c84c7f3732b0153fee624f5329fc4e772a06270ee337d4d2df4174b8abb5e6ad53804a29f53890ecbc78f3775a319323568c0313040c0e55f5b10 + languageName: node + linkType: hard + +"secp256k1@npm:^4.0.1": + version: 4.0.4 + resolution: "secp256k1@npm:4.0.4" + dependencies: + elliptic: "npm:^6.5.7" + node-addon-api: "npm:^5.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + checksum: 10c0/cf7a74343566d4774c64332c07fc2caf983c80507f63be5c653ff2205242143d6320c50ee4d793e2b714a56540a79e65a8f0056e343b25b0cdfed878bc473fd8 + languageName: node + linkType: hard + +"semver@npm:7.7.4": + version: 7.7.4 + resolution: "semver@npm:7.7.4" + bin: + semver: bin/semver.js + checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2 + languageName: node + linkType: hard + +"semver@npm:^5.5.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.7.2, semver@npm:^7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" + bin: + semver: bin/semver.js + checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e + languageName: node + linkType: hard + +"send@npm:0.19.0": + version: 0.19.0 + resolution: "send@npm:0.19.0" + dependencies: + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:2.0.1" + checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3 + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.2": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 + languageName: node + linkType: hard + +"serve-static@npm:1.16.2": + version: 1.16.2 + resolution: "serve-static@npm:1.16.2" + dependencies: + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + parseurl: "npm:~1.3.3" + send: "npm:0.19.0" + checksum: 10c0/528fff6f5e12d0c5a391229ad893910709bc51b5705962b09404a1d813857578149b8815f35d3ee5752f44cd378d0f31669d4b1d7e2d11f41e08283d5134bd1f + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.2": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"setimmediate@npm:^1.0.5": + version: 1.0.5 + resolution: "setimmediate@npm:1.0.5" + checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc + languageName: node + linkType: hard + +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.12, sha.js@npm:^2.4.8": + version: 2.4.12 + resolution: "sha.js@npm:2.4.12" + dependencies: + inherits: "npm:^2.0.4" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.0" + bin: + sha.js: bin.js + checksum: 10c0/9d36bdd76202c8116abbe152a00055ccd8a0099cb28fc17c01fa7bb2c8cffb9ca60e2ab0fe5f274ed6c45dc2633d8c39cf7ab050306c231904512ba9da4d8ab1 + languageName: node + linkType: hard + +"sha1@npm:^1.1.1": + version: 1.1.1 + resolution: "sha1@npm:1.1.1" + dependencies: + charenc: "npm:>= 0.0.1" + crypt: "npm:>= 0.0.1" + checksum: 10c0/1bb36c89c112c741c265cca66712f883ae01d5c55b71aec80635fe2ad5d0c976a1a8a994dda774ae9f93b2da99fd111238758a8bf985adc400bd86f0e4452865 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shelljs@npm:^0.8.3": + version: 0.8.5 + resolution: "shelljs@npm:0.8.5" + dependencies: + glob: "npm:^7.0.0" + interpret: "npm:^1.0.0" + rechoir: "npm:^0.6.2" + bin: + shjs: bin/shjs + checksum: 10c0/feb25289a12e4bcd04c40ddfab51aff98a3729f5c2602d5b1a1b95f6819ec7804ac8147ebd8d9a85dfab69d501bcf92d7acef03247320f51c1552cec8d8e2382 + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 + languageName: node + linkType: hard + +"sift@npm:17.1.3": + version: 17.1.3 + resolution: "sift@npm:17.1.3" + checksum: 10c0/bb05d1d65cc9b549b402c1366ba1fcf685311808b6d5c2f4fa2f477d7b524218bbf6c99587562d5613d407820a6b5a7cad809f89c3f75c513ff5d8c0e0a0cead + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"simple-xml-to-json@npm:^1.2.2": + version: 1.2.3 + resolution: "simple-xml-to-json@npm:1.2.3" + checksum: 10c0/e1f48f93442e651c0f917280544791a71ff13bfb0a70ab537831bc74358022b372488a58f8db3cd0cbdc937b0bc0641ac61f64753f025978942bdac80f60edba + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.7 + resolution: "socks@npm:2.8.7" + dependencies: + ip-address: "npm:^10.0.1" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 + languageName: node + linkType: hard + +"solc@npm:0.8.26": + version: 0.8.26 + resolution: "solc@npm:0.8.26" + dependencies: + command-exists: "npm:^1.2.8" + commander: "npm:^8.1.0" + follow-redirects: "npm:^1.12.1" + js-sha3: "npm:0.8.0" + memorystream: "npm:^0.3.1" + semver: "npm:^5.5.0" + tmp: "npm:0.0.33" + bin: + solcjs: solc.js + checksum: 10c0/1eea35da99c228d0dc1d831c29f7819e7921b67824c889a5e5f2e471a2ef5856a15fabc0b5de067f5ba994fa36fb5a563361963646fe98dad58a0e4fa17c8b2d + languageName: node + linkType: hard + +"solidity-coverage@npm:^0.8.17": + version: 0.8.17 + resolution: "solidity-coverage@npm:0.8.17" + dependencies: + "@ethersproject/abi": "npm:^5.0.9" + "@solidity-parser/parser": "npm:^0.20.1" + chalk: "npm:^2.4.2" + death: "npm:^1.1.0" + difflib: "npm:^0.2.4" + fs-extra: "npm:^8.1.0" + ghost-testrpc: "npm:^0.0.2" + global-modules: "npm:^2.0.0" + globby: "npm:^10.0.1" + jsonschema: "npm:^1.2.4" + lodash: "npm:^4.17.21" + mocha: "npm:^10.2.0" + node-emoji: "npm:^1.10.0" + pify: "npm:^4.0.1" + recursive-readdir: "npm:^2.2.2" + sc-istanbul: "npm:^0.4.5" + semver: "npm:^7.3.4" + shelljs: "npm:^0.8.3" + web3-utils: "npm:^1.3.6" + peerDependencies: + hardhat: ^2.11.0 + bin: + solidity-coverage: plugins/bin.js + checksum: 10c0/4d49caad508a4b3ffef97f9d2f526f8993c8823d34068f8ae55eb6160872cb23e49c68ba2834186c44c6fdc6092a622f01e875bb611d7cf69ae698ed55dd41d0 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.13, source-map-support@npm:^0.5.16, source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + languageName: node + linkType: hard + +"source-map@npm:0.7.4": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:^0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"source-map@npm:^0.7.4": + version: 0.7.6 + resolution: "source-map@npm:0.7.6" + checksum: 10c0/59f6f05538539b274ba771d2e9e32f6c65451982510564438e048bc1352f019c6efcdc6dd07909b1968144941c14015c2c7d4369fb7c4d7d53ae769716dcc16c + languageName: node + linkType: hard + +"source-map@npm:~0.2.0": + version: 0.2.0 + resolution: "source-map@npm:0.2.0" + dependencies: + amdefine: "npm:>=0.0.4" + checksum: 10c0/24ac0df484721203e7c98faaa2a56cc73d7e8b8468a03459dd98e09b84421056c456dbfea1bf4f292142c3b88c160574f648cbc83e8fe772cf0b3342f0bba68d + languageName: node + linkType: hard + +"sparse-bitfield@npm:^3.0.3": + version: 3.0.3 + resolution: "sparse-bitfield@npm:3.0.3" + dependencies: + memory-pager: "npm:^1.0.2" + checksum: 10c0/248c6ff7b5e354735e1daac4059222a29c9d291dfcf265daf675d13515eeaac454cfcccd687c8d134f86698b39abd7ad4d7434f7272dd6f8e41a00f21aae4194 + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^13.0.0": + version: 13.0.1 + resolution: "ssri@npm:13.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/cf6408a18676c57ff2ed06b8a20dc64bb3e748e5c7e095332e6aecaa2b8422b1e94a739a8453bf65156a8a47afe23757ba4ab52d3ea3b62322dc40875763e17a + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.6": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stacktrace-parser@npm:^0.1.10": + version: 0.1.11 + resolution: "stacktrace-parser@npm:0.1.11" + dependencies: + type-fest: "npm:^0.7.1" + checksum: 10c0/4633d9afe8cd2f6c7fb2cebdee3cc8de7fd5f6f9736645fd08c0f66872a303061ce9cc0ccf46f4216dc94a7941b56e331012398dc0024dc25e46b5eb5d4ff018 + languageName: node + linkType: hard + +"standard-as-callback@npm:^2.1.0": + version: 2.1.0 + resolution: "standard-as-callback@npm:2.1.0" + checksum: 10c0/012677236e3d3fdc5689d29e64ea8a599331c4babe86956bf92fc5e127d53f85411c5536ee0079c52c43beb0026b5ce7aa1d834dd35dd026e82a15d1bcaead1f + languageName: node + linkType: hard + +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + languageName: node + linkType: hard + +"statuses@npm:~2.0.2": + version: 2.0.2 + resolution: "statuses@npm:2.0.2" + checksum: 10c0/a9947d98ad60d01f6b26727570f3bcceb6c8fa789da64fe6889908fe2e294d57503b14bf2b5af7605c2d36647259e856635cd4c49eab41667658ec9d0080ec3f + languageName: node + linkType: hard + +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + languageName: node + linkType: hard + +"string-format@npm:^2.0.0": + version: 2.0.0 + resolution: "string-format@npm:2.0.0" + checksum: 10c0/7bca13ba9f942f635c74d637da5e9e375435cbd428f35eeef28c3a30f81d4e63b95ff2c6cca907d897dd3951bbf52e03e3b945a0e9681358e33bd67222436538 + languageName: node + linkType: hard + +"string-length@npm:^4.0.2": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^2.1.1": + version: 2.1.1 + resolution: "string-width@npm:2.1.1" + dependencies: + is-fullwidth-code-point: "npm:^2.0.0" + strip-ansi: "npm:^4.0.0" + checksum: 10c0/e5f2b169fcf8a4257a399f95d069522f056e92ec97dbdcb9b0cdf14d688b7ca0b1b1439a1c7b9773cd79446cbafd582727279d6bfdd9f8edd306ea5e90e5b610 + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-ansi@npm:4.0.0" + dependencies: + ansi-regex: "npm:^3.0.0" + checksum: 10c0/d75d9681e0637ea316ddbd7d4d3be010b1895a17e885155e0ed6a39755ae0fd7ef46e14b22162e66a62db122d3a98ab7917794e255532ab461bb0a04feb03e7d + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/0d6d7a023de33368fd042aab0bf48f4f4077abdfd60e5393e73c7c411e85e1b3a83507c11af2e656188511475776215df9ca589b4da2295c9455cc399ce1858b + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-hex-prefix@npm:1.0.0": + version: 1.0.0 + resolution: "strip-hex-prefix@npm:1.0.0" + dependencies: + is-hex-prefixed: "npm:1.0.0" + checksum: 10c0/ec9a48c334c2ba4afff2e8efebb42c3ab5439f0e1ec2b8525e184eabef7fecade7aee444af802b1be55d2df6da5b58c55166c32f8461cc7559b401137ad51851 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"strtok3@npm:^10.2.0": + version: 10.3.4 + resolution: "strtok3@npm:10.3.4" + dependencies: + "@tokenizer/token": "npm:^0.3.0" + checksum: 10c0/277ab69e417f4545e364ffaf9d560c991f531045dbace32d77b5c822cccd76a608b782785a2c60595274288d4d32dced184a5c21dc20348791da697127dc69a8 + languageName: node + linkType: hard + +"strtok3@npm:^6.2.4": + version: 6.3.0 + resolution: "strtok3@npm:6.3.0" + dependencies: + "@tokenizer/token": "npm:^0.3.0" + peek-readable: "npm:^4.1.0" + checksum: 10c0/8f1483a2a6758404502f2fc431586fcf37d747b10b125596ab5ec92319c247dd1195f82ba0bc2eaa582db3d807b5cca4b67ff61411756fec6622d051f8e255c2 + languageName: node + linkType: hard + +"superagent@npm:^10.2.3": + version: 10.2.3 + resolution: "superagent@npm:10.2.3" + dependencies: + component-emitter: "npm:^1.3.1" + cookiejar: "npm:^2.1.4" + debug: "npm:^4.3.7" + fast-safe-stringify: "npm:^2.1.1" + form-data: "npm:^4.0.4" + formidable: "npm:^3.5.4" + methods: "npm:^1.1.2" + mime: "npm:2.6.0" + qs: "npm:^6.11.2" + checksum: 10c0/c45b40dcdac661f2dde197875912ffc97a28a7778705605640d89e02f1d98cf8f2a5230af81c254fd769acfe15bc61dcd85488283102c76999d94dea5a7376dd + languageName: node + linkType: hard + +"supertest@npm:^7.1.4": + version: 7.1.4 + resolution: "supertest@npm:7.1.4" + dependencies: + methods: "npm:^1.1.2" + superagent: "npm:^10.2.3" + checksum: 10c0/b4cd2af4ac19f620b5969ca174a72653132a92b031d0bea3b24fdd222fadaa2cca24ea37f3be3d01739fe6f55f1c32e8edd27eaad92d908e4190dd1e532cdf47 + languageName: node + linkType: hard + +"supports-color@npm:^3.1.0": + version: 3.2.3 + resolution: "supports-color@npm:3.2.3" + dependencies: + has-flag: "npm:^1.0.0" + checksum: 10c0/d39a57dbd75c3b5740654f8ec16aaf7203b8d12b8a51314507bed590c9081120805f105b4ce741db13105e6f842ac09700e4bd665b9ffc46eb0b34ba54720bd3 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"swagger-ui-dist@npm:5.17.14, swagger-ui-dist@npm:>=5.0.0": + version: 5.17.14 + resolution: "swagger-ui-dist@npm:5.17.14" + checksum: 10c0/cb61bba39e76d7d0d83da605a55e9504c1a5b421f9f13cced06d3e222f0a291594d417ec57b30a38aabe30d8a7e257c4977b8f0bba0e865d60f92b0a8ef4dfc1 + languageName: node + linkType: hard + +"swagger-ui-express@npm:^5.0.1": + version: 5.0.1 + resolution: "swagger-ui-express@npm:5.0.1" + dependencies: + swagger-ui-dist: "npm:>=5.0.0" + peerDependencies: + express: ">=4.0.0 || >=5.0.0-beta" + checksum: 10c0/dbe9830caef7fe455241e44e74958bac62642997e4341c1b0f38a3d684d19a4a81b431217c656792d99f046a1b5f261abf7783ede0afe41098cd4450401f6fd1 + languageName: node + linkType: hard + +"symbol-observable@npm:4.0.0": + version: 4.0.0 + resolution: "symbol-observable@npm:4.0.0" + checksum: 10c0/5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d + languageName: node + linkType: hard + +"sync-request@npm:^6.0.0": + version: 6.1.0 + resolution: "sync-request@npm:6.1.0" + dependencies: + http-response-object: "npm:^3.0.1" + sync-rpc: "npm:^1.2.1" + then-request: "npm:^6.0.0" + checksum: 10c0/02b31c5d543933ce8cc2cdfa7dd7b278e2645eb54299d56f3bc9c778de3130301370f25d54ecc3f6b8b2c7bfb034daabd2b866e0c18badbde26404513212c1f5 + languageName: node + linkType: hard + +"sync-rpc@npm:^1.2.1": + version: 1.3.6 + resolution: "sync-rpc@npm:1.3.6" + dependencies: + get-port: "npm:^3.1.0" + checksum: 10c0/2abaa0e6482fe8b72e29af1f7d5f484fac5a8ea0132969bf370f59b044c4f2eb109f95b222cb06e037f89b42b374a2918e5f90aff5fb7cf3e146d8088c56f6db + languageName: node + linkType: hard + +"synckit@npm:^0.11.7, synckit@npm:^0.11.8": + version: 0.11.11 + resolution: "synckit@npm:0.11.11" + dependencies: + "@pkgr/core": "npm:^0.2.9" + checksum: 10c0/f0761495953d12d94a86edf6326b3a565496c72f9b94c02549b6961fb4d999f4ca316ce6b3eb8ed2e4bfc5056a8de65cda0bd03a233333a35221cd2fdc0e196b + languageName: node + linkType: hard + +"table-layout@npm:^1.0.2": + version: 1.0.2 + resolution: "table-layout@npm:1.0.2" + dependencies: + array-back: "npm:^4.0.1" + deep-extend: "npm:~0.6.0" + typical: "npm:^5.2.0" + wordwrapjs: "npm:^4.0.0" + checksum: 10c0/c1d16d5ba2199571606ff574a5c91cff77f14e8477746e191e7dfd294da03e61af4e8004f1f6f783da9582e1365f38d3c469980428998750d558bf29462cc6c3 + languageName: node + linkType: hard + +"table@npm:^6.8.0": + version: 6.9.0 + resolution: "table@npm:6.9.0" + dependencies: + ajv: "npm:^8.0.1" + lodash.truncate: "npm:^4.4.2" + slice-ansi: "npm:^4.0.0" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/35646185712bb65985fbae5975dda46696325844b78735f95faefae83e86df0a265277819a3e67d189de6e858c509b54e66ca3958ffd51bde56ef1118d455bf4 + languageName: node + linkType: hard + +"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1, tapable@npm:^2.3.0": + version: 2.3.0 + resolution: "tapable@npm:2.3.0" + checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681 + languageName: node + linkType: hard + +"tar@npm:^7.5.4": + version: 7.5.9 + resolution: "tar@npm:7.5.9" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.1.0" + yallist: "npm:^5.0.0" + checksum: 10c0/e870beb1b2477135ca2abe86b2d18f7b35d0a4e3a37bbc523d3b8f7adca268dfab543f26528a431d569897f8c53a7cac745cdfbc4411c2f89aeeacc652b81b0a + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.16": + version: 5.3.16 + resolution: "terser-webpack-plugin@npm:5.3.16" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + jest-worker: "npm:^27.4.5" + schema-utils: "npm:^4.3.0" + serialize-javascript: "npm:^6.0.2" + terser: "npm:^5.31.1" + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 10c0/39e37c5b3015c1a5354a3633f77235677bfa06eac2608ce26d258b1d1a74070a99910319a6f2f2c437eb61dc321f66434febe01d78e73fa96b4d4393b813f4cf + languageName: node + linkType: hard + +"terser@npm:^5.31.1": + version: 5.44.1 + resolution: "terser@npm:5.44.1" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.15.0" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10c0/ee7a76692cb39b1ed22c30ff366c33ff3c977d9bb769575338ff5664676168fcba59192fb5168ef80c7cd901ef5411a1b0351261f5eaa50decf0fc71f63bde75 + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"then-request@npm:^6.0.0": + version: 6.0.2 + resolution: "then-request@npm:6.0.2" + dependencies: + "@types/concat-stream": "npm:^1.6.0" + "@types/form-data": "npm:0.0.33" + "@types/node": "npm:^8.0.0" + "@types/qs": "npm:^6.2.31" + caseless: "npm:~0.12.0" + concat-stream: "npm:^1.6.0" + form-data: "npm:^2.2.0" + http-basic: "npm:^8.1.1" + http-response-object: "npm:^3.0.1" + promise: "npm:^8.0.0" + qs: "npm:^6.4.0" + checksum: 10c0/9d2998c3470d6aa5b49993612be40627c57a89534cff5bbcc1d57f18457c14675cf3f59310816a1f85fdd40fa66feb64c63c5b76fb2163221f57223609c47949 + languageName: node + linkType: hard + +"through@npm:^2.3.6": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + languageName: node + linkType: hard + +"tinycolor2@npm:^1.6.0": + version: 1.6.0 + resolution: "tinycolor2@npm:1.6.0" + checksum: 10c0/9aa79a36ba2c2a87cb221453465cabacd04b9e35f9694373e846fdc78b1c768110f81e581ea41440106c0f24d9a023891d0887e8075885e790ac40eb0e74a5c1 + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.6": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 + languageName: node + linkType: hard + +"tmp@npm:0.0.33, tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + +"to-buffer@npm:^1.2.0, to-buffer@npm:^1.2.1, to-buffer@npm:^1.2.2": + version: 1.2.2 + resolution: "to-buffer@npm:1.2.2" + dependencies: + isarray: "npm:^2.0.5" + safe-buffer: "npm:^5.2.1" + typed-array-buffer: "npm:^1.0.3" + checksum: 10c0/56bc56352f14a2c4a0ab6277c5fc19b51e9534882b98eb068b39e14146591e62fa5b06bf70f7fed1626230463d7e60dca81e815096656e5e01c195c593873d12 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 + languageName: node + linkType: hard + +"token-types@npm:^4.1.1": + version: 4.2.1 + resolution: "token-types@npm:4.2.1" + dependencies: + "@tokenizer/token": "npm:^0.3.0" + ieee754: "npm:^1.2.1" + checksum: 10c0/e9a4a139deba9515770cd7ac36a8f53f953b9d035d309e88a66d706760dba0df420753f2b8bdee6b9f3cbff8d66b24e69571e8dea27baa7b378229ab1bcca399 + languageName: node + linkType: hard + +"token-types@npm:^6.0.0": + version: 6.1.1 + resolution: "token-types@npm:6.1.1" + dependencies: + "@borewit/text-codec": "npm:^0.1.0" + "@tokenizer/token": "npm:^0.3.0" + ieee754: "npm:^1.2.1" + checksum: 10c0/e2405e7789d41693a09c478b53c47ffadd735a5f4c826d9885787d022ab10e26cc4a67b03593285748bf3b0c0237e0ea2ab268abcb953ea314727201d0f6504d + languageName: node + linkType: hard + +"toml@npm:^3.0.0": + version: 3.0.0 + resolution: "toml@npm:3.0.0" + checksum: 10c0/8d7ed3e700ca602e5419fca343e1c595eb7aa177745141f0761a5b20874b58ee5c878cd045c408da9d130cb2b611c639912210ba96ce2f78e443569aa8060c18 + languageName: node + linkType: hard + +"tr46@npm:^5.1.0": + version: 5.1.1 + resolution: "tr46@npm:5.1.1" + dependencies: + punycode: "npm:^2.3.1" + checksum: 10c0/ae270e194d52ec67ebd695c1a42876e0f19b96e4aca2ab464ab1d9d17dc3acd3e18764f5034c93897db73421563be27c70c98359c4501136a497e46deda5d5ec + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"tree-kill@npm:1.2.2": + version: 1.2.2 + resolution: "tree-kill@npm:1.2.2" + bin: + tree-kill: cli.js + checksum: 10c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 + languageName: node + linkType: hard + +"ts-api-utils@npm:^1.0.1": + version: 1.4.3 + resolution: "ts-api-utils@npm:1.4.3" + peerDependencies: + typescript: ">=4.2.0" + checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a + languageName: node + linkType: hard + +"ts-api-utils@npm:^2.4.0": + version: 2.4.0 + resolution: "ts-api-utils@npm:2.4.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10c0/ed185861aef4e7124366a3f6561113557a57504267d4d452a51e0ba516a9b6e713b56b4aeaab9fa13de9db9ab755c65c8c13a777dba9133c214632cb7b65c083 + languageName: node + linkType: hard + +"ts-command-line-args@npm:^2.2.0": + version: 2.5.1 + resolution: "ts-command-line-args@npm:2.5.1" + dependencies: + chalk: "npm:^4.1.0" + command-line-args: "npm:^5.1.1" + command-line-usage: "npm:^6.1.0" + string-format: "npm:^2.0.0" + bin: + write-markdown: dist/write-markdown.js + checksum: 10c0/affb43fd4e17b496b6fd195888c7a80e6d7fe54f121501926bb2376f2167c238f7fa8f2e2d98bf2498ff883240d9f914e3558701807f40dca882616a8fd763b1 + languageName: node + linkType: hard + +"ts-essentials@npm:^10.0.2": + version: 10.1.1 + resolution: "ts-essentials@npm:10.1.1" + peerDependencies: + typescript: ">=4.5.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/8c59148a03eae086e7b1454fa6895e94e2f71385089ccda7e1f720a586749ede7e49ff7338e5f27e44a79f4bed740cc5dc3ad59313769bec028a85fa985685ff + languageName: node + linkType: hard + +"ts-essentials@npm:^7.0.1": + version: 7.0.3 + resolution: "ts-essentials@npm:7.0.3" + peerDependencies: + typescript: ">=3.7.0" + checksum: 10c0/ea1919534ec6ce4ca4d9cb0ff1ab8e053509237da8d4298762ab3bfba4e78ca5649a599ce78a5c7c2624f3a7a971f62b265b7b0c3c881336e4fa6acaf6f37544 + languageName: node + linkType: hard + +"ts-jest@npm:^29.4.6": + version: 29.4.6 + resolution: "ts-jest@npm:29.4.6" + dependencies: + bs-logger: "npm:^0.2.6" + fast-json-stable-stringify: "npm:^2.1.0" + handlebars: "npm:^4.7.8" + json5: "npm:^2.2.3" + lodash.memoize: "npm:^4.1.2" + make-error: "npm:^1.3.6" + semver: "npm:^7.7.3" + type-fest: "npm:^4.41.0" + yargs-parser: "npm:^21.1.1" + peerDependencies: + "@babel/core": ">=7.0.0-beta.0 <8" + "@jest/transform": ^29.0.0 || ^30.0.0 + "@jest/types": ^29.0.0 || ^30.0.0 + babel-jest: ^29.0.0 || ^30.0.0 + jest: ^29.0.0 || ^30.0.0 + jest-util: ^29.0.0 || ^30.0.0 + typescript: ">=4.3 <6" + peerDependenciesMeta: + "@babel/core": + optional: true + "@jest/transform": + optional: true + "@jest/types": + optional: true + babel-jest: + optional: true + esbuild: + optional: true + jest-util: + optional: true + bin: + ts-jest: cli.js + checksum: 10c0/013dda99ac938cd4b94bae9323ed1b633cd295976c256d596d01776866188078fe7b82b8b3ebd05deb401b27b5618d9d76208eded2568661240ecf9694a5c933 + languageName: node + linkType: hard + +"ts-loader@npm:^9.4.3": + version: 9.5.4 + resolution: "ts-loader@npm:9.5.4" + dependencies: + chalk: "npm:^4.1.0" + enhanced-resolve: "npm:^5.0.0" + micromatch: "npm:^4.0.0" + semver: "npm:^7.3.4" + source-map: "npm:^0.7.4" + peerDependencies: + typescript: "*" + webpack: ^5.0.0 + checksum: 10c0/f0982404b43628c335d3b3a60ac3f1738385da7b97c3f04cb5ad2ebad791597be39b25c8a4e158a66173f9bd9f5aa72e285b046b0573e4beed8ecd032d418e4d + languageName: node + linkType: hard + +"ts-node@npm:^10.9.0, ts-node@npm:^10.9.1, ts-node@npm:^10.9.2": + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 + languageName: node + linkType: hard + +"tsconfig-paths-webpack-plugin@npm:4.2.0": + version: 4.2.0 + resolution: "tsconfig-paths-webpack-plugin@npm:4.2.0" + dependencies: + chalk: "npm:^4.1.0" + enhanced-resolve: "npm:^5.7.0" + tapable: "npm:^2.2.1" + tsconfig-paths: "npm:^4.1.2" + checksum: 10c0/495c5ab7c1cb079217d98fe25d61def01e4bab38047c7ab25ec11876cc8c697ff01f43ea6c9933181875e51e49835407fc71afd92ea6cca1ba1bebf513dfb510 + languageName: node + linkType: hard + +"tsconfig-paths@npm:4.2.0, tsconfig-paths@npm:^4.1.2, tsconfig-paths@npm:^4.2.0": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: "npm:^2.2.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea + languageName: node + linkType: hard + +"tslib@npm:2.7.0": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 + languageName: node + linkType: hard + +"tslib@npm:2.8.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"tslib@npm:^1.9.3": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tsort@npm:0.0.1": + version: 0.0.1 + resolution: "tsort@npm:0.0.1" + checksum: 10c0/ea3d034ab341dd9282c972710496e98539408d77f1cd476ad0551a9731f40586b65ab917b39745f902bf32037a3161eee3821405f6ab15bcd2ce4cc0a52d1da6 + languageName: node + linkType: hard + +"tweetnacl@npm:1.0.3": + version: 1.0.3 + resolution: "tweetnacl@npm:1.0.3" + checksum: 10c0/069d9df51e8ad4a89fbe6f9806c68e06c65be3c7d42f0701cc43dba5f0d6064686b238bbff206c5addef8854e3ce00c643bff59432ea2f2c639feab0ee1a93f9 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-check@npm:~0.3.2": + version: 0.3.2 + resolution: "type-check@npm:0.3.2" + dependencies: + prelude-ls: "npm:~1.1.2" + checksum: 10c0/776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-detect@npm:^4.0.0, type-detect@npm:^4.1.0": + version: 4.1.0 + resolution: "type-detect@npm:4.1.0" + checksum: 10c0/df8157ca3f5d311edc22885abc134e18ff8ffbc93d6a9848af5b682730ca6a5a44499259750197250479c5331a8a75b5537529df5ec410622041650a7f293e2a + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"type-fest@npm:^0.7.1": + version: 0.7.1 + resolution: "type-fest@npm:0.7.1" + checksum: 10c0/ce6b5ef806a76bf08d0daa78d65e61f24d9a0380bd1f1df36ffb61f84d14a0985c3a921923cf4b97831278cb6fa9bf1b89c751df09407e0510b14e8c081e4e0f + languageName: node + linkType: hard + +"type-fest@npm:^4.41.0": + version: 4.41.0 + resolution: "type-fest@npm:4.41.0" + checksum: 10c0/f5ca697797ed5e88d33ac8f1fec21921839871f808dc59345c9cf67345bfb958ce41bd821165dbf3ae591cedec2bf6fe8882098dfdd8dc54320b859711a2c1e4 + languageName: node + linkType: hard + +"type-is@npm:^1.6.18, type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + languageName: node + linkType: hard + +"typechain@npm:^8.3.2": + version: 8.3.2 + resolution: "typechain@npm:8.3.2" + dependencies: + "@types/prettier": "npm:^2.1.1" + debug: "npm:^4.3.1" + fs-extra: "npm:^7.0.0" + glob: "npm:7.1.7" + js-sha3: "npm:^0.8.0" + lodash: "npm:^4.17.15" + mkdirp: "npm:^1.0.4" + prettier: "npm:^2.3.1" + ts-command-line-args: "npm:^2.2.0" + ts-essentials: "npm:^7.0.1" + peerDependencies: + typescript: ">=4.3.0" + bin: + typechain: dist/cli/cli.js + checksum: 10c0/1ea660cc7c699c6ac68da67b76454eb4e9395c54666d924ca67f983ae8eb5b5e7dab0a576beb55dbfad75ea784a3f68cb1ca019d332293b7291731c156ead5b5 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 + languageName: node + linkType: hard + +"typedarray@npm:^0.0.6": + version: 0.0.6 + resolution: "typedarray@npm:0.0.6" + checksum: 10c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 + languageName: node + linkType: hard + +"typescript-eslint@npm:^8.50.0": + version: 8.56.0 + resolution: "typescript-eslint@npm:8.56.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.56.0" + "@typescript-eslint/parser": "npm:8.56.0" + "@typescript-eslint/typescript-estree": "npm:8.56.0" + "@typescript-eslint/utils": "npm:8.56.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/13c47bb4a82d6714d482e96991faf2895c45a8e74235191a2ebbd36272487595c0824d128958942a1d1d18eddf8ca40c5850e2e314958a0a2e3c40be92f2d5a0 + languageName: node + linkType: hard + +"typescript@npm:5.7.2": + version: 5.7.2 + resolution: "typescript@npm:5.7.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 + languageName: node + linkType: hard + +"typescript@npm:^5.0.0, typescript@npm:^5.1.3, typescript@npm:^5.9.3": + version: 5.9.3 + resolution: "typescript@npm:5.9.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.7.2#optional!builtin": + version: 5.7.2 + resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/f3b8082c9d1d1629a215245c9087df56cb784f9fb6f27b5d55577a20e68afe2a889c040aacff6d27e35be165ecf9dca66e694c42eb9a50b3b2c451b36b5675cb + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.0.0#optional!builtin, typescript@patch:typescript@npm%3A^5.1.3#optional!builtin, typescript@patch:typescript@npm%3A^5.9.3#optional!builtin": + version: 5.9.3 + resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430 + languageName: node + linkType: hard + +"typical@npm:^4.0.0": + version: 4.0.0 + resolution: "typical@npm:4.0.0" + checksum: 10c0/f300b198fb9fe743859b75ec761d53c382723dc178bbce4957d9cb754f2878a44ce17dc0b6a5156c52be1065449271f63754ba594dac225b80ce3aa39f9241ed + languageName: node + linkType: hard + +"typical@npm:^5.2.0": + version: 5.2.0 + resolution: "typical@npm:5.2.0" + checksum: 10c0/1cceaa20d4b77a02ab8eccfe4a20500729431aecc1e1b7dc70c0e726e7966efdca3bf0b4bee285555b751647e37818fd99154ea73f74b5c29adc95d3c13f5973 + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4": + version: 3.19.3 + resolution: "uglify-js@npm:3.19.3" + bin: + uglifyjs: bin/uglifyjs + checksum: 10c0/83b0a90eca35f778e07cad9622b80c448b6aad457c9ff8e568afed978212b42930a95f9e1be943a1ffa4258a3340fbb899f41461131c05bb1d0a9c303aed8479 + languageName: node + linkType: hard + +"uid@npm:2.0.2": + version: 2.0.2 + resolution: "uid@npm:2.0.2" + dependencies: + "@lukeed/csprng": "npm:^1.0.0" + checksum: 10c0/e9d02d0562c74e74b5a2519e586db9d7f8204978e476cddd191ee1a9efb85efafdbab2dbf3fc3dde0f5da01fd9da161f37d604dabf513447fd2c03d008f1324c + languageName: node + linkType: hard + +"uint8array-extras@npm:^1.4.0": + version: 1.5.0 + resolution: "uint8array-extras@npm:1.5.0" + checksum: 10c0/0e74641ac7dadb02eadefc1ccdadba6010e007757bda824960de3c72bbe2b04e6d3af75648441f412148c4103261d54fcb60be45a2863beb76643a55fddba3bd + languageName: node + linkType: hard + +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 + languageName: node + linkType: hard + +"undici-types@npm:~6.21.0, undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a + languageName: node + linkType: hard + +"undici@npm:^5.14.0": + version: 5.29.0 + resolution: "undici@npm:5.29.0" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: 10c0/e4e4d631ca54ee0ad82d2e90e7798fa00a106e27e6c880687e445cc2f13b4bc87c5eba2a88c266c3eecffb18f26e227b778412da74a23acc374fca7caccec49b + languageName: node + linkType: hard + +"undici@npm:^6.16.1": + version: 6.22.0 + resolution: "undici@npm:6.22.0" + checksum: 10c0/47903c489d73e26bd47960cf2f04d63282ed050818b672cb05f8dfb6403381b850cf1b1751832654fd3af22aacd9d780e5e61aff563cd97943f5c4f10d5b3e23 + languageName: node + linkType: hard + +"unique-filename@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-filename@npm:5.0.0" + dependencies: + unique-slug: "npm:^6.0.0" + checksum: 10c0/afb897e9cf4c2fb622ea716f7c2bb462001928fc5f437972213afdf1cc32101a230c0f1e9d96fc91ee5185eca0f2feb34127145874975f347be52eb91d6ccc2c + languageName: node + linkType: hard + +"unique-slug@npm:^6.0.0": + version: 6.0.0 + resolution: "unique-slug@npm:6.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/da7ade4cb04eb33ad0499861f82fe95ce9c7c878b7139dc54d140ecfb6a6541c18a5c8dac16188b8b379fe62c0c1f1b710814baac910cde5f4fec06212126c6a + languageName: node + linkType: hard + +"universal-user-agent@npm:^7.0.0, universal-user-agent@npm:^7.0.2": + version: 7.0.3 + resolution: "universal-user-agent@npm:7.0.3" + checksum: 10c0/6043be466a9bb96c0ce82392842d9fddf4c37e296f7bacc2cb25f47123990eb436c82df824644f9c5070a94dbdb117be17f66d54599ab143648ec57ef93dbcc8 + languageName: node + linkType: hard + +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + languageName: node + linkType: hard + +"unrs-resolver@npm:^1.7.11": + version: 1.11.1 + resolution: "unrs-resolver@npm:1.11.1" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.1" + "@unrs/resolver-binding-android-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-x64": "npm:1.11.1" + "@unrs/resolver-binding-freebsd-x64": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.1" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.1" + napi-postinstall: "npm:^0.3.0" + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/c91b112c71a33d6b24e5c708dab43ab80911f2df8ee65b87cd7a18fb5af446708e98c4b415ca262026ad8df326debcc7ca6a801b2935504d87fd6f0b9d70dce1 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.2.0": + version: 1.2.3 + resolution: "update-browserslist-db@npm:1.2.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"urijs@npm:^1.19.1": + version: 1.19.11 + resolution: "urijs@npm:1.19.11" + checksum: 10c0/96e15eea5b41a99361d506e4d8fcc64dc43f334bd5fd34e08261467b6954b97a6b45929a8d6c79e2dc76aadfd6ca950e0f4bd7f3c0757a08978429634d07eda1 + languageName: node + linkType: hard + +"utf8@npm:3.0.0": + version: 3.0.0 + resolution: "utf8@npm:3.0.0" + checksum: 10c0/675d008bab65fc463ce718d5cae8fd4c063540f269e4f25afebce643098439d53e7164bb1f193e0c3852825c7e3e32fbd8641163d19a618dbb53f1f09acb0d5a + languageName: node + linkType: hard + +"utif2@npm:^4.1.0": + version: 4.1.0 + resolution: "utif2@npm:4.1.0" + dependencies: + pako: "npm:^1.0.11" + checksum: 10c0/c60fd91427548f6b866b66fa983d7f08347aef0ac4c5b85b517dd70a5b0031548f3496e55dad28435031534fda0d237673d881636ff60845bf4a014dc9edf676 + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"utils-merge@npm:1.0.1, utils-merge@npm:^1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 + languageName: node + linkType: hard + +"uuid@npm:*, uuid@npm:^13.0.0": + version: 13.0.0 + resolution: "uuid@npm:13.0.0" + bin: + uuid: dist-node/bin/uuid + checksum: 10c0/950e4c18d57fef6c69675344f5700a08af21e26b9eff2bf2180427564297368c538ea11ac9fb2e6528b17fc3966a9fd2c5049361b0b63c7d654f3c550c9b3d67 + languageName: node + linkType: hard + +"uuid@npm:11.1.0": + version: 11.1.0 + resolution: "uuid@npm:11.1.0" + bin: + uuid: dist/esm/bin/uuid + checksum: 10c0/34aa51b9874ae398c2b799c88a127701408cd581ee89ec3baa53509dd8728cbb25826f2a038f9465f8b7be446f0fbf11558862965b18d21c993684297628d4d3 + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 + languageName: node + linkType: hard + +"validator@npm:^13.15.20": + version: 13.15.26 + resolution: "validator@npm:13.15.26" + checksum: 10c0/d66041685c531423f6b514d0481228503b96682fe30ed7925ad77ff3cd08c3983dc94f45e18457e44f62f89027b94a3342009d65421800ce65f6e0d2c6eaf7fc + languageName: node + linkType: hard + +"vary@npm:^1, vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f + languageName: node + linkType: hard + +"viem@npm:^2.43.2, viem@npm:^2.43.3": + version: 2.46.2 + resolution: "viem@npm:2.46.2" + dependencies: + "@noble/curves": "npm:1.9.1" + "@noble/hashes": "npm:1.8.0" + "@scure/bip32": "npm:1.7.0" + "@scure/bip39": "npm:1.6.0" + abitype: "npm:1.2.3" + isows: "npm:1.0.7" + ox: "npm:0.12.4" + ws: "npm:8.18.3" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/f381da63d88aaa0755e140197b963d5f05d4db619cd265aa0d3ae17faf368344cabb552e724d1201d3867f9ab6bb0646732abd813bf0c500d8fab6bc607030ab + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + +"watchpack@npm:^2.4.1, watchpack@npm:^2.4.4": + version: 2.5.1 + resolution: "watchpack@npm:2.5.1" + dependencies: + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.1.2" + checksum: 10c0/dffbb483d1f61be90dc570630a1eb308581e2227d507d783b1d94a57ac7b705ecd9a1a4b73d73c15eab596d39874e5276a3d9cb88bbb698bafc3f8d08c34cf17 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"web3-utils@npm:^1.3.6": + version: 1.10.4 + resolution: "web3-utils@npm:1.10.4" + dependencies: + "@ethereumjs/util": "npm:^8.1.0" + bn.js: "npm:^5.2.1" + ethereum-bloom-filters: "npm:^1.0.6" + ethereum-cryptography: "npm:^2.1.2" + ethjs-unit: "npm:0.1.6" + number-to-bn: "npm:1.7.0" + randombytes: "npm:^2.1.0" + utf8: "npm:3.0.0" + checksum: 10c0/fbd5c8ec71e944e9e66e3436dbd4446927c3edc95f81928723f9ac137e0d821c5cbb92dba0ed5bbac766f919f919c9d8e316e459c51d876d5188321642676677 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + languageName: node + linkType: hard + +"webpack-node-externals@npm:3.0.0": + version: 3.0.0 + resolution: "webpack-node-externals@npm:3.0.0" + checksum: 10c0/9f645a4dc8e122dac43cdc8c1367d4b44af20c79632438b633acc1b4fe64ea7ba1ad6ab61bd0fc46e1b873158c48d8c7a25a489cdab1f31299f00eb3b81cfc61 + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3, webpack-sources@npm:^3.3.3": + version: 3.3.3 + resolution: "webpack-sources@npm:3.3.3" + checksum: 10c0/ab732f6933b513ba4d505130418995ddef6df988421fccf3289e53583c6a39e205c4a0739cee98950964552d3006604912679c736031337fb4a9d78d8576ed40 + languageName: node + linkType: hard + +"webpack@npm:5.97.1": + version: 5.97.1 + resolution: "webpack@npm:5.97.1" + dependencies: + "@types/eslint-scope": "npm:^3.7.7" + "@types/estree": "npm:^1.0.6" + "@webassemblyjs/ast": "npm:^1.14.1" + "@webassemblyjs/wasm-edit": "npm:^1.14.1" + "@webassemblyjs/wasm-parser": "npm:^1.14.1" + acorn: "npm:^8.14.0" + browserslist: "npm:^4.24.0" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.17.1" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.11" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.1" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/a12d3dc882ca582075f2c4bd88840be8307427245c90a8a0e0b372d73560df13fcf25a61625c9e7edc964981d16b5a8323640562eb48347cf9dd2f8bd1b39d35 + languageName: node + linkType: hard + +"webpack@npm:^5.0.0": + version: 5.104.1 + resolution: "webpack@npm:5.104.1" + dependencies: + "@types/eslint-scope": "npm:^3.7.7" + "@types/estree": "npm:^1.0.8" + "@types/json-schema": "npm:^7.0.15" + "@webassemblyjs/ast": "npm:^1.14.1" + "@webassemblyjs/wasm-edit": "npm:^1.14.1" + "@webassemblyjs/wasm-parser": "npm:^1.14.1" + acorn: "npm:^8.15.0" + acorn-import-phases: "npm:^1.0.3" + browserslist: "npm:^4.28.1" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.17.4" + es-module-lexer: "npm:^2.0.0" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.11" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.3.1" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^4.3.3" + tapable: "npm:^2.3.0" + terser-webpack-plugin: "npm:^5.3.16" + watchpack: "npm:^2.4.4" + webpack-sources: "npm:^3.3.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/ea78c57f80bbd7684f4f1bb38a18408ab0ef4c5b962e25ad382c595d10b9e9701e077f5248a8cef5f127a55902698664c18837e64243bb972fbecf4e5d9aaab0 + languageName: node + linkType: hard + +"whatwg-url@npm:^14.1.0": + version: 14.2.0 + resolution: "whatwg-url@npm:14.2.0" + dependencies: + tr46: "npm:^5.1.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/f746fc2f4c906607d09537de1227b13f9494c171141e5427ed7d2c0dd0b6a48b43d8e71abaae57d368d0c06b673fd8ec63550b32ad5ed64990c7b0266c2b4272 + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.16": + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f + languageName: node + linkType: hard + +"which@npm:^1.1.1, which@npm:^1.3.1": + version: 1.3.1 + resolution: "which@npm:1.3.1" + dependencies: + isexe: "npm:^2.0.0" + bin: + which: ./bin/which + checksum: 10c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^6.0.0": + version: 6.0.1 + resolution: "which@npm:6.0.1" + dependencies: + isexe: "npm:^4.0.0" + bin: + node-which: bin/which.js + checksum: 10c0/7e710e54ea36d2d6183bee2f9caa27a3b47b9baf8dee55a199b736fcf85eab3b9df7556fca3d02b50af7f3dfba5ea3a45644189836df06267df457e354da66d5 + languageName: node + linkType: hard + +"widest-line@npm:^3.1.0": + version: 3.1.0 + resolution: "widest-line@npm:3.1.0" + dependencies: + string-width: "npm:^4.0.0" + checksum: 10c0/b1e623adcfb9df35350dd7fc61295d6d4a1eaa65a406ba39c4b8360045b614af95ad10e05abf704936ed022569be438c4bfa02d6d031863c4166a238c301119f + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5, word-wrap@npm:~1.2.3": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 + languageName: node + linkType: hard + +"wordwrapjs@npm:^4.0.0": + version: 4.0.1 + resolution: "wordwrapjs@npm:4.0.1" + dependencies: + reduce-flatten: "npm:^2.0.0" + typical: "npm:^5.2.0" + checksum: 10c0/4cc43eb0f6adb7214d427e68918357a9df483815efbb4c59beb30972714b1804ede2a551b1dfd2234c0bd413c6f07d6daa6522d1c53f43f89a376d815fbf3c43 + languageName: node + linkType: hard + +"workerpool@npm:^6.5.1": + version: 6.5.1 + resolution: "workerpool@npm:6.5.1" + checksum: 10c0/58e8e969782292cb3a7bfba823f1179a7615250a0cefb4841d5166234db1880a3d0fe83a31dd8d648329ec92c2d0cd1890ad9ec9e53674bb36ca43e9753cdeac + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^4.0.1" + checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d + languageName: node + linkType: hard + +"ws@npm:8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe + languageName: node + linkType: hard + +"ws@npm:8.18.0": + version: 8.18.0 + resolution: "ws@npm:8.18.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 + languageName: node + linkType: hard + +"ws@npm:8.18.3": + version: 8.18.3 + resolution: "ws@npm:8.18.3" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 + languageName: node + linkType: hard + +"ws@npm:^7.4.6": + version: 7.5.10 + resolution: "ws@npm:7.5.10" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/bd7d5f4aaf04fae7960c23dcb6c6375d525e00f795dd20b9385902bd008c40a94d3db3ce97d878acc7573df852056ca546328b27b39f47609f80fb22a0a9b61d + languageName: node + linkType: hard + +"xml-parse-from-string@npm:^1.0.0": + version: 1.0.1 + resolution: "xml-parse-from-string@npm:1.0.1" + checksum: 10c0/485fd096818c360dce4a115444f2157a4ab61b0ec99753b0381ce40a26978dc2eceb8079bcbbbd5cd570901cd7aa7310cad3d5c47084602a5dbf7e530a59edda + languageName: node + linkType: hard + +"xml2js@npm:^0.5.0": + version: 0.5.0 + resolution: "xml2js@npm:0.5.0" + dependencies: + sax: "npm:>=0.6.0" + xmlbuilder: "npm:~11.0.0" + checksum: 10c0/c9cd07cd19c5e41c740913bbbf16999a37a204488e11f86eddc2999707d43967197e257014d7ed72c8fc4348c192fa47eb352d1d9d05637cefd0d2e24e9aa4c8 + languageName: node + linkType: hard + +"xml2js@npm:^0.6.2": + version: 0.6.2 + resolution: "xml2js@npm:0.6.2" + dependencies: + sax: "npm:>=0.6.0" + xmlbuilder: "npm:~11.0.0" + checksum: 10c0/e98a84e9c172c556ee2c5afa0fc7161b46919e8b53ab20de140eedea19903ed82f7cd5b1576fb345c84f0a18da1982ddf65908129b58fc3d7cbc658ae232108f + languageName: node + linkType: hard + +"xmlbuilder@npm:~11.0.0": + version: 11.0.1 + resolution: "xmlbuilder@npm:11.0.1" + checksum: 10c0/74b979f89a0a129926bc786b913459bdbcefa809afaa551c5ab83f89b1915bdaea14c11c759284bb9b931e3b53004dbc2181e21d3ca9553eeb0b2a7b4e40c35b + languageName: node + linkType: hard + +"xtend@npm:^4.0.2": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + +"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 + languageName: node + linkType: hard + +"yargs-unparser@npm:^2.0.0": + version: 2.0.0 + resolution: "yargs-unparser@npm:2.0.0" + dependencies: + camelcase: "npm:^6.0.0" + decamelize: "npm:^4.0.0" + flat: "npm:^5.0.2" + is-plain-obj: "npm:^2.1.0" + checksum: 10c0/a5a7d6dc157efa95122e16780c019f40ed91d4af6d2bac066db8194ed0ec5c330abb115daa5a79ff07a9b80b8ea80c925baacf354c4c12edd878c0529927ff03 + languageName: node + linkType: hard + +"yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.0" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^20.2.2" + checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 + languageName: node + linkType: hard + +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"zod@npm:^3.23.8": + version: 3.25.76 + resolution: "zod@npm:3.25.76" + checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c + languageName: node + linkType: hard From 8f39f6298799673d18156e9d0e83be6ab053c1bc Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Mon, 23 Feb 2026 17:15:44 +0530 Subject: [PATCH 07/21] "kyc happening" --- .../modules/kyc/controllers/kyc.controller.ts | 13 ++++++-- .../kyc/processors/verification.processor.ts | 33 ++++++++++--------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/packages/backend/src/modules/kyc/controllers/kyc.controller.ts b/packages/backend/src/modules/kyc/controllers/kyc.controller.ts index f4c50fb2..96d966b3 100644 --- a/packages/backend/src/modules/kyc/controllers/kyc.controller.ts +++ b/packages/backend/src/modules/kyc/controllers/kyc.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Post, Get, Delete, UseGuards, Request, UploadedFile, UseInterceptors, ParseFilePipeBuilder, HttpStatus, Res, StreamableFile } from '@nestjs/common'; +import { Controller, Post, Get, Delete, UseGuards, Request, UploadedFile, UseInterceptors, ParseFilePipeBuilder, HttpStatus, Res, StreamableFile, UnsupportedMediaTypeException } from '@nestjs/common'; import { Response } from 'express'; import { FileInterceptor } from '@nestjs/platform-express'; import { KycService } from '../services/kyc.service'; @@ -10,12 +10,19 @@ export class KycController { constructor(private readonly kycService: KycService) {} @Post('upload') - @UseInterceptors(FileInterceptor('document')) + @UseInterceptors(FileInterceptor('document', { + fileFilter: (_req, file, callback) => { + if (/\/(pdf|jpeg|jpg|png)$/.test(file.mimetype)) { + callback(null, true); + } else { + callback(new UnsupportedMediaTypeException('Only PDF, JPEG, and PNG files are allowed'), false); + } + }, + })) async upload( @Request() req: any, @UploadedFile( new ParseFilePipeBuilder() - .addFileTypeValidator({ fileType: /(pdf|jpeg|jpg|png)$/ }) .addMaxSizeValidator({ maxSize: 5 * 1024 * 1024 }) // 5MB .build({ errorHttpStatusCode: HttpStatus.UNPROCESSABLE_ENTITY }), ) diff --git a/packages/backend/src/modules/kyc/processors/verification.processor.ts b/packages/backend/src/modules/kyc/processors/verification.processor.ts index 93fe7d9d..71615058 100644 --- a/packages/backend/src/modules/kyc/processors/verification.processor.ts +++ b/packages/backend/src/modules/kyc/processors/verification.processor.ts @@ -267,22 +267,25 @@ export class VerificationProcessor extends WorkerHost { txHash = await this.blockchainService.registerIdentity(user.walletAddress); this.logger.log(`āœ… Investor registered on blockchain: ${txHash}`); - // Check if OAID registration already exists, register if not - this.logger.log(`šŸ” Checking for existing OAID registration for ${user.walletAddress}...`); - hasOAID = await this.solvencyBlockchainService.hasOAIDCreditLine(user.walletAddress); - - if (!hasOAID) { - try { - this.logger.log(`šŸ†” Registering user in OAID system for ${user.walletAddress}...`); - const oaidResult = await this.solvencyBlockchainService.registerUserInOAID(user.walletAddress); - oaidTxHash = oaidResult.txHash; - this.logger.log(`āœ… User registered in OAID system: TX: ${oaidTxHash}`); - } catch (oaidError) { - this.logger.error(`āš ļø Failed to register user in OAID: ${oaidError}`); - // Don't fail the whole operation if OAID registration fails + // OAID is Mantle-specific — guard against missing contract on other EVM networks + try { + this.logger.log(`šŸ” Checking for existing OAID registration for ${user.walletAddress}...`); + hasOAID = await this.solvencyBlockchainService.hasOAIDCreditLine(user.walletAddress); + + if (!hasOAID) { + try { + this.logger.log(`šŸ†” Registering user in OAID system for ${user.walletAddress}...`); + const oaidResult = await this.solvencyBlockchainService.registerUserInOAID(user.walletAddress); + oaidTxHash = oaidResult.txHash; + this.logger.log(`āœ… User registered in OAID system: TX: ${oaidTxHash}`); + } catch (oaidError) { + this.logger.error(`āš ļø Failed to register user in OAID: ${oaidError}`); + } + } else { + this.logger.log(`āœ… User already registered in OAID system`); } - } else { - this.logger.log(`āœ… User already registered in OAID system`); + } catch (oaidCheckError) { + this.logger.warn(`ā„¹ļø OAID not available on ${deploymentNetwork} — skipping OAID registration`); } } else { this.logger.log(`ā„¹ļø Stellar wallet detected - skipping on-chain identity registration (trustline-based compliance)`); From 79c35d58812d46a1ba0e7b17da40dc2f8a2b91fc Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Sat, 28 Feb 2026 10:47:16 +0530 Subject: [PATCH 08/21] "contracts module defined" --- packages/arbitrum-contracts/index.ts | 3 + packages/arbitrum-contracts/package.json | 7 +- packages/arbitrum-contracts/src/abis/index.ts | 41 ++++ packages/arbitrum-contracts/src/addresses.ts | 17 ++ packages/arbitrum-contracts/tsconfig.json | 2 +- packages/backend/jest.config.ts | 3 + packages/backend/package.json | 5 +- .../backend/src/config/blockchain.config.ts | 10 - .../adapters/contract-adapter.interface.ts | 8 +- .../evm/evm-contract-loader.adapter.ts | 119 +++------- .../stellar-contract-loader.adapter.ts | 43 +--- .../services/contract-loader.service.ts | 215 +++--------------- packages/backend/tsconfig.json | 19 +- packages/contracts/index.ts | 3 + packages/contracts/package.json | 7 +- packages/contracts/src/abis/index.ts | 45 ++++ packages/contracts/src/addresses.ts | 21 ++ packages/contracts/tsconfig.json | 2 +- packages/stellar-contracts/index.ts | 1 + packages/stellar-contracts/package.json | 5 +- packages/stellar-contracts/src/addresses.ts | 10 + packages/stellar-contracts/tsconfig.json | 2 +- packages/types/src/blockchain/contracts.ts | 38 ++++ packages/types/src/index.ts | 1 + yarn.lock | 143 ++++++------ 25 files changed, 381 insertions(+), 389 deletions(-) create mode 100644 packages/arbitrum-contracts/index.ts create mode 100644 packages/arbitrum-contracts/src/abis/index.ts create mode 100644 packages/arbitrum-contracts/src/addresses.ts create mode 100644 packages/contracts/index.ts create mode 100644 packages/contracts/src/abis/index.ts create mode 100644 packages/contracts/src/addresses.ts create mode 100644 packages/stellar-contracts/index.ts create mode 100644 packages/stellar-contracts/src/addresses.ts create mode 100644 packages/types/src/blockchain/contracts.ts diff --git a/packages/arbitrum-contracts/index.ts b/packages/arbitrum-contracts/index.ts new file mode 100644 index 00000000..01e71c03 --- /dev/null +++ b/packages/arbitrum-contracts/index.ts @@ -0,0 +1,3 @@ +export * from './typechain-types'; +export * from './src/addresses'; +export * from './src/abis'; diff --git a/packages/arbitrum-contracts/package.json b/packages/arbitrum-contracts/package.json index ed08dde7..7a966213 100644 --- a/packages/arbitrum-contracts/package.json +++ b/packages/arbitrum-contracts/package.json @@ -1,9 +1,9 @@ { - "name": "@arbitrum/contracts", + "name": "@contracts/arbitrum", "version": "1.0.0", "private": true, - "main": "./typechain-types/index.ts", - "types": "./typechain-types/index.ts", + "main": "./index.ts", + "types": "./index.ts", "scripts": { "generate:types": "hardhat compile", "dev": "echo 'No dev script for contracts'", @@ -17,6 +17,7 @@ "@nomicfoundation/hardhat-toolbox": "^3.0.0", "@nomicfoundation/hardhat-verify": "^1.1.1", "@nomicfoundation/hardhat-viem": "^3.0.1", + "@openassets/types": "*", "@typechain/ethers-v6": "^0.5.1", "@typechain/hardhat": "^8.0.0", "@types/chai": "^4.3.11", diff --git a/packages/arbitrum-contracts/src/abis/index.ts b/packages/arbitrum-contracts/src/abis/index.ts new file mode 100644 index 00000000..895ae125 --- /dev/null +++ b/packages/arbitrum-contracts/src/abis/index.ts @@ -0,0 +1,41 @@ +import AttestationRegistry from '../../artifacts/contracts/core/AttestationRegistry.sol/AttestationRegistry.json'; +import IdentityRegistry from '../../artifacts/contracts/core/IdentityRegistry.sol/IdentityRegistry.json'; +import TokenFactory from '../../artifacts/contracts/core/TokenFactory.sol/TokenFactory.json'; +import YieldVault from '../../artifacts/contracts/core/YieldVault.sol/YieldVault.json'; +import PrimaryMarket from '../../artifacts/contracts/marketplace/PrimaryMarket.sol/PrimaryMarket.json'; +import SecondaryMarket from '../../artifacts/contracts/marketplace/SecondaryMarket.sol/SecondaryMarket.json'; +import TrustedIssuersRegistry from '../../artifacts/contracts/core/TrustedIssuersRegistry.sol/TrustedIssuersRegistry.json'; +import SolvencyVault from '../../artifacts/contracts/core/SolvencyVault.sol/SolvencyVault.json'; +import StARBLeverageVault from '../../artifacts/contracts/core/StARBLeverageVault.sol/StARBLeverageVault.json'; +import SeniorPool from '../../artifacts/contracts/core/SeniorPool.sol/SeniorPool.json'; +import OAID from '../../artifacts/contracts/integrations/OAID.sol/OAID.json'; +import MockUSDC from '../../artifacts/contracts/test/MockUSDC.sol/MockUSDC.json'; +import ArbitrumSwapIntegration from '../../artifacts/contracts/integrations/ArbitrumSwapIntegration.sol/ArbitrumSwapIntegration.json'; +import MockArbitrumDEX from '../../artifacts/contracts/test/MockArbitrumDEX.sol/MockArbitrumDEX.json'; +import MockStARB from '../../artifacts/contracts/test/MockStARB.sol/MockStARB.json'; +import RWAToken from '../../artifacts/contracts/core/RWAToken.sol/RWAToken.json'; +import PrivateAssetToken from '../../artifacts/contracts/core/PrivateAssetToken.sol/PrivateAssetToken.json'; +import ComplianceModule from '../../artifacts/contracts/core/ComplianceModule.sol/ComplianceModule.json'; + +import { ContractName } from '@openassets/types'; + +export const ArbitrumAbis: Partial> = { + AttestationRegistry: AttestationRegistry.abi, + IdentityRegistry: IdentityRegistry.abi, + TokenFactory: TokenFactory.abi, + YieldVault: YieldVault.abi, + PrimaryMarket: PrimaryMarket.abi, + SecondaryMarket: SecondaryMarket.abi, + TrustedIssuersRegistry: TrustedIssuersRegistry.abi, + SolvencyVault: SolvencyVault.abi, + StARBLeverageVault: StARBLeverageVault.abi, + SeniorPool: SeniorPool.abi, + OAID: OAID.abi, + MockUSDC: MockUSDC.abi, + ArbitrumSwapIntegration: ArbitrumSwapIntegration.abi, + MockArbitrumDEX: MockArbitrumDEX.abi, + MockStARB: MockStARB.abi, + RWAToken: RWAToken.abi, + PrivateAssetToken: PrivateAssetToken.abi, + ComplianceModule: ComplianceModule.abi, +}; diff --git a/packages/arbitrum-contracts/src/addresses.ts b/packages/arbitrum-contracts/src/addresses.ts new file mode 100644 index 00000000..1fe35bc4 --- /dev/null +++ b/packages/arbitrum-contracts/src/addresses.ts @@ -0,0 +1,17 @@ +import { ContractName } from '@openassets/types'; + +export const ArbitrumContracts: Partial> = { + AttestationRegistry: '0xF0877f80C28613eB0a83AfE2d9D9Cd9b08fFa371', + TrustedIssuersRegistry: '0x74512695334F45FaF93a8a0dAbb54f9D39fe9613', + IdentityRegistry: '0xc19a39065e453b79C48CDd115c98d54B582c0efD', + YieldVault: '0xb82A3aDFA1913Db64084569aaB55bB4223e28189', + TokenFactory: '0x4AB03540a90A9C701049C7F75b16b58D83e6A272', + PrimaryMarket: '0x47232472137C68AAE3f52E8f81F51FE4f4B6D89D', + SecondaryMarket: '0xaaD379B3dE8dFa235813a68b24c9ab9E9B302BEB', + MockUSDC: '0xa6887882e7430862150F7C4FF5AE192966c6e1d2', + MockStARB: '0x3172772883A4CfD4013280CA95370017f4a863f9', + SeniorPool: '0x2a2bfe500536BADf9657e50088f0F60F2A082664', + MockArbitrumDEX: '0xd618e5D470Df53BBA73c98d415924a3467901bd5', + ArbitrumSwapIntegration: '0xE9d2d78eFfB816E6402b542A514197bB4448427d', + StARBLeverageVault: '0x8DDD583FfA5b6A442c8D2bf277DffCE890e13DCc' +} as const; diff --git a/packages/arbitrum-contracts/tsconfig.json b/packages/arbitrum-contracts/tsconfig.json index 869b0168..1327938c 100644 --- a/packages/arbitrum-contracts/tsconfig.json +++ b/packages/arbitrum-contracts/tsconfig.json @@ -12,6 +12,6 @@ "rootDir": "./", "typeRoots": ["./node_modules/@types", "./typechain-types"] }, - "include": ["./scripts", "./test", "./typechain-types"], + "include": ["./src", "./scripts", "./test", "./typechain-types"], "files": ["./hardhat.config.ts"] } diff --git a/packages/backend/jest.config.ts b/packages/backend/jest.config.ts index 0f97bbfd..75fa9492 100644 --- a/packages/backend/jest.config.ts +++ b/packages/backend/jest.config.ts @@ -14,6 +14,9 @@ const config: Config = { '^src/(.*)$': '/$1', '^uuid$': '/../__mocks__/uuid.js', '^@openassets/types$': '/../../types/src/index.ts', + '^@contracts/mantle$': '/../../contracts/index.ts', + '^@contracts/arbitrum$': '/../../arbitrum-contracts/index.ts', + '^@contracts/stellar$': '/../../stellar-contracts/index.ts', }, }; diff --git a/packages/backend/package.json b/packages/backend/package.json index c03c3562..e7df1e57 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -13,6 +13,7 @@ "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "tsc-check": "tsc --noEmit", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", @@ -20,7 +21,9 @@ "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { - "@mantle/contracts": "*", + "@contracts/arbitrum": "*", + "@contracts/mantle": "*", + "@contracts/stellar": "*", "@nestjs/bullmq": "^11.0.4", "@nestjs/common": "^10.0.0", "@nestjs/config": "^4.0.2", diff --git a/packages/backend/src/config/blockchain.config.ts b/packages/backend/src/config/blockchain.config.ts index 90b1309b..c0ce36b6 100644 --- a/packages/backend/src/config/blockchain.config.ts +++ b/packages/backend/src/config/blockchain.config.ts @@ -11,14 +11,4 @@ export default registerAs('blockchain', () => ({ adminPrivateKey: process.env.ADMIN_PRIVATE_KEY, platformPrivateKey: process.env.PLATFORM_PRIVATE_KEY, custodyAddress: process.env.CUSTODY_WALLET_ADDRESS, - - // Contract Addresses (Env overrides or defaults from deployed_contracts.json) - contracts: { - attestationRegistry: process.env.ATTESTATION_REGISTRY_ADDRESS, - identityRegistry: process.env.IDENTITY_REGISTRY_ADDRESS, - tokenFactory: process.env.TOKEN_FACTORY_ADDRESS, - yieldVault: process.env.YIELD_VAULT_ADDRESS, - primaryMarketplace: process.env.PRIMARY_MARKETPLACE_ADDRESS, - secondaryMarket: process.env.SECONDARY_MARKET_ADDRESS, - } })); diff --git a/packages/backend/src/modules/blockchain/adapters/contract-adapter.interface.ts b/packages/backend/src/modules/blockchain/adapters/contract-adapter.interface.ts index 845e9621..d425e781 100644 --- a/packages/backend/src/modules/blockchain/adapters/contract-adapter.interface.ts +++ b/packages/backend/src/modules/blockchain/adapters/contract-adapter.interface.ts @@ -1,5 +1,7 @@ +import { ContractName } from '@openassets/types'; + export interface ContractAdapter { - hasContract(name: string): boolean; - getContractAddress(name: string): string; - getContractInterface(name: string): any; // ABI for EVM, Spec for Stellar + hasContract(name: ContractName | string): boolean; + getContractAddress(name: ContractName | string): string; + getContractInterface(name: ContractName | string): any; // ABI for EVM, Spec for Stellar } diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts index ad4354fb..a3da575a 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts @@ -1,115 +1,64 @@ import { Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import * as fs from 'fs'; -import * as path from 'path'; import { ContractAdapter } from '../contract-adapter.interface'; +import { MantleContracts, MantleAbis } from '@contracts/mantle'; +import { ArbitrumContracts, ArbitrumAbis } from '@contracts/arbitrum'; +import { ContractName } from '@openassets/types'; export class EvmContractAdapter implements ContractAdapter { private readonly logger = new Logger(EvmContractAdapter.name); - private contracts: Record = {}; - private abis: Record = {}; + private contracts: Partial> = {}; + private abis: Partial> = {}; constructor(private configService: ConfigService) { this.loadContracts(); - this.loadAbis(); } private loadContracts() { - const envContracts = this.configService.get('blockchain.contracts'); const networkType = this.configService.get('network.networkType'); - try { - const monorepoRoot = path.join(process.cwd(), '../..'); - - // Determine path based on network type - let deployPath: string; - if (networkType === 'arbitrum') { - deployPath = path.join(monorepoRoot, 'packages/arbitrum-contracts/deployed_contracts_arbitrum.json'); - } else { - deployPath = path.join(monorepoRoot, 'packages/contracts/deployed_contracts.json'); - } - - if (fs.existsSync(deployPath)) { - const data = JSON.parse(fs.readFileSync(deployPath, 'utf8')); - this.contracts = { ...data.contracts, ...envContracts }; - this.logger.log(`Loaded contracts from ${deployPath}`); - } else { - this.logger.warn(`Contracts file not found at ${deployPath}`); - this.contracts = envContracts || {}; - } - } catch (e) { - this.logger.error('Failed to load contracts', e); - this.contracts = envContracts || {}; - } - - // Normalize naming aliases: Arbitrum manifest uses 'PrimaryMarket', code uses 'PrimaryMarketplace' - if (this.contracts['PrimaryMarket'] && !this.contracts['PrimaryMarketplace']) { - this.contracts['PrimaryMarketplace'] = this.contracts['PrimaryMarket']; - } - if (this.contracts['PrimaryMarketplace'] && !this.contracts['PrimaryMarket']) { - this.contracts['PrimaryMarket'] = this.contracts['PrimaryMarketplace']; - } - // Arbitrum uses 'MockUSDC', code uses 'USDC' - if (this.contracts['MockUSDC'] && !this.contracts['USDC']) { - this.contracts['USDC'] = this.contracts['MockUSDC']; - } - // Arbitrum uses 'StARBLeverageVault', code may use 'LeverageVault' - if (this.contracts['StARBLeverageVault'] && !this.contracts['LeverageVault']) { - this.contracts['LeverageVault'] = this.contracts['StARBLeverageVault']; - } - } - - private loadAbis() { - const networkType = this.configService.get('network.networkType'); - const monorepoRoot = path.join(process.cwd(), '../..'); - - // Determine artifact base path based on network - let artifactBase: string; if (networkType === 'arbitrum') { - artifactBase = path.join(monorepoRoot, 'packages/arbitrum-contracts/artifacts/contracts'); + this.contracts = { ...ArbitrumContracts }; + this.abis = { ...ArbitrumAbis }; + + // Aliases for Arbitrum + this.addAlias('PrimaryMarketplace', 'PrimaryMarket'); + this.addAlias('USDC', 'MockUSDC'); + this.addAlias('LeverageVault', 'StARBLeverageVault'); } else { - artifactBase = path.join(monorepoRoot, 'packages/contracts/artifacts/contracts'); + this.contracts = { ...MantleContracts }; + this.abis = { ...MantleAbis }; + + // Aliases for Mantle + this.addAlias('PrimaryMarketplace', 'PrimaryMarket'); + this.addAlias('USDC', 'MockUSDC'); } - const mapping = { - AttestationRegistry: 'core/AttestationRegistry.sol/AttestationRegistry.json', - IdentityRegistry: 'core/IdentityRegistry.sol/IdentityRegistry.json', - TokenFactory: 'core/TokenFactory.sol/TokenFactory.json', - YieldVault: 'core/YieldVault.sol/YieldVault.json', - PrimaryMarketplace: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', - PrimaryMarket: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', - RWAToken: 'core/RWAToken.sol/RWAToken.json', - SecondaryMarket: 'marketplace/SecondaryMarket.sol/SecondaryMarket.json', - USDC: 'test/MockUSDC.sol/MockUSDC.json', - MockUSDC: 'test/MockUSDC.sol/MockUSDC.json', - }; + const envContracts = this.configService.get('blockchain.contracts') || {}; + this.contracts = { ...this.contracts, ...envContracts }; + } - for (const [name, relPath] of Object.entries(mapping)) { - try { - const fullPath = path.join(artifactBase, relPath); - if (fs.existsSync(fullPath)) { - const artifact = JSON.parse(fs.readFileSync(fullPath, 'utf8')); - this.abis[name] = artifact.abi; - } - } catch (e) { - this.logger.error(`Failed to load ABI for ${name}`, e); - } + private addAlias(alias: string, canonical: string) { + if (this.contracts[canonical as any] && !this.contracts[alias]) { + this.contracts[alias] = this.contracts[canonical as any]; + this.abis[alias] = this.abis[canonical as any]; } } - hasContract(name: string): boolean { - const camelCaseName = name.charAt(0).toLowerCase() + name.slice(1); - return !!(this.contracts[name] || this.contracts[camelCaseName]); + hasContract(name: ContractName | string): boolean { + const camelCaseName = typeof name === 'string' ? name.charAt(0).toLowerCase() + name.slice(1) : name; + return !!(this.contracts[name as any] || this.contracts[camelCaseName as any]); } - getContractAddress(name: string): string { - const camelCaseName = name.charAt(0).toLowerCase() + name.slice(1); - const addr = this.contracts[name] || this.contracts[camelCaseName]; + getContractAddress(name: ContractName | string): string { + const camelCaseName = typeof name === 'string' ? name.charAt(0).toLowerCase() + name.slice(1) : name; + const addr = this.contracts[name as any] || this.contracts[camelCaseName as any]; if (!addr) throw new Error(`Contract address for ${name} not configured`); return addr; } - getContractInterface(name: string): any { - return this.abis[name] || []; + getContractInterface(name: ContractName | string): any { + const camelCaseName = typeof name === 'string' ? name.charAt(0).toLowerCase() + name.slice(1) : name; + return this.abis[name as any] || this.abis[camelCaseName as any] || []; } } diff --git a/packages/backend/src/modules/blockchain/adapters/stellar/stellar-contract-loader.adapter.ts b/packages/backend/src/modules/blockchain/adapters/stellar/stellar-contract-loader.adapter.ts index 296c5e07..31e471aa 100644 --- a/packages/backend/src/modules/blockchain/adapters/stellar/stellar-contract-loader.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/stellar/stellar-contract-loader.adapter.ts @@ -1,54 +1,35 @@ import { Injectable, Logger } from '@nestjs/common'; -import * as fs from 'fs'; -import * as path from 'path'; import { ContractAdapter } from '../contract-adapter.interface'; +import { StellarContracts } from '@contracts/stellar'; +import { ContractName } from '@openassets/types'; @Injectable() export class StellarContractAdapter implements ContractAdapter { private readonly logger = new Logger(StellarContractAdapter.name); - private contracts: Record = {}; + private contracts: Partial> = {}; constructor() { this.loadContracts(); } private loadContracts() { - try { - const monorepoRoot = path.join(process.cwd(), '../..'); - const deployPath = path.join(monorepoRoot, 'packages/stellar-contracts/deployed_contracts.json'); - - if (!fs.existsSync(deployPath)) { - this.logger.warn(`Stellar deployed_contracts.json not found at ${deployPath}`); - return; - } - - const data = JSON.parse(fs.readFileSync(deployPath, 'utf8')); - const networkKey = 'stellar-testnet'; - - if (data.networks?.[networkKey]?.contracts) { - this.contracts = data.networks[networkKey].contracts; - this.logger.log(`Loaded ${Object.keys(this.contracts).length} Stellar contract IDs from deployed_contracts.json`); - } else { - this.logger.warn(`No contracts found for network "${networkKey}" in Stellar deployed_contracts.json`); - } - } catch (e: any) { - this.logger.error(`Failed to load Stellar deployed_contracts.json: ${e.message}`); - } + this.contracts = { ...StellarContracts }; + this.logger.log(`Loaded ${Object.keys(this.contracts).length} Stellar contract IDs from package`); } - hasContract(name: string): boolean { - const camelCaseName = name.charAt(0).toLowerCase() + name.slice(1); - return !!(this.contracts[name] || this.contracts[camelCaseName]); + hasContract(name: ContractName | string): boolean { + const camelCaseName = typeof name === 'string' ? name.charAt(0).toLowerCase() + name.slice(1) : name; + return !!(this.contracts[name as any] || this.contracts[camelCaseName as any]); } - getContractAddress(name: string): string { - const camelCaseName = name.charAt(0).toLowerCase() + name.slice(1); - const addr = this.contracts[name] || this.contracts[camelCaseName]; + getContractAddress(name: ContractName | string): string { + const camelCaseName = typeof name === 'string' ? name.charAt(0).toLowerCase() + name.slice(1) : name; + const addr = this.contracts[name as any] || this.contracts[camelCaseName as any]; if (!addr) throw new Error(`Stellar contract ID for ${name} not configured`); return addr; } - getContractInterface(name: string): any { + getContractInterface(name: ContractName | string): any { // For Stellar, this would return the XDR Spec if we had generated JSONs // In this phase, we'll use the SDK's Contract class which handles XDR return null; diff --git a/packages/backend/src/modules/blockchain/services/contract-loader.service.ts b/packages/backend/src/modules/blockchain/services/contract-loader.service.ts index 3933312e..766e1ddb 100644 --- a/packages/backend/src/modules/blockchain/services/contract-loader.service.ts +++ b/packages/backend/src/modules/blockchain/services/contract-loader.service.ts @@ -1,196 +1,55 @@ import { Injectable, Logger, OnModuleInit } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import * as fs from 'fs'; -import * as path from 'path'; - -interface DeployedContracts { - networks?: { - [key: string]: { - contracts: Record; - network: string; - timestamp?: string; - }; - }; - // Legacy format support - contracts?: Record; -} +import { MantleContracts, MantleAbis } from '@contracts/mantle'; +import { ArbitrumContracts, ArbitrumAbis } from '@contracts/arbitrum'; +import { StellarContracts } from '@contracts/stellar'; +import { ContractName } from '@openassets/types'; @Injectable() export class ContractLoaderService implements OnModuleInit { private readonly logger = new Logger(ContractLoaderService.name); - private contracts: Record = {}; - private abis: Record = {}; - private currentNetwork: string; + private contracts: Partial> = {}; + private abis: Partial> = {}; - constructor(private configService: ConfigService) { - this.currentNetwork = this.configService.get('blockchain.network') || 'mantle-testnet'; - } + constructor(private configService: ConfigService) {} onModuleInit() { this.loadContracts(); - this.loadAbis(); - } - - private getNetworkKey(): string { - const chainId = this.configService.get('blockchain.chainId'); - const networkMap: Record = { - 5003: 'mantle-sepolia', - 5000: 'mantle-mainnet', - }; - - if (chainId && networkMap[chainId]) { - return networkMap[chainId]; - } - - return this.currentNetwork; } private loadContracts() { - const envContracts = this.configService.get('blockchain.contracts'); - const networkType = this.configService.get('network.networkType'); - - // Try to load from deployed_contracts.json - try { - // Navigate to monorepo root (up two levels from packages/backend) - const monorepoRoot = path.join(process.cwd(), '../..'); - - // Determine which contracts package to use based on network type - let deployPath: string; - if (networkType === 'arbitrum') { - deployPath = path.join(monorepoRoot, 'packages/arbitrum-contracts/deployed_contracts_arbitrum.json'); - } else { - deployPath = path.join(monorepoRoot, 'packages/contracts/deployed_contracts.json'); - } - - if (fs.existsSync(deployPath)) { - const data: DeployedContracts = JSON.parse(fs.readFileSync(deployPath, 'utf8')); - - // For Arbitrum, the deployment file has a simple flat format - if (networkType === 'arbitrum') { - this.contracts = { ...data.contracts, ...envContracts }; - this.logger.log(`Loaded ${Object.keys(data.contracts || {}).length} Arbitrum contract addresses from ${deployPath}`); - } else { - // Standard multi-chain or legacy format for Mantle/Stellar - const networkKey = this.getNetworkKey(); - this.logger.log(`Loading contracts for network: ${networkKey}`); - - // Handle multi-chain structure - if (data.networks && data.networks[networkKey]) { - this.contracts = { ...data.networks[networkKey].contracts, ...envContracts }; - this.logger.log(`Loaded ${Object.keys(data.networks[networkKey].contracts).length} contract addresses from ${deployPath}`); - } - // Fallback to legacy format - else if (data.contracts) { - this.logger.warn('Using legacy deployed_contracts.json format. Consider migrating to multi-chain structure.'); - this.contracts = { ...data.contracts, ...envContracts }; - this.logger.log(`Loaded ${Object.keys(data.contracts).length} contract addresses (legacy format)`); - } else { - this.logger.warn(`No contracts found for network ${networkKey} in deployed_contracts.json`); - this.contracts = envContracts || {}; - } - } - } else { - this.logger.warn(`deployed_contracts.json not found at ${deployPath}. Relying on env vars.`); - this.contracts = envContracts || {}; - } - } catch (e) { - this.logger.error('Failed to load deployed_contracts.json', e); - this.contracts = envContracts || {}; - } - - // Normalize naming aliases so backend lookups work regardless of manifest key conventions: - // Arbitrum uses 'PrimaryMarket', Mantle uses 'PrimaryMarketplace' — treat as identical - if (this.contracts['PrimaryMarket'] && !this.contracts['PrimaryMarketplace']) { - this.contracts['PrimaryMarketplace'] = this.contracts['PrimaryMarket']; - } - if (this.contracts['PrimaryMarketplace'] && !this.contracts['PrimaryMarket']) { - this.contracts['PrimaryMarket'] = this.contracts['PrimaryMarketplace']; - } - // Arbitrum uses 'MockUSDC', shared backend code uses 'USDC' - if (this.contracts['MockUSDC'] && !this.contracts['USDC']) { - this.contracts['USDC'] = this.contracts['MockUSDC']; - } - // Arbitrum uses 'StARBLeverageVault', backend may reference 'LeverageVault' - if (this.contracts['StARBLeverageVault'] && !this.contracts['LeverageVault']) { - this.contracts['LeverageVault'] = this.contracts['StARBLeverageVault']; - } - } - - private loadAbis() { const networkType = this.configService.get('network.networkType'); - // Navigate to monorepo root (up two levels from packages/backend) - const monorepoRoot = path.join(process.cwd(), '../..'); - - // Determine artifact base path based on network - let artifactBase: string; if (networkType === 'arbitrum') { - artifactBase = path.join(monorepoRoot, 'packages/arbitrum-contracts/artifacts/contracts'); + this.contracts = { ...ArbitrumContracts }; + this.abis = { ...ArbitrumAbis }; + this.addAlias('PrimaryMarketplace', 'PrimaryMarket'); + this.addAlias('USDC', 'MockUSDC'); + this.addAlias('LeverageVault', 'StARBLeverageVault'); + } else if (networkType === 'stellar') { + this.contracts = { ...StellarContracts }; + this.abis = {}; } else { - artifactBase = path.join(monorepoRoot, 'packages/contracts/artifacts/contracts'); + this.contracts = { ...MantleContracts }; + this.abis = { ...MantleAbis }; + this.addAlias('PrimaryMarketplace', 'PrimaryMarket'); + this.addAlias('USDC', 'MockUSDC'); } - // Base mapping for all networks - const baseMapping = { - AttestationRegistry: 'core/AttestationRegistry.sol/AttestationRegistry.json', - IdentityRegistry: 'core/IdentityRegistry.sol/IdentityRegistry.json', - TokenFactory: 'core/TokenFactory.sol/TokenFactory.json', - YieldVault: 'core/YieldVault.sol/YieldVault.json', - PrimaryMarketplace: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', - PrimaryMarket: 'marketplace/PrimaryMarket.sol/PrimaryMarket.json', // Arbitrum uses this name - RWAToken: 'core/RWAToken.sol/RWAToken.json', - USDC: 'test/MockUSDC.sol/MockUSDC.json', - SecondaryMarket: 'marketplace/SecondaryMarket.sol/SecondaryMarket.json', - SeniorPool: 'core/SeniorPool.sol/SeniorPool.json', - PrivateAssetToken: 'core/PrivateAssetToken.sol/PrivateAssetToken.json', - }; - - // Arbitrum-specific mappings - const arbitrumMapping = { - ...baseMapping, - StARBLeverageVault: 'core/StARBLeverageVault.sol/StARBLeverageVault.json', - LeverageVault: 'core/StARBLeverageVault.sol/StARBLeverageVault.json', // Alias for compatibility - ArbitrumSwapIntegration: 'integrations/ArbitrumSwapIntegration.sol/ArbitrumSwapIntegration.json', - MockArbitrumDEX: 'test/MockArbitrumDEX.sol/MockArbitrumDEX.json', - MockStARB: 'test/MockStARB.sol/MockStARB.json', - }; - - // Mantle-specific mappings - const mantleMapping = { - ...baseMapping, - Faucet: 'test/Faucet.sol/Faucet.json', - MockMETH: 'test/MockMETH.sol/MockMETH.json', - METHFaucet: 'test/METHFaucet.sol/METHFaucet.json', - LeverageVault: 'core/LeverageVault.sol/LeverageVault.json', - FluxionIntegration: 'integrations/FluxionIntegration.sol/FluxionIntegration.json', - MockFluxionDEX: 'test/MockFluxionDEX.sol/MockFluxionDEX.json', - SolvencyVault: 'core/SolvencyVault.sol/SolvencyVault.json', - OAID: 'integrations/OAID.sol/OAID.json', - }; - - // Select mapping based on network - const mapping = networkType === 'arbitrum' ? arbitrumMapping : mantleMapping; + const envContracts = this.configService.get('blockchain.contracts') || {}; + this.contracts = { ...this.contracts, ...envContracts }; + } - for (const [name, relPath] of Object.entries(mapping)) { - try { - const fullPath = path.join(artifactBase, relPath); - if (fs.existsSync(fullPath)) { - const artifact = JSON.parse(fs.readFileSync(fullPath, 'utf8')); - this.abis[name] = artifact.abi; - this.logger.log(`Loaded ABI for ${name}`); - } else { - this.logger.warn(`ABI not found for ${name} at ${fullPath}`); - } - } catch (e) { - this.logger.error(`Failed to load ABI for ${name}`, e); - } + private addAlias(alias: string, canonical: string) { + if (this.contracts[canonical as any] && !this.contracts[alias]) { + this.contracts[alias] = this.contracts[canonical as any]; + this.abis[alias] = this.abis[canonical as any]; } } - getContractAddress(name: string): string { - // Try both the original key and camelCase version - const camelCaseName = name.charAt(0).toLowerCase() + name.slice(1); - const addr = this.contracts[name] || this.contracts[camelCaseName]; + getContractAddress(name: ContractName | string): string { + const camelCaseName = typeof name === 'string' ? name.charAt(0).toLowerCase() + name.slice(1) : name; + const addr = this.contracts[name as any] || this.contracts[camelCaseName as any]; if (!addr) { throw new Error(`Contract address for ${name} not configured`); @@ -198,19 +57,19 @@ export class ContractLoaderService implements OnModuleInit { return addr; } - getContractAbi(name: string): any { - const abi = this.abis[name]; + getContractAbi(name: ContractName | string): any { + const camelCaseName = typeof name === 'string' ? name.charAt(0).toLowerCase() + name.slice(1) : name; + const abi = this.abis[name as any] || this.abis[camelCaseName as any]; if (!abi) { this.logger.warn(`ABI for ${name} not loaded. Contract interactions may fail.`); - return []; // Return empty ABI array instead of throwing + return []; } return abi; } - hasContract(name: string): boolean { - const camelCaseName = name.charAt(0).toLowerCase() + name.slice(1); - const addr = this.contracts[name] || this.contracts[camelCaseName]; - const hasAbi = !!this.abis[name]; - return !!addr && addr !== '' && hasAbi; + hasContract(name: ContractName | string): boolean { + const camelCaseName = typeof name === 'string' ? name.charAt(0).toLowerCase() + name.slice(1) : name; + const addr = this.contracts[name as any] || this.contracts[camelCaseName as any]; + return !!addr; } } diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json index 7ecb33ea..176053f5 100644 --- a/packages/backend/tsconfig.json +++ b/packages/backend/tsconfig.json @@ -11,8 +11,23 @@ "@openassets/types/*": [ "../types/src/*" ], - "@mantle/contracts/*": [ - "../contracts/generated/*" + "@contracts/mantle": [ + "../contracts/index.ts" + ], + "@contracts/mantle/*": [ + "../contracts/*" + ], + "@contracts/arbitrum": [ + "../arbitrum-contracts/index.ts" + ], + "@contracts/arbitrum/*": [ + "../arbitrum-contracts/*" + ], + "@contracts/stellar": [ + "../stellar-contracts/index.ts" + ], + "@contracts/stellar/*": [ + "../stellar-contracts/*" ] }, "types": [ diff --git a/packages/contracts/index.ts b/packages/contracts/index.ts new file mode 100644 index 00000000..01e71c03 --- /dev/null +++ b/packages/contracts/index.ts @@ -0,0 +1,3 @@ +export * from './typechain-types'; +export * from './src/addresses'; +export * from './src/abis'; diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 53130375..3570b7c3 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,9 +1,9 @@ { - "name": "@mantle/contracts", + "name": "@contracts/mantle", "version": "1.0.0", "private": true, - "main": "./typechain-types/index.ts", - "types": "./typechain-types/index.ts", + "main": "./index.ts", + "types": "./index.ts", "scripts": { "generate:types": "hardhat compile", "dev": "echo 'No dev script for contracts'" @@ -15,6 +15,7 @@ "@nomicfoundation/hardhat-toolbox": "^3.0.0", "@nomicfoundation/hardhat-verify": "^1.1.1", "@nomicfoundation/hardhat-viem": "^3.0.1", + "@openassets/types": "*", "@typechain/ethers-v6": "^0.5.1", "@typechain/hardhat": "^8.0.0", "@types/chai": "^4.3.11", diff --git a/packages/contracts/src/abis/index.ts b/packages/contracts/src/abis/index.ts new file mode 100644 index 00000000..b1ddf1dc --- /dev/null +++ b/packages/contracts/src/abis/index.ts @@ -0,0 +1,45 @@ +import AttestationRegistry from '../../artifacts/contracts/core/AttestationRegistry.sol/AttestationRegistry.json'; +import IdentityRegistry from '../../artifacts/contracts/core/IdentityRegistry.sol/IdentityRegistry.json'; +import TokenFactory from '../../artifacts/contracts/core/TokenFactory.sol/TokenFactory.json'; +import YieldVault from '../../artifacts/contracts/core/YieldVault.sol/YieldVault.json'; +import PrimaryMarket from '../../artifacts/contracts/marketplace/PrimaryMarket.sol/PrimaryMarket.json'; +import SecondaryMarket from '../../artifacts/contracts/marketplace/SecondaryMarket.sol/SecondaryMarket.json'; +import TrustedIssuersRegistry from '../../artifacts/contracts/core/TrustedIssuersRegistry.sol/TrustedIssuersRegistry.json'; +import SolvencyVault from '../../artifacts/contracts/core/SolvencyVault.sol/SolvencyVault.json'; +import LeverageVault from '../../artifacts/contracts/core/LeverageVault.sol/LeverageVault.json'; +import SeniorPool from '../../artifacts/contracts/core/SeniorPool.sol/SeniorPool.json'; +import OAID from '../../artifacts/contracts/integrations/OAID.sol/OAID.json'; +import MockUSDC from '../../artifacts/contracts/test/MockUSDC.sol/MockUSDC.json'; +import FluxionIntegration from '../../artifacts/contracts/integrations/FluxionIntegration.sol/FluxionIntegration.json'; +import MockFluxionDEX from '../../artifacts/contracts/test/MockFluxionDEX.sol/MockFluxionDEX.json'; +import MockMETH from '../../artifacts/contracts/test/MockMETH.sol/MockMETH.json'; +import METHFaucet from '../../artifacts/contracts/test/METHFaucet.sol/METHFaucet.json'; +import Faucet from '../../artifacts/contracts/test/Faucet.sol/Faucet.json'; +import RWAToken from '../../artifacts/contracts/core/RWAToken.sol/RWAToken.json'; +import PrivateAssetToken from '../../artifacts/contracts/core/PrivateAssetToken.sol/PrivateAssetToken.json'; +import ComplianceModule from '../../artifacts/contracts/core/ComplianceModule.sol/ComplianceModule.json'; + +import { ContractName } from '@openassets/types'; + +export const MantleAbis: Partial> = { + AttestationRegistry: AttestationRegistry.abi, + IdentityRegistry: IdentityRegistry.abi, + TokenFactory: TokenFactory.abi, + YieldVault: YieldVault.abi, + PrimaryMarket: PrimaryMarket.abi, + SecondaryMarket: SecondaryMarket.abi, + TrustedIssuersRegistry: TrustedIssuersRegistry.abi, + SolvencyVault: SolvencyVault.abi, + LeverageVault: LeverageVault.abi, + SeniorPool: SeniorPool.abi, + OAID: OAID.abi, + MockUSDC: MockUSDC.abi, + FluxionIntegration: FluxionIntegration.abi, + MockFluxionDEX: MockFluxionDEX.abi, + MockMETH: MockMETH.abi, + METHFaucet: METHFaucet.abi, + Faucet: Faucet.abi, + RWAToken: RWAToken.abi, + PrivateAssetToken: PrivateAssetToken.abi, + ComplianceModule: ComplianceModule.abi, +}; diff --git a/packages/contracts/src/addresses.ts b/packages/contracts/src/addresses.ts new file mode 100644 index 00000000..56e6f416 --- /dev/null +++ b/packages/contracts/src/addresses.ts @@ -0,0 +1,21 @@ +import { ContractName } from '@openassets/types'; + +export const MantleContracts: Partial> = { + AttestationRegistry: '0x03FE7d3736402D140659e7bD92B64808E31C3f51', + TrustedIssuersRegistry: '0xf63B563b6D438122cBC87f4356e60b8BB3Bc53E2', + IdentityRegistry: '0x2E310C62A225033055E88B690F8d054ece8bcbC4', + YieldVault: '0xa05bDf67483EB6ba5CcA0dc81543DeD5Ed845Da7', + TokenFactory: '0x7C75795Cf41ee32fB4FEB89964d7591F0a44BcfE', + PrimaryMarket: '0x7D8ac3ff7E7fd1a577ff778922Cc568be669beE0', + MockUSDC: '0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238', + MockMETH: '0x4Ade8aAa0143526393EcadA836224EF21aBC6ac6', + METHFaucet: '0xB50d0AC5D59E456C1f3EdB66403fd27eEbd155dB', + MockFluxionDEX: '0x882eA0d81d445CF9e696869af4D007008281892D', + SeniorPool: '0x9E5F4DD0178C08f27cC5Bd3E0e75Ed339385B346', + FluxionIntegration: '0xBf74A4CE5B8D1Aad592A3776e10537Ad27dA28Eb', + LeverageVault: '0x5EC05eBFA8AD682d09C8Ef99c1f15844Abe415BF', + Faucet: '0x26Da2F1a2de3295302Fd95eBA1A183dc8Ffd77a3', + OAID: '0xcc24b78Fa213304085684833597Fdc6CB5c8DfB0', + SolvencyVault: '0x039cB576d9F7D77d6bE0269E0904B6ceFA845C6B', + SecondaryMarket: '0x23f5c5893333199B3E166aCB8D48479D5E5B32CA' +} as const; diff --git a/packages/contracts/tsconfig.json b/packages/contracts/tsconfig.json index 298a7a31..aa9ae469 100644 --- a/packages/contracts/tsconfig.json +++ b/packages/contracts/tsconfig.json @@ -8,6 +8,6 @@ "skipLibCheck": true, "resolveJsonModule": true }, - "include": ["./scripts", "./test", "./typechain-types", "./hardhat.config.ts"], + "include": ["./src", "./scripts", "./test", "./typechain-types", "./hardhat.config.ts"], "files": ["./hardhat.config.ts"] } diff --git a/packages/stellar-contracts/index.ts b/packages/stellar-contracts/index.ts new file mode 100644 index 00000000..b2b19f8d --- /dev/null +++ b/packages/stellar-contracts/index.ts @@ -0,0 +1 @@ +export * from './src/addresses'; diff --git a/packages/stellar-contracts/package.json b/packages/stellar-contracts/package.json index 8431f3e2..6fe6ef9c 100644 --- a/packages/stellar-contracts/package.json +++ b/packages/stellar-contracts/package.json @@ -1,7 +1,9 @@ { - "name": "@mantle/stellar-contracts", + "name": "@contracts/stellar", "version": "1.0.0", "private": true, + "main": "./index.ts", + "types": "./index.ts", "description": "Soroban smart contracts for Open Assets platform", "scripts": { "build": "cargo build --target wasm32-unknown-unknown --release", @@ -10,6 +12,7 @@ "deploy:stack": "ts-node scripts/deploy/deploy_single.ts" }, "devDependencies": { + "@openassets/types": "*", "@types/node": "^20.0.0", "ts-node": "^10.9.0", "typescript": "^5.0.0" diff --git a/packages/stellar-contracts/src/addresses.ts b/packages/stellar-contracts/src/addresses.ts new file mode 100644 index 00000000..94f8c7af --- /dev/null +++ b/packages/stellar-contracts/src/addresses.ts @@ -0,0 +1,10 @@ +import { ContractName } from '@openassets/types'; + +export const StellarContracts: Partial> = { + AttestationRegistry: 'CB5E5E3UIRIHAJLDPANTM64DYRE73J6BF7HTPS6JMF5AD6YWXZIVNPKR', + TrustedIssuersRegistry: 'CCVP62PCN4KVFEIGGNWLPQ6DZGONWCU4KRZ22ED72WXFCEMKETTXM7RQ', + IdentityRegistry: 'CAUQPRMDO4Y66EH6LRPT77MWUMITJOPSYBJR3IQVZCP4J4UZTZLGBSTK', + AssetRegistry: 'CATAQATTDYNJEQ4VOLURXZA3J7X4AMNE3HTUUZJ5FGCOY2KCW5JFHEWA', + PrimaryMarket: 'CB4VSKYAMBQFO4VFOND6MWSXMHQWBTG5PXNS7ZWYGIU7PWQM7X2ZBTZQ', + YieldVault: 'CCSIHKPQTH3FMG5CIDGEAMIS6QBLHQBVINA7T2ZGAQOVZ32MO3Y7BL2S' +} as const; diff --git a/packages/stellar-contracts/tsconfig.json b/packages/stellar-contracts/tsconfig.json index a7b362b9..5852f8c6 100644 --- a/packages/stellar-contracts/tsconfig.json +++ b/packages/stellar-contracts/tsconfig.json @@ -12,6 +12,6 @@ "resolveJsonModule": true, "moduleResolution": "node" }, - "include": ["scripts/**/*"], + "include": ["./src", "./index.ts", "scripts/**/*"], "exclude": ["node_modules", "target"] } diff --git a/packages/types/src/blockchain/contracts.ts b/packages/types/src/blockchain/contracts.ts new file mode 100644 index 00000000..5b34a405 --- /dev/null +++ b/packages/types/src/blockchain/contracts.ts @@ -0,0 +1,38 @@ +export const ContractNameRegistry = { + // Cross-network + AttestationRegistry: 'AttestationRegistry', + IdentityRegistry: 'IdentityRegistry', + TokenFactory: 'TokenFactory', + YieldVault: 'YieldVault', + PrimaryMarket: 'PrimaryMarket', + SecondaryMarket: 'SecondaryMarket', + TrustedIssuersRegistry: 'TrustedIssuersRegistry', + + // EVM-shared + SolvencyVault: 'SolvencyVault', + LeverageVault: 'LeverageVault', + SeniorPool: 'SeniorPool', + OAID: 'OAID', + MockUSDC: 'MockUSDC', + + // Mantle-only + FluxionIntegration: 'FluxionIntegration', + MockFluxionDEX: 'MockFluxionDEX', + MockMETH: 'MockMETH', + METHFaucet: 'METHFaucet', + Faucet: 'Faucet', + RWAToken: 'RWAToken', + PrivateAssetToken: 'PrivateAssetToken', + ComplianceModule: 'ComplianceModule', + + // Arbitrum-only + StARBLeverageVault: 'StARBLeverageVault', + ArbitrumSwapIntegration: 'ArbitrumSwapIntegration', + MockStARB: 'MockStARB', + MockArbitrumDEX: 'MockArbitrumDEX', + + // Stellar-only + AssetRegistry: 'AssetRegistry', +} as const; + +export type ContractName = keyof typeof ContractNameRegistry; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index eaa8b4f7..a582c65c 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,5 +1,6 @@ // Blockchain export * from './blockchain/addresses'; +export * from './blockchain/contracts'; // Domain export * from './domain/user.types'; diff --git a/yarn.lock b/yarn.lock index eb90cd75..20dd2342 100644 --- a/yarn.lock +++ b/yarn.lock @@ -67,35 +67,6 @@ __metadata: languageName: node linkType: hard -"@arbitrum/contracts@workspace:packages/arbitrum-contracts": - version: 0.0.0-use.local - resolution: "@arbitrum/contracts@workspace:packages/arbitrum-contracts" - dependencies: - "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" - "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" - "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" - "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" - "@nomicfoundation/hardhat-verify": "npm:^1.1.1" - "@nomicfoundation/hardhat-viem": "npm:^3.0.1" - "@openzeppelin/contracts": "npm:5.4.0" - "@typechain/ethers-v6": "npm:^0.5.1" - "@typechain/hardhat": "npm:^8.0.0" - "@types/chai": "npm:^4.3.11" - "@types/mocha": "npm:^10.0.10" - "@types/node": "npm:^25.0.3" - chai: "npm:^4.3.10" - dotenv: "npm:^17.2.3" - ethers: "npm:^6.16.0" - hardhat: "npm:^2.22.3" - hardhat-gas-reporter: "npm:^1.0.10" - solidity-coverage: "npm:^0.8.17" - ts-node: "npm:^10.9.2" - typechain: "npm:^8.3.2" - typescript: "npm:^5.9.3" - viem: "npm:^2.43.3" - languageName: unknown - linkType: soft - "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" @@ -486,6 +457,77 @@ __metadata: languageName: node linkType: hard +"@contracts/arbitrum@npm:*, @contracts/arbitrum@workspace:packages/arbitrum-contracts": + version: 0.0.0-use.local + resolution: "@contracts/arbitrum@workspace:packages/arbitrum-contracts" + dependencies: + "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" + "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" + "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" + "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" + "@nomicfoundation/hardhat-verify": "npm:^1.1.1" + "@nomicfoundation/hardhat-viem": "npm:^3.0.1" + "@openassets/types": "npm:*" + "@openzeppelin/contracts": "npm:5.4.0" + "@typechain/ethers-v6": "npm:^0.5.1" + "@typechain/hardhat": "npm:^8.0.0" + "@types/chai": "npm:^4.3.11" + "@types/mocha": "npm:^10.0.10" + "@types/node": "npm:^25.0.3" + chai: "npm:^4.3.10" + dotenv: "npm:^17.2.3" + ethers: "npm:^6.16.0" + hardhat: "npm:^2.22.3" + hardhat-gas-reporter: "npm:^1.0.10" + solidity-coverage: "npm:^0.8.17" + ts-node: "npm:^10.9.2" + typechain: "npm:^8.3.2" + typescript: "npm:^5.9.3" + viem: "npm:^2.43.3" + languageName: unknown + linkType: soft + +"@contracts/mantle@npm:*, @contracts/mantle@workspace:packages/contracts": + version: 0.0.0-use.local + resolution: "@contracts/mantle@workspace:packages/contracts" + dependencies: + "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" + "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" + "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" + "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" + "@nomicfoundation/hardhat-verify": "npm:^1.1.1" + "@nomicfoundation/hardhat-viem": "npm:^3.0.1" + "@openassets/types": "npm:*" + "@openzeppelin/contracts": "npm:5.4.0" + "@typechain/ethers-v6": "npm:^0.5.1" + "@typechain/hardhat": "npm:^8.0.0" + "@types/chai": "npm:^4.3.11" + "@types/mocha": "npm:^10.0.10" + "@types/node": "npm:^25.0.3" + chai: "npm:^4.3.10" + dotenv: "npm:^17.2.3" + ethers: "npm:^6.16.0" + hardhat: "npm:^2.22.3" + hardhat-gas-reporter: "npm:^1.0.10" + solidity-coverage: "npm:^0.8.17" + ts-node: "npm:^10.9.2" + typechain: "npm:^8.3.2" + typescript: "npm:^5.9.3" + viem: "npm:^2.43.3" + languageName: unknown + linkType: soft + +"@contracts/stellar@npm:*, @contracts/stellar@workspace:packages/stellar-contracts": + version: 0.0.0-use.local + resolution: "@contracts/stellar@workspace:packages/stellar-contracts" + dependencies: + "@openassets/types": "npm:*" + "@types/node": "npm:^20.0.0" + ts-node: "npm:^10.9.0" + typescript: "npm:^5.0.0" + languageName: unknown + linkType: soft + "@cspotcode/source-map-support@npm:^0.8.0": version: 0.8.1 resolution: "@cspotcode/source-map-support@npm:0.8.1" @@ -1879,7 +1921,9 @@ __metadata: version: 0.0.0-use.local resolution: "@mantle/backend@workspace:packages/backend" dependencies: - "@mantle/contracts": "npm:*" + "@contracts/arbitrum": "npm:*" + "@contracts/mantle": "npm:*" + "@contracts/stellar": "npm:*" "@nestjs/bullmq": "npm:^11.0.4" "@nestjs/cli": "npm:^10.0.0" "@nestjs/common": "npm:^10.0.0" @@ -1944,45 +1988,6 @@ __metadata: languageName: unknown linkType: soft -"@mantle/contracts@npm:*, @mantle/contracts@workspace:packages/contracts": - version: 0.0.0-use.local - resolution: "@mantle/contracts@workspace:packages/contracts" - dependencies: - "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" - "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" - "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" - "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" - "@nomicfoundation/hardhat-verify": "npm:^1.1.1" - "@nomicfoundation/hardhat-viem": "npm:^3.0.1" - "@openzeppelin/contracts": "npm:5.4.0" - "@typechain/ethers-v6": "npm:^0.5.1" - "@typechain/hardhat": "npm:^8.0.0" - "@types/chai": "npm:^4.3.11" - "@types/mocha": "npm:^10.0.10" - "@types/node": "npm:^25.0.3" - chai: "npm:^4.3.10" - dotenv: "npm:^17.2.3" - ethers: "npm:^6.16.0" - hardhat: "npm:^2.22.3" - hardhat-gas-reporter: "npm:^1.0.10" - solidity-coverage: "npm:^0.8.17" - ts-node: "npm:^10.9.2" - typechain: "npm:^8.3.2" - typescript: "npm:^5.9.3" - viem: "npm:^2.43.3" - languageName: unknown - linkType: soft - -"@mantle/stellar-contracts@workspace:packages/stellar-contracts": - version: 0.0.0-use.local - resolution: "@mantle/stellar-contracts@workspace:packages/stellar-contracts" - dependencies: - "@types/node": "npm:^20.0.0" - ts-node: "npm:^10.9.0" - typescript: "npm:^5.0.0" - languageName: unknown - linkType: soft - "@microsoft/tsdoc@npm:^0.15.0": version: 0.15.1 resolution: "@microsoft/tsdoc@npm:0.15.1" From e31bec627e51e14f4ffcfb8f7b4b355531261ac0 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Sat, 28 Feb 2026 10:53:07 +0530 Subject: [PATCH 09/21] "updated type for networks" --- packages/backend/src/config/network.config.ts | 7 +- .../backend/src/modules/auth/dto/auth.dto.ts | 4 +- .../auth-multi-network.service.spec.ts | 2 +- .../auth/services/signature.service.ts | 3 +- .../src/modules/auth/utils/wallet.util.ts | 7 +- .../modules/blockchain/blockchain.module.ts | 3 + .../interfaces/chain-manager.interface.ts | 9 +++ .../blockchain/managers/arbitrum.manager.ts | 31 ++++++++ .../blockchain/managers/mantle.manager.ts | 32 +++++++++ .../blockchain/managers/stellar.manager.ts | 30 ++++++++ .../chain-manager-registry.service.ts | 72 +++++++++++++++++++ .../services/module-registry.service.ts | 2 +- packages/types/src/index.ts | 1 + packages/types/src/network/network.types.ts | 6 ++ tsconfig.json | 7 +- 15 files changed, 198 insertions(+), 18 deletions(-) create mode 100644 packages/backend/src/modules/blockchain/interfaces/chain-manager.interface.ts create mode 100644 packages/backend/src/modules/blockchain/managers/arbitrum.manager.ts create mode 100644 packages/backend/src/modules/blockchain/managers/mantle.manager.ts create mode 100644 packages/backend/src/modules/blockchain/managers/stellar.manager.ts create mode 100644 packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts create mode 100644 packages/types/src/network/network.types.ts diff --git a/packages/backend/src/config/network.config.ts b/packages/backend/src/config/network.config.ts index 3e1390ce..e544df05 100644 --- a/packages/backend/src/config/network.config.ts +++ b/packages/backend/src/config/network.config.ts @@ -1,10 +1,5 @@ import { registerAs } from '@nestjs/config'; - -export enum NetworkType { - MANTLE = 'mantle', - STELLAR = 'stellar', - ARBITRUM = 'arbitrum', -} +import { NetworkType } from '@openassets/types'; export default registerAs('network', () => { const networkType = (process.env.NETWORK_TYPE as NetworkType) || NetworkType.MANTLE; diff --git a/packages/backend/src/modules/auth/dto/auth.dto.ts b/packages/backend/src/modules/auth/dto/auth.dto.ts index a35d83bd..6363dde4 100644 --- a/packages/backend/src/modules/auth/dto/auth.dto.ts +++ b/packages/backend/src/modules/auth/dto/auth.dto.ts @@ -8,8 +8,8 @@ import { ValidatorConstraint, ValidatorConstraintInterface } from 'class-validator'; -import { UserRole } from '@openassets/types'; -import { detectNetworkType, NetworkType } from '../utils/wallet.util'; +import { UserRole, NetworkType } from '@openassets/types'; +import { detectNetworkType } from '../utils/wallet.util'; @ValidatorConstraint({ name: 'isWalletAddress', async: false }) export class IsWalletAddressConstraint implements ValidatorConstraintInterface { diff --git a/packages/backend/src/modules/auth/services/auth-multi-network.service.spec.ts b/packages/backend/src/modules/auth/services/auth-multi-network.service.spec.ts index 0ff8a98e..a5c6a0b4 100644 --- a/packages/backend/src/modules/auth/services/auth-multi-network.service.spec.ts +++ b/packages/backend/src/modules/auth/services/auth-multi-network.service.spec.ts @@ -11,7 +11,7 @@ import { BadRequestException } from '@nestjs/common'; import { mockDeep, DeepMockProxy } from 'jest-mock-extended'; import { Model } from 'mongoose'; import { ConfigService } from '@nestjs/config'; -import { NetworkType } from '../utils/wallet.util'; +import { NetworkType } from '@openassets/types'; describe('AuthService Multi-Network', () => { let service: AuthService; diff --git a/packages/backend/src/modules/auth/services/signature.service.ts b/packages/backend/src/modules/auth/services/signature.service.ts index 8148d2fd..59e4e4d6 100644 --- a/packages/backend/src/modules/auth/services/signature.service.ts +++ b/packages/backend/src/modules/auth/services/signature.service.ts @@ -1,5 +1,6 @@ import { Injectable, InternalServerErrorException } from '@nestjs/common'; -import { detectNetworkType, NetworkType } from '../utils/wallet.util'; +import { detectNetworkType } from '../utils/wallet.util'; +import { NetworkType } from '@openassets/types'; import { EvmVerificationAdapter } from '../adapters/evm-verification.adapter'; import { StellarVerificationAdapter } from '../adapters/stellar-verification.adapter'; diff --git a/packages/backend/src/modules/auth/utils/wallet.util.ts b/packages/backend/src/modules/auth/utils/wallet.util.ts index 641eeb6f..c1552aec 100644 --- a/packages/backend/src/modules/auth/utils/wallet.util.ts +++ b/packages/backend/src/modules/auth/utils/wallet.util.ts @@ -1,9 +1,4 @@ -export enum NetworkType { - MANTLE = 'mantle', - STELLAR = 'stellar', - ARBITRUM = 'arbitrum', - UNKNOWN = 'unknown', -} +import { NetworkType } from '@openassets/types'; /** * Detects the network type based on the wallet address format. diff --git a/packages/backend/src/modules/blockchain/blockchain.module.ts b/packages/backend/src/modules/blockchain/blockchain.module.ts index fcc19cad..41d7783a 100644 --- a/packages/backend/src/modules/blockchain/blockchain.module.ts +++ b/packages/backend/src/modules/blockchain/blockchain.module.ts @@ -12,6 +12,7 @@ import { EventListenerService } from './services/event-listener.service'; import { MethPriceService } from './services/meth-price.service'; import { StArbPriceService } from './services/starb-price.service'; import { NetworkRegistryService } from './services/network-registry.service'; +import { ChainManagerRegistry } from './services/chain-manager-registry.service'; import { EventProcessor } from './processors/event.processor'; import { Asset, AssetSchema, AssetDocument } from '../../database/schemas/asset.schema'; import { Bid, BidSchema } from '../../database/schemas/bid.schema'; @@ -75,6 +76,7 @@ export class BlockchainModule { providers: [ // Registry NetworkRegistryService, + ChainManagerRegistry, // Adapters (Determined at runtime via factory) { @@ -165,6 +167,7 @@ export class BlockchainModule { AUTH_VERIFICATION_ADAPTER, PAYMENT_ADAPTER, NetworkRegistryService, + ChainManagerRegistry, BlockchainService, WalletService, ContractLoaderService, diff --git a/packages/backend/src/modules/blockchain/interfaces/chain-manager.interface.ts b/packages/backend/src/modules/blockchain/interfaces/chain-manager.interface.ts new file mode 100644 index 00000000..a22cf96a --- /dev/null +++ b/packages/backend/src/modules/blockchain/interfaces/chain-manager.interface.ts @@ -0,0 +1,9 @@ +import { NetworkType } from '@openassets/types'; +import { ContractAdapter } from '../adapters/contract-adapter.interface'; + +export interface ChainManager { + getType(): NetworkType; + getContractAdapter(): ContractAdapter; + startBackgroundOperations(): Promise; + stopBackgroundOperations(): Promise; +} diff --git a/packages/backend/src/modules/blockchain/managers/arbitrum.manager.ts b/packages/backend/src/modules/blockchain/managers/arbitrum.manager.ts new file mode 100644 index 00000000..4d2e53d2 --- /dev/null +++ b/packages/backend/src/modules/blockchain/managers/arbitrum.manager.ts @@ -0,0 +1,31 @@ +import { Logger } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { NetworkType } from '@openassets/types'; +import { ChainManager } from '../interfaces/chain-manager.interface'; +import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { EvmContractAdapter } from '../adapters/evm/evm-contract-loader.adapter'; + +export class ArbitrumChainManager implements ChainManager { + private readonly logger = new Logger(ArbitrumChainManager.name); + private readonly contractAdapter: ContractAdapter; + + constructor(private configService: ConfigService) { + this.contractAdapter = new EvmContractAdapter(this.configService); + } + + getType(): NetworkType { + return NetworkType.ARBITRUM; + } + + getContractAdapter(): ContractAdapter { + return this.contractAdapter; + } + + async startBackgroundOperations(): Promise { + this.logger.log('Starting Arbitrum background operations...'); + } + + async stopBackgroundOperations(): Promise { + this.logger.log('Stopping Arbitrum background operations...'); + } +} diff --git a/packages/backend/src/modules/blockchain/managers/mantle.manager.ts b/packages/backend/src/modules/blockchain/managers/mantle.manager.ts new file mode 100644 index 00000000..48e82557 --- /dev/null +++ b/packages/backend/src/modules/blockchain/managers/mantle.manager.ts @@ -0,0 +1,32 @@ +import { Logger } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { NetworkType } from '@openassets/types'; +import { ChainManager } from '../interfaces/chain-manager.interface'; +import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { EvmContractAdapter } from '../adapters/evm/evm-contract-loader.adapter'; + +export class MantleChainManager implements ChainManager { + private readonly logger = new Logger(MantleChainManager.name); + private readonly contractAdapter: ContractAdapter; + + constructor(private configService: ConfigService) { + this.contractAdapter = new EvmContractAdapter(this.configService); + } + + getType(): NetworkType { + return NetworkType.MANTLE; + } + + getContractAdapter(): ContractAdapter { + return this.contractAdapter; + } + + async startBackgroundOperations(): Promise { + this.logger.log('Starting Mantle background operations...'); + // TODO: Move polling logic here in next step + } + + async stopBackgroundOperations(): Promise { + this.logger.log('Stopping Mantle background operations...'); + } +} diff --git a/packages/backend/src/modules/blockchain/managers/stellar.manager.ts b/packages/backend/src/modules/blockchain/managers/stellar.manager.ts new file mode 100644 index 00000000..f4df1a29 --- /dev/null +++ b/packages/backend/src/modules/blockchain/managers/stellar.manager.ts @@ -0,0 +1,30 @@ +import { Logger } from '@nestjs/common'; +import { NetworkType } from '@openassets/types'; +import { ChainManager } from '../interfaces/chain-manager.interface'; +import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { StellarContractAdapter } from '../adapters/stellar/stellar-contract-loader.adapter'; + +export class StellarChainManager implements ChainManager { + private readonly logger = new Logger(StellarChainManager.name); + private readonly contractAdapter: ContractAdapter; + + constructor() { + this.contractAdapter = new StellarContractAdapter(); + } + + getType(): NetworkType { + return NetworkType.STELLAR; + } + + getContractAdapter(): ContractAdapter { + return this.contractAdapter; + } + + async startBackgroundOperations(): Promise { + this.logger.log('Starting Stellar background operations...'); + } + + async stopBackgroundOperations(): Promise { + this.logger.log('Stopping Stellar background operations...'); + } +} diff --git a/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts b/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts new file mode 100644 index 00000000..2668536e --- /dev/null +++ b/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts @@ -0,0 +1,72 @@ +import { Injectable, Logger, OnModuleInit, OnModuleDestroy } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { NetworkType } from '@openassets/types'; +import { ChainManager } from '../interfaces/chain-manager.interface'; +import { MantleChainManager } from '../managers/mantle.manager'; +import { ArbitrumChainManager } from '../managers/arbitrum.manager'; +import { StellarChainManager } from '../managers/stellar.manager'; + +@Injectable() +export class ChainManagerRegistry implements OnModuleInit, OnModuleDestroy { + private readonly logger = new Logger(ChainManagerRegistry.name); + private readonly managers: Map = new Map(); + + constructor(private configService: ConfigService) {} + + async onModuleInit() { + this.initializeManagers(); + await this.startOperations(); + } + + async onModuleDestroy() { + await this.stopOperations(); + } + + private initializeManagers() { + // For now, we still use NETWORK_TYPE, but ENABLED_NETWORKS will replace it in Pillar 3 + const enabledNetworksStr = this.configService.get('ENABLED_NETWORKS') || + this.configService.get('network.networkType') || + 'mantle'; + + const enabledNetworks = enabledNetworksStr.split(',').map(n => n.trim() as NetworkType); + + if (enabledNetworks.includes(NetworkType.MANTLE)) { + this.managers.set(NetworkType.MANTLE, new MantleChainManager(this.configService)); + this.logger.log('MantleChainManager initialized'); + } + + if (enabledNetworks.includes(NetworkType.ARBITRUM)) { + this.managers.set(NetworkType.ARBITRUM, new ArbitrumChainManager(this.configService)); + this.logger.log('ArbitrumChainManager initialized'); + } + + if (enabledNetworks.includes(NetworkType.STELLAR)) { + this.managers.set(NetworkType.STELLAR, new StellarChainManager()); + this.logger.log('StellarChainManager initialized'); + } + } + + private async startOperations() { + for (const manager of this.managers.values()) { + await manager.startBackgroundOperations(); + } + } + + private async stopOperations() { + for (const manager of this.managers.values()) { + await manager.stopBackgroundOperations(); + } + } + + getManager(type: NetworkType): ChainManager { + const manager = this.managers.get(type); + if (!manager) { + throw new Error(`Chain manager for ${type} not initialized`); + } + return manager; + } + + getEnabledNetworks(): NetworkType[] { + return Array.from(this.managers.keys()); + } +} diff --git a/packages/backend/src/modules/registry/services/module-registry.service.ts b/packages/backend/src/modules/registry/services/module-registry.service.ts index ccb8268e..ffb23703 100644 --- a/packages/backend/src/modules/registry/services/module-registry.service.ts +++ b/packages/backend/src/modules/registry/services/module-registry.service.ts @@ -1,7 +1,7 @@ import { Injectable, Logger, OnModuleInit } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { ModuleRef } from '@nestjs/core'; -import { NetworkType } from '../../../config/network.config'; +import { NetworkType } from '@openassets/types'; import { ASSET_ORIGINATION_SERVICE, MANTLE_ASSET_ORIGINATION_TOKEN, diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index a582c65c..d602d4cb 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -16,5 +16,6 @@ export * from './domain/compliance.types'; export * from './domain/numeric.types'; // Network +export * from './network/network.types'; export * from './network/evm.types'; export * from './network/stellar.types'; diff --git a/packages/types/src/network/network.types.ts b/packages/types/src/network/network.types.ts new file mode 100644 index 00000000..b53ced4b --- /dev/null +++ b/packages/types/src/network/network.types.ts @@ -0,0 +1,6 @@ +export enum NetworkType { + MANTLE = 'mantle', + STELLAR = 'stellar', + ARBITRUM = 'arbitrum', + UNKNOWN = 'unknown', +} diff --git a/tsconfig.json b/tsconfig.json index 42cb7eb7..4ef5a563 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,12 @@ "paths": { "@openassets/types": ["./packages/types/src/index.ts"], "@openassets/types/*": ["./packages/types/src/*"], - "@mantle/contracts/*": ["./packages/contracts/generated/*"] + "@contracts/mantle": ["./packages/contracts/index.ts"], + "@contracts/mantle/*": ["./packages/contracts/*"], + "@contracts/arbitrum": ["./packages/arbitrum-contracts/index.ts"], + "@contracts/arbitrum/*": ["./packages/arbitrum-contracts/*"], + "@contracts/stellar": ["./packages/stellar-contracts/index.ts"], + "@contracts/stellar/*": ["./packages/stellar-contracts/*"] }, "types": ["jest", "node", "multer"] } From 5875d403cada923ffaea2295827318481583f88c Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Sat, 28 Feb 2026 11:42:02 +0530 Subject: [PATCH 10/21] "user sessions, schemas , portfolio migrated" --- .../src/database/schemas/asset.schema.ts | 5 +- .../src/database/schemas/bid.schema.ts | 6 +- .../schemas/leverage-position.schema.ts | 6 +- .../src/database/schemas/purchase.schema.ts | 5 +- .../src/database/schemas/session.schema.ts | 12 +- .../src/database/schemas/settlement.schema.ts | 5 +- .../schemas/solvency-position.schema.ts | 6 +- .../schemas/user-yield-claim.schema.ts | 6 +- .../src/database/schemas/user.schema.ts | 10 +- .../database/schemas/yield-claim.schema.ts | 5 + .../services/trustline-approval.service.ts | 8 +- .../src/modules/auth/services/auth.service.ts | 43 +++--- .../modules/blockchain/blockchain.module.ts | 14 +- .../middleware/network-context.middleware.ts | 29 ++++ .../blockchain/processors/event.processor.ts | 25 ++-- .../services/network-context.service.ts | 20 +++ .../kyc/processors/verification.processor.ts | 7 +- .../src/modules/kyc/services/kyc.service.ts | 5 +- .../services/leverage-position.service.ts | 5 +- .../services/bid-tracker.service.ts | 12 +- .../services/purchase-tracker.service.ts | 18 ++- .../services/solvency-position.service.ts | 14 +- .../controllers/trustline.controller.ts | 9 +- .../controllers/user-portfolio.controller.ts | 7 +- .../schemas/user-portfolio.schema.ts | 9 +- .../services/user-portfolio.service.ts | 124 ++++++++++-------- .../services/user-yield-claim.service.ts | 4 +- packages/types/src/domain/user.types.ts | 2 + 28 files changed, 280 insertions(+), 141 deletions(-) create mode 100644 packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts create mode 100644 packages/backend/src/modules/blockchain/services/network-context.service.ts diff --git a/packages/backend/src/database/schemas/asset.schema.ts b/packages/backend/src/database/schemas/asset.schema.ts index 547a432b..b586949e 100644 --- a/packages/backend/src/database/schemas/asset.schema.ts +++ b/packages/backend/src/database/schemas/asset.schema.ts @@ -10,6 +10,7 @@ import { IAssetFiles, IAssetCheckpoints, WalletAddress, + NetworkType, } from '@openassets/types'; export type AssetDocument = Asset & Document; @@ -28,8 +29,8 @@ export class Asset implements IAssetEVM, IAssetStellar { @Prop({ required: true, enum: AssetType, type: String }) assetType!: AssetType; - @Prop({ type: String, enum: ['mantle', 'stellar', 'arbitrum'], default: 'mantle' }) - network!: string; + @Prop({ type: String, enum: NetworkType, default: NetworkType.MANTLE }) + network!: NetworkType; @Prop({ type: Object }) metadata!: IAssetMetadata; diff --git a/packages/backend/src/database/schemas/bid.schema.ts b/packages/backend/src/database/schemas/bid.schema.ts index 509b3a8c..fbc9d0f3 100644 --- a/packages/backend/src/database/schemas/bid.schema.ts +++ b/packages/backend/src/database/schemas/bid.schema.ts @@ -1,6 +1,6 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; -import { BidStatus, WalletAddress } from '@openassets/types'; +import { BidStatus, WalletAddress, NetworkType } from '@openassets/types'; export type BidDocument = Bid & Document; @@ -36,8 +36,8 @@ export class Bid { @Prop({ type: String }) settlementTxHash?: string; // Transaction hash for settlement - @Prop({ type: String, enum: ['mantle', 'stellar', 'arbitrum'], default: 'mantle', index: true }) - network!: string; + @Prop({ type: String, enum: NetworkType, default: NetworkType.MANTLE, index: true }) + network!: NetworkType; @Prop({ type: Date }) settledAt?: Date; // When the bid was settled diff --git a/packages/backend/src/database/schemas/leverage-position.schema.ts b/packages/backend/src/database/schemas/leverage-position.schema.ts index 6b4e0db6..0c19e917 100644 --- a/packages/backend/src/database/schemas/leverage-position.schema.ts +++ b/packages/backend/src/database/schemas/leverage-position.schema.ts @@ -1,6 +1,6 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; -import { LeveragePositionStatus, LeveragePositionHealth, WalletAddress } from '@openassets/types'; +import { LeveragePositionStatus, LeveragePositionHealth, WalletAddress, NetworkType } from '@openassets/types'; export type LeveragePositionDocument = LeveragePosition & Document; @@ -77,6 +77,9 @@ export class LeveragePosition extends Document { @Prop({ required: true, index: true }) assetId!: string; // Asset ID reference + @Prop({ type: String, enum: NetworkType, default: NetworkType.MANTLE, index: true }) + network!: NetworkType; + @Prop({ required: true }) rwaTokenAddress!: string; // RWA token contract address @@ -251,3 +254,4 @@ LeveragePositionSchema.index({ assetId: 1, status: 1 }); LeveragePositionSchema.index({ healthStatus: 1, status: 1 }); LeveragePositionSchema.index({ positionId: 1 }, { unique: true }); LeveragePositionSchema.index({ createdAt: -1 }); +LeveragePositionSchema.index({ userAddress: 1, network: 1 }); diff --git a/packages/backend/src/database/schemas/purchase.schema.ts b/packages/backend/src/database/schemas/purchase.schema.ts index 55f5b406..e33876a2 100644 --- a/packages/backend/src/database/schemas/purchase.schema.ts +++ b/packages/backend/src/database/schemas/purchase.schema.ts @@ -1,5 +1,6 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; +import { NetworkType } from '@openassets/types'; export type PurchaseDocument = Purchase & Document; @@ -47,8 +48,8 @@ export class Purchase { @Prop() soldP2PTradeId?: string; // Reference to P2PTrade when sold - @Prop({ type: String, enum: ['mantle', 'stellar', 'arbitrum'], default: 'mantle' }) - network!: string; + @Prop({ type: String, enum: NetworkType, default: NetworkType.MANTLE }) + network!: NetworkType; @Prop({ type: Boolean }) rawPrecise?: boolean; diff --git a/packages/backend/src/database/schemas/session.schema.ts b/packages/backend/src/database/schemas/session.schema.ts index cd9da9f0..9e44dbfa 100644 --- a/packages/backend/src/database/schemas/session.schema.ts +++ b/packages/backend/src/database/schemas/session.schema.ts @@ -1,17 +1,21 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document, Types } from 'mongoose'; +import { NetworkType } from '@openassets/types'; import { User } from './user.schema'; export type UserSessionDocument = UserSession & Document; @Schema({ timestamps: true }) export class UserSession { - @Prop({ type: Types.ObjectId, ref: 'User', required: true, unique: true, index: true }) + @Prop({ type: Types.ObjectId, ref: 'User', required: true, index: true }) user!: Types.ObjectId; - @Prop({ required: true, unique: true, index: true }) + @Prop({ required: true, index: true }) walletAddress!: string; + @Prop({ required: true, enum: NetworkType, index: true, type: String }) + network!: NetworkType; + @Prop({ type: { jti: String, @@ -47,3 +51,7 @@ export class UserSession { } export const UserSessionSchema = SchemaFactory.createForClass(UserSession); + +// Composite unique indexes +UserSessionSchema.index({ user: 1, network: 1 }, { unique: true }); +UserSessionSchema.index({ walletAddress: 1, network: 1 }, { unique: true }); diff --git a/packages/backend/src/database/schemas/settlement.schema.ts b/packages/backend/src/database/schemas/settlement.schema.ts index 824e6ea1..dd71840e 100644 --- a/packages/backend/src/database/schemas/settlement.schema.ts +++ b/packages/backend/src/database/schemas/settlement.schema.ts @@ -1,6 +1,6 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; -import { SettlementStatus } from '@openassets/types'; +import { SettlementStatus, NetworkType } from '@openassets/types'; export type SettlementDocument = Settlement & Document; @@ -12,6 +12,9 @@ export class Settlement { @Prop({ required: true }) tokenAddress!: string; + @Prop({ type: String, enum: NetworkType, default: NetworkType.MANTLE, index: true }) + network!: NetworkType; + @Prop({ required: true }) settlementAmount!: number; // Full settlement received from debtor (₹50L) diff --git a/packages/backend/src/database/schemas/solvency-position.schema.ts b/packages/backend/src/database/schemas/solvency-position.schema.ts index df26011d..36579f78 100644 --- a/packages/backend/src/database/schemas/solvency-position.schema.ts +++ b/packages/backend/src/database/schemas/solvency-position.schema.ts @@ -1,7 +1,7 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; import { Settlement } from './settlement.schema'; -import { TokenType, SolvencyHealthStatus, SolvencyPositionStatus, WalletAddress } from '@openassets/types'; +import { TokenType, SolvencyHealthStatus, SolvencyPositionStatus, WalletAddress, NetworkType } from '@openassets/types'; export type SolvencyPositionDocument = SolvencyPosition & Document; @@ -13,6 +13,9 @@ export class SolvencyPosition { @Prop({ required: true, index: true, type: String }) userAddress!: WalletAddress; // Wallet address + @Prop({ type: String, enum: NetworkType, default: NetworkType.MANTLE, index: true }) + network!: NetworkType; + @Prop({ required: true }) collateralTokenAddress!: string; // RWA or PrivateAsset token address @@ -169,3 +172,4 @@ export const SolvencyPositionSchema = SchemaFactory.createForClass(SolvencyPosit SolvencyPositionSchema.index({ userAddress: 1, status: 1 }); // User's positions SolvencyPositionSchema.index({ healthStatus: 1, status: 1 }); // Liquidatable positions SolvencyPositionSchema.index({ collateralTokenAddress: 1 }); // Positions by token +SolvencyPositionSchema.index({ userAddress: 1, network: 1 }); diff --git a/packages/backend/src/database/schemas/user-yield-claim.schema.ts b/packages/backend/src/database/schemas/user-yield-claim.schema.ts index 61da7293..ec2de918 100644 --- a/packages/backend/src/database/schemas/user-yield-claim.schema.ts +++ b/packages/backend/src/database/schemas/user-yield-claim.schema.ts @@ -1,6 +1,6 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; -import { YieldClaimStatus, WalletAddress } from '@openassets/types'; +import { YieldClaimStatus, WalletAddress, NetworkType } from '@openassets/types'; export type UserYieldClaimDocument = UserYieldClaim & Document; @@ -15,6 +15,9 @@ export class UserYieldClaim { @Prop({ required: true, index: true }) assetId!: string; // Asset ID for reference + @Prop({ type: String, enum: NetworkType, default: NetworkType.MANTLE, index: true }) + network!: NetworkType; + @Prop({ required: true }) tokensBurned!: string; // Amount of RWA tokens burned (in wei) @@ -50,3 +53,4 @@ UserYieldClaimSchema.index({ userAddress: 1, tokenAddress: 1 }); UserYieldClaimSchema.index({ assetId: 1 }); UserYieldClaimSchema.index({ transactionHash: 1 }, { unique: true }); UserYieldClaimSchema.index({ createdAt: -1 }); +UserYieldClaimSchema.index({ userAddress: 1, network: 1 }); diff --git a/packages/backend/src/database/schemas/user.schema.ts b/packages/backend/src/database/schemas/user.schema.ts index bcad14be..560924c0 100644 --- a/packages/backend/src/database/schemas/user.schema.ts +++ b/packages/backend/src/database/schemas/user.schema.ts @@ -1,14 +1,17 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; -import { UserRole, IUser, IKycDocument, KycStatus, WalletAddress } from '@openassets/types'; +import { UserRole, IUser, IKycDocument, KycStatus, WalletAddress, NetworkType } from '@openassets/types'; export type UserDocument = User & Document; @Schema({ timestamps: true }) export class User implements IUser { - @Prop({ required: true, unique: true, index: true, type: String }) + @Prop({ required: true, index: true, type: String }) walletAddress!: WalletAddress; + @Prop({ required: true, enum: NetworkType, index: true, type: String }) + network!: NetworkType; + @Prop({ required: true, enum: UserRole, default: UserRole.INVESTOR, type: String }) role!: UserRole; @@ -62,3 +65,6 @@ export class User implements IUser { } export const UserSchema = SchemaFactory.createForClass(User); + +// Composite unique index for walletAddress and network +UserSchema.index({ walletAddress: 1, network: 1 }, { unique: true }); diff --git a/packages/backend/src/database/schemas/yield-claim.schema.ts b/packages/backend/src/database/schemas/yield-claim.schema.ts index 4a80dee2..9cf7e4b7 100644 --- a/packages/backend/src/database/schemas/yield-claim.schema.ts +++ b/packages/backend/src/database/schemas/yield-claim.schema.ts @@ -1,5 +1,6 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; +import { NetworkType } from '@openassets/types'; export type YieldClaimDocument = YieldClaim & Document; @@ -17,6 +18,9 @@ export class YieldClaim { @Prop({ required: true }) tokenAddress!: string; + @Prop({ type: String, enum: NetworkType, default: NetworkType.MANTLE, index: true }) + network!: NetworkType; + @Prop({ required: true }) tokensBurned!: string; // Amount of tokens burned (wei format, 18 decimals) @@ -59,3 +63,4 @@ export const YieldClaimSchema = SchemaFactory.createForClass(YieldClaim); YieldClaimSchema.index({ investorWallet: 1, assetId: 1 }); YieldClaimSchema.index({ createdAt: -1 }); YieldClaimSchema.index({ tokenAddress: 1 }); +YieldClaimSchema.index({ investorWallet: 1, network: 1 }); diff --git a/packages/backend/src/modules/admin/services/trustline-approval.service.ts b/packages/backend/src/modules/admin/services/trustline-approval.service.ts index d509fae3..c581037a 100644 --- a/packages/backend/src/modules/admin/services/trustline-approval.service.ts +++ b/packages/backend/src/modules/admin/services/trustline-approval.service.ts @@ -10,7 +10,7 @@ import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; import { UserPortfolioService } from '../../user-portfolio/services/user-portfolio.service'; import { NetworkRegistryService } from '../../blockchain/services/network-registry.service'; import { NotificationService } from '../../notifications/services/notification.service'; -import { NotificationType, NotificationSeverity, NotificationAction } from '@openassets/types'; +import { NotificationType, NotificationSeverity, NotificationAction, NetworkType } from '@openassets/types'; interface TrustlineRequestFilters { status?: TrustlineRequestStatus; @@ -128,7 +128,7 @@ export class TrustlineApprovalService { this.logger.log(`Created trustline request ${requestId} for investor ${investorAddress} and asset ${assetId}`); // Update portfolio: add assetId to requested_trustlines - await this.userPortfolioService.addRequestedTrustline(investorAddress, network, assetId); + await this.userPortfolioService.addRequestedTrustline(investorAddress, assetId, network as NetworkType); // Notify all admins await this.notifyAllAdmins( @@ -209,8 +209,8 @@ export class TrustlineApprovalService { // Update portfolio: move from requested to approved await this.userPortfolioService.approveTrustline( request.investorAddress, - request.network, - request.assetId + request.assetId, + request.network as NetworkType ); // Notify investor diff --git a/packages/backend/src/modules/auth/services/auth.service.ts b/packages/backend/src/modules/auth/services/auth.service.ts index 7e176494..871aae55 100644 --- a/packages/backend/src/modules/auth/services/auth.service.ts +++ b/packages/backend/src/modules/auth/services/auth.service.ts @@ -12,10 +12,11 @@ import { v4 as uuidv4 } from 'uuid'; import { readFileSync } from 'fs'; import { join } from 'path'; import { User, UserDocument } from '../../../database/schemas/user.schema'; -import { UserRole } from '@openassets/types'; +import { UserRole, NetworkType } from '@openassets/types'; import { UserSession, UserSessionDocument } from '../../../database/schemas/session.schema'; import { RedisService } from '../../redis/redis.service'; import { SignatureService } from './signature.service'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { LoginDto, RefreshDto } from '../dto/auth.dto'; import { detectNetworkType, normalizeAddress } from '../utils/wallet.util'; @@ -30,6 +31,7 @@ export class AuthService { private configService: ConfigService, private redisService: RedisService, private signatureService: SignatureService, + private networkContextService: NetworkContextService, ) { // Load approved admins from config file try { @@ -51,14 +53,16 @@ export class AuthService { async createChallenge(walletAddress: string, role?: UserRole): Promise<{ message: string; nonce: string }> { const normalizedAddress = normalizeAddress(walletAddress); + const network = this.networkContextService.getNetwork(); // Validate admin role request if (role === UserRole.ADMIN && !this.isApprovedAdmin(normalizedAddress)) { throw new ForbiddenException('Wallet address not authorized for admin role'); } const nonce = uuidv4(); + const networkType = network === NetworkType.MANTLE ? 'Mantle' : network === NetworkType.ARBITRUM ? 'Arbitrum' : 'Stellar'; const appName = this.configService.get('APP_NAME', 'Open Assets Platform'); - const message = `Sign this message to authenticate with ${appName}.\nNonce: ${nonce}\nTimestamp: ${Date.now()}`; + const message = `Sign this message to authenticate with ${appName} on ${networkType}.\nNonce: ${nonce}\nTimestamp: ${Date.now()}`; // Store nonce and role preference in Redis await this.redisService.set(`nonce:${normalizedAddress}`, nonce, 60); @@ -72,6 +76,7 @@ export class AuthService { async login(loginDto: LoginDto) { const { walletAddress, signature, message } = loginDto; const normalizedAddress = normalizeAddress(walletAddress); + const network = this.networkContextService.getNetwork(); // 1. Extract Nonce from message const nonceMatch = message.match(/Nonce: ([a-f0-9-]+)/); @@ -107,7 +112,7 @@ export class AuthService { } // 4. Find or Create User - let user = await this.userModel.findOne({ walletAddress: normalizedAddress }); + let user = await this.userModel.findOne({ walletAddress: normalizedAddress, network }); if (!user) { // Determine final role - only allow ADMIN if wallet is approved const finalRole = rolePreference === UserRole.ADMIN && this.isApprovedAdmin(normalizedAddress) @@ -116,6 +121,7 @@ export class AuthService { user = await this.userModel.create({ walletAddress: normalizedAddress, + network, role: finalRole, kyc: false, }); @@ -140,8 +146,10 @@ export class AuthService { if (!user) { throw new UnauthorizedException('User not found'); } + + const network = user.network; - const session = await this.sessionModel.findOne({ user: user._id }); + const session = await this.sessionModel.findOne({ user: user._id, network }); if (!session) { throw new UnauthorizedException('Session not found'); } @@ -156,9 +164,9 @@ export class AuthService { } // 4. Invalidate old access token if active - const activeAccessTokenJti = await this.redisService.get(`session:active:${user.walletAddress}`); + const activeAccessTokenJti = await this.redisService.get(`session:active:${network}:${user.walletAddress}`); if (activeAccessTokenJti) { - await this.redisService.del(`access:${user.walletAddress}:${activeAccessTokenJti}`); + await this.redisService.del(`access:${network}:${user.walletAddress}:${activeAccessTokenJti}`); } // 5. Generate NEW tokens and rotate session @@ -174,18 +182,19 @@ export class AuthService { } async logout(user: UserDocument) { + const network = user.network; // Clear Redis session - const activeAccessTokenJti = await this.redisService.get(`session:active:${user.walletAddress}`); + const activeAccessTokenJti = await this.redisService.get(`session:active:${network}:${user.walletAddress}`); if (activeAccessTokenJti) { - await this.redisService.del(`access:${user.walletAddress}:${activeAccessTokenJti}`); - await this.redisService.del(`session:active:${user.walletAddress}`); + await this.redisService.del(`access:${network}:${user.walletAddress}:${activeAccessTokenJti}`); + await this.redisService.del(`session:active:${network}:${user.walletAddress}`); } // Clear MongoDB Refresh Token in UserSession - const session = await this.sessionModel.findOne({ user: user._id }); + const session = await this.sessionModel.findOne({ user: user._id, network }); if (session) { await this.sessionModel.updateOne( - { user: user._id }, + { user: user._id, network }, { $unset: { currentRefreshToken: "" }, $push: { @@ -205,13 +214,14 @@ export class AuthService { const accessJti = uuidv4(); const refreshJti = uuidv4(); const deviceHash = 'unknown'; + const network = user.network; const accessTokenExpiresIn = parseInt(this.configService.get('JWT_ACCESS_TOKEN_EXPIRES_IN', '900')); const accessPayload = { sub: user._id, wallet: user.walletAddress, - network: detectNetworkType(user.walletAddress), + network: network, role: user.role, kyc: user.kyc, jti: accessJti, @@ -232,20 +242,21 @@ export class AuthService { // Store Access Token in Redis await this.redisService.set( - `access:${user.walletAddress}:${accessJti}`, - JSON.stringify({ userId: user._id, jti: accessJti, wallet: user.walletAddress }), + `access:${network}:${user.walletAddress}:${accessJti}`, + JSON.stringify({ userId: user._id, jti: accessJti, wallet: user.walletAddress, network }), accessTokenExpiresIn ); - await this.redisService.set(`session:active:${user.walletAddress}`, accessJti, accessTokenExpiresIn); + await this.redisService.set(`session:active:${network}:${user.walletAddress}`, accessJti, accessTokenExpiresIn); // Store Refresh Token in MongoDB UserSession // Upsert session document await this.sessionModel.updateOne( - { user: user._id }, + { user: user._id, network }, { $set: { user: user._id, walletAddress: user.walletAddress, + network, currentRefreshToken: { jti: refreshJti, exp: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), diff --git a/packages/backend/src/modules/blockchain/blockchain.module.ts b/packages/backend/src/modules/blockchain/blockchain.module.ts index 41d7783a..92d0487c 100644 --- a/packages/backend/src/modules/blockchain/blockchain.module.ts +++ b/packages/backend/src/modules/blockchain/blockchain.module.ts @@ -1,4 +1,4 @@ -import { Module, Global, DynamicModule, Provider } from '@nestjs/common'; +import { Module, Global, DynamicModule, Provider, MiddlewareConsumer, NestModule } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { MongooseModule } from '@nestjs/mongoose'; import { BullModule } from '@nestjs/bullmq'; @@ -13,6 +13,8 @@ import { MethPriceService } from './services/meth-price.service'; import { StArbPriceService } from './services/starb-price.service'; import { NetworkRegistryService } from './services/network-registry.service'; import { ChainManagerRegistry } from './services/chain-manager-registry.service'; +import { NetworkContextService } from './services/network-context.service'; +import { NetworkContextMiddleware } from './middleware/network-context.middleware'; import { EventProcessor } from './processors/event.processor'; import { Asset, AssetSchema, AssetDocument } from '../../database/schemas/asset.schema'; import { Bid, BidSchema } from '../../database/schemas/bid.schema'; @@ -50,7 +52,7 @@ import { getModelToken } from '@nestjs/mongoose'; @Global() @Module({}) -export class BlockchainModule { +export class BlockchainModule implements NestModule { static forRoot(): DynamicModule { return { module: BlockchainModule, @@ -77,6 +79,7 @@ export class BlockchainModule { // Registry NetworkRegistryService, ChainManagerRegistry, + NetworkContextService, // Adapters (Determined at runtime via factory) { @@ -168,6 +171,7 @@ export class BlockchainModule { PAYMENT_ADAPTER, NetworkRegistryService, ChainManagerRegistry, + NetworkContextService, BlockchainService, WalletService, ContractLoaderService, @@ -178,4 +182,10 @@ export class BlockchainModule { ], }; } + + configure(consumer: MiddlewareConsumer) { + consumer + .apply(NetworkContextMiddleware) + .forRoutes('*'); + } } diff --git a/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts b/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts new file mode 100644 index 00000000..4ff932c8 --- /dev/null +++ b/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts @@ -0,0 +1,29 @@ +import { Injectable, NestMiddleware, BadRequestException } from '@nestjs/common'; +import { Request, Response, NextFunction } from 'express'; +import { NetworkType } from '@openassets/types'; +import { NetworkContextService } from '../services/network-context.service'; + +@Injectable() +export class NetworkContextMiddleware implements NestMiddleware { + constructor(private readonly networkContextService: NetworkContextService) {} + + use(req: Request, res: Response, next: NextFunction) { + const networkHeader = req.header('X-Network')?.toLowerCase(); + + let network: NetworkType = NetworkType.MANTLE; + + if (networkHeader) { + if (Object.values(NetworkType).includes(networkHeader as NetworkType)) { + network = networkHeader as NetworkType; + } else { + throw new BadRequestException(`Invalid X-Network header: ${networkHeader}`); + } + } + + this.networkContextService.runWithNetwork(network, () => { + // Add network to request object for easy access if needed + (req as any).network = network; + next(); + }); + } +} diff --git a/packages/backend/src/modules/blockchain/processors/event.processor.ts b/packages/backend/src/modules/blockchain/processors/event.processor.ts index 88ebfffa..b0d9c213 100644 --- a/packages/backend/src/modules/blockchain/processors/event.processor.ts +++ b/packages/backend/src/modules/blockchain/processors/event.processor.ts @@ -19,7 +19,8 @@ import { NotificationType, NotificationSeverity, NotificationAction, - SolvencyPositionStatus as PositionStatus + SolvencyPositionStatus as PositionStatus, + NetworkType } from '@openassets/types'; import { SolvencyPositionService } from '../../solvency/services/solvency-position.service'; import { UserPortfolioService } from '../../user-portfolio/services/user-portfolio.service'; @@ -380,7 +381,7 @@ export class EventProcessor extends WorkerHost { // Update portfolio try { - await this.userPortfolioService.updateOnPurchase(purchase, asset.network || 'mantle'); + await this.userPortfolioService.updateOnPurchase(purchase, asset.network || NetworkType.MANTLE); } catch (error: any) { this.logger.error(`[P2P Event Processor] Failed to update portfolio: ${error.message}`); } @@ -500,7 +501,7 @@ export class EventProcessor extends WorkerHost { // Update portfolio for buyer try { - await this.userPortfolioService.updateOnPurchase(buyerPurchase, asset?.network || 'mantle'); + await this.userPortfolioService.updateOnPurchase(buyerPurchase, asset?.network || NetworkType.MANTLE); } catch (error: any) { this.logger.error(`[P2P Event Processor] Failed to update buyer portfolio: ${error.message}`); } @@ -529,7 +530,7 @@ export class EventProcessor extends WorkerHost { this.logger.log(`[P2P Event Processor] āœ… Updated seller's (maker) lock record to SECONDARY_MARKET sale: ${trade.seller.substring(0, 8)}...`); // Update portfolio for seller try { - await this.userPortfolioService.updateOnPurchase(sellLockRecord as any, asset?.network || 'mantle'); + await this.userPortfolioService.updateOnPurchase(sellLockRecord as any, asset?.network || NetworkType.MANTLE); } catch (error: any) { this.logger.error(`[P2P Event Processor] Failed to update seller portfolio: ${error.message}`); } @@ -554,7 +555,7 @@ export class EventProcessor extends WorkerHost { this.logger.warn(`[P2P Event Processor] Created fallback purchase record for seller.`); try { - await this.userPortfolioService.updateOnPurchase(fallbackPurchase, asset?.network || 'mantle'); + await this.userPortfolioService.updateOnPurchase(fallbackPurchase, asset?.network || NetworkType.MANTLE); } catch (error: any) { this.logger.error(`[P2P Event Processor] Failed to update seller portfolio (fallback): ${error.message}`); } @@ -581,7 +582,7 @@ export class EventProcessor extends WorkerHost { this.logger.log(`[P2P Event Processor] āœ… Created new purchase record for seller (taker): ${trade.seller.substring(0, 8)}... (-${amountFmt} tokens)`); try { - await this.userPortfolioService.updateOnPurchase(takerPurchase, asset?.network || 'mantle'); + await this.userPortfolioService.updateOnPurchase(takerPurchase, asset?.network || NetworkType.MANTLE); } catch (error: any) { this.logger.error(`[P2P Event Processor] Failed to update seller (taker) portfolio: ${error.message}`); } @@ -704,7 +705,7 @@ export class EventProcessor extends WorkerHost { // Update portfolio try { - await this.userPortfolioService.updateOnPurchase(purchase, asset?.network || 'mantle'); + await this.userPortfolioService.updateOnPurchase(purchase, asset?.network || NetworkType.MANTLE); } catch (error: any) { this.logger.error(`[P2P Event Processor] Failed to update portfolio: ${error.message}`); } @@ -758,7 +759,7 @@ export class EventProcessor extends WorkerHost { await this.solvencyPositionService.syncPositionWithBlockchain(positionId); this.logger.log(`āœ… Position ${positionId} synced after borrow event`); - await this.userPortfolioService.updateOnSolvencyEvent(positionId, 'mantle'); + await this.userPortfolioService.updateOnSolvencyEvent(positionId, NetworkType.MANTLE); } catch (error: any) { this.logger.error(`Failed to sync position ${positionId} after borrow: ${error.message}`); } @@ -772,7 +773,7 @@ export class EventProcessor extends WorkerHost { await this.solvencyPositionService.recordRepayment(positionId, amountPaid, principal); this.logger.log(`āœ… Position ${positionId} updated after repayment`); - await this.userPortfolioService.updateOnSolvencyEvent(positionId, 'mantle'); + await this.userPortfolioService.updateOnSolvencyEvent(positionId, NetworkType.MANTLE); } catch (error: any) { this.logger.error(`Failed to process repayment for position ${positionId}: ${error.message}`); } @@ -829,7 +830,7 @@ export class EventProcessor extends WorkerHost { try { await this.solvencyPositionService.markLiquidated(positionId, marketplaceListingId, txHash); this.logger.log(`āœ… Position ${positionId} marked as liquidated`); - await this.userPortfolioService.updateOnSolvencyEvent(positionId, 'mantle'); + await this.userPortfolioService.updateOnSolvencyEvent(positionId, NetworkType.MANTLE); } catch (error: any) { this.logger.error(`Failed to process liquidation for position ${positionId}: ${error.message}`); } @@ -846,7 +847,7 @@ export class EventProcessor extends WorkerHost { position.debtRecovered = debtRepaid; await position.save(); this.logger.log(`āœ… Position ${positionId} marked as settled`); - await this.userPortfolioService.updateOnSolvencyEvent(positionId, 'mantle'); + await this.userPortfolioService.updateOnSolvencyEvent(positionId, NetworkType.MANTLE); } catch (error: any) { this.logger.error(`Failed to process liquidation settlement for position ${positionId}: ${error.message}`); } @@ -859,7 +860,7 @@ export class EventProcessor extends WorkerHost { try { await this.solvencyPositionService.recordWithdrawal(positionId, amount); this.logger.log(`āœ… Position ${positionId} updated after withdrawal`); - await this.userPortfolioService.updateOnSolvencyEvent(positionId, 'mantle'); + await this.userPortfolioService.updateOnSolvencyEvent(positionId, NetworkType.MANTLE); } catch (error: any) { this.logger.error(`Failed to process withdrawal for position ${positionId}: ${error.message}`); } diff --git a/packages/backend/src/modules/blockchain/services/network-context.service.ts b/packages/backend/src/modules/blockchain/services/network-context.service.ts new file mode 100644 index 00000000..d6e473e3 --- /dev/null +++ b/packages/backend/src/modules/blockchain/services/network-context.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@nestjs/common'; +import { AsyncLocalStorage } from 'async_hooks'; +import { NetworkType } from '@openassets/types'; + +@Injectable() +export class NetworkContextService { + private readonly als = new AsyncLocalStorage(); + + setNetwork(network: NetworkType) { + this.als.enterWith(network); + } + + getNetwork(): NetworkType { + return this.als.getStore() || NetworkType.MANTLE; + } + + runWithNetwork(network: NetworkType, fn: () => T): T { + return this.als.run(network, fn); + } +} diff --git a/packages/backend/src/modules/kyc/processors/verification.processor.ts b/packages/backend/src/modules/kyc/processors/verification.processor.ts index 71615058..f7fd8f10 100644 --- a/packages/backend/src/modules/kyc/processors/verification.processor.ts +++ b/packages/backend/src/modules/kyc/processors/verification.processor.ts @@ -4,6 +4,7 @@ import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; +import { NetworkType } from '@openassets/types'; import { User, UserDocument } from '../../../database/schemas/user.schema'; import { DocumentStorageService } from '../services/document-storage.service'; import { BlockchainService } from '../../blockchain/services/blockchain.service'; @@ -254,7 +255,7 @@ export class VerificationProcessor extends WorkerHost { // Detect wallet network from address format, not deployment config const isStellar = isStellarWallet(user.walletAddress); const walletNetwork = detectWalletNetwork(user.walletAddress); - const deploymentNetwork = this.configService.get('network.networkType') || 'mantle'; + const deploymentNetwork = (this.configService.get('network.networkType') || NetworkType.MANTLE) as NetworkType; let txHash: string | undefined; let oaidTxHash: string | undefined; let hasOAID = false; @@ -294,7 +295,7 @@ export class VerificationProcessor extends WorkerHost { // Initialize portfolio for the newly verified investor (all networks) try { // Use wallet's network for portfolio, not deployment network - const portfolioNetwork = isStellar ? 'stellar' : deploymentNetwork; + const portfolioNetwork = (isStellar ? NetworkType.STELLAR : deploymentNetwork) as NetworkType; await this.userPortfolioService.initializePortfolio(user.walletAddress, portfolioNetwork); this.logger.log(`āœ… Portfolio initialized for ${user.walletAddress} on ${portfolioNetwork}`); } catch (portfolioError) { @@ -350,4 +351,4 @@ export class VerificationProcessor extends WorkerHost { throw e; } } -} \ No newline at end of file +} diff --git a/packages/backend/src/modules/kyc/services/kyc.service.ts b/packages/backend/src/modules/kyc/services/kyc.service.ts index 00d512ea..793577e6 100644 --- a/packages/backend/src/modules/kyc/services/kyc.service.ts +++ b/packages/backend/src/modules/kyc/services/kyc.service.ts @@ -16,6 +16,7 @@ import { isStellarWallet, isEvmWallet, detectWalletNetwork } from '../utils/wall import { NotificationType } from '../../notifications/enums/notification-type.enum'; import { NotificationSeverity } from '../../notifications/enums/notification-type.enum'; import { NotificationAction } from '../../notifications/enums/notification-action.enum'; +import { NetworkType } from '@openassets/types'; @Injectable() export class KycService { @@ -159,7 +160,7 @@ export class KycService { // Register investor identity on blockchain (skip for Stellar wallets) const isStellar = isStellarWallet(fullUser.walletAddress); const walletNetwork = detectWalletNetwork(fullUser.walletAddress); - const deploymentNetwork = this.configService.get('network.networkType') || 'mantle'; + const deploymentNetwork = (this.configService.get('network.networkType') || NetworkType.MANTLE) as NetworkType; let txHash: string | undefined; this.logger.log(`šŸ” Detected wallet network: ${walletNetwork}, Deployment network: ${deploymentNetwork}`); @@ -177,7 +178,7 @@ export class KycService { // Initialize portfolio for the newly verified investor (all networks) try { // Use wallet's network for portfolio, not deployment network - const portfolioNetwork = isStellar ? 'stellar' : deploymentNetwork; + const portfolioNetwork = (isStellar ? NetworkType.STELLAR : deploymentNetwork) as NetworkType; await this.userPortfolioService.initializePortfolio(fullUser.walletAddress, portfolioNetwork); this.logger.log(`āœ… Portfolio initialized for ${fullUser.walletAddress} on ${portfolioNetwork}`); } catch (portfolioError) { diff --git a/packages/backend/src/modules/leverage/services/leverage-position.service.ts b/packages/backend/src/modules/leverage/services/leverage-position.service.ts index ce614164..5bbef427 100644 --- a/packages/backend/src/modules/leverage/services/leverage-position.service.ts +++ b/packages/backend/src/modules/leverage/services/leverage-position.service.ts @@ -7,7 +7,8 @@ import { } from '../../../database/schemas/leverage-position.schema'; import { LeveragePositionStatus as PositionStatus, - LeveragePositionHealth as PositionHealth + LeveragePositionHealth as PositionHealth, + NetworkType } from '@openassets/types'; import { UserPortfolioService } from '../../user-portfolio/services/user-portfolio.service'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; @@ -540,7 +541,7 @@ export class LeveragePositionService { private async updatePortfolio(assetId: string, positionId: number) { try { const asset = await this.assetModel.findOne({ assetId }); - await this.userPortfolioService.updateOnLeverageEvent(positionId, asset?.network || 'mantle'); + await this.userPortfolioService.updateOnLeverageEvent(positionId, (asset?.network || NetworkType.MANTLE) as NetworkType); } catch (error: any) { this.logger.error(`Failed to update portfolio for leverage position ${positionId}: ${error.message}`); } diff --git a/packages/backend/src/modules/marketplace/services/bid-tracker.service.ts b/packages/backend/src/modules/marketplace/services/bid-tracker.service.ts index e0c7e5c0..c2a2c244 100644 --- a/packages/backend/src/modules/marketplace/services/bid-tracker.service.ts +++ b/packages/backend/src/modules/marketplace/services/bid-tracker.service.ts @@ -3,7 +3,7 @@ import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { ConfigService } from '@nestjs/config'; import { Bid, BidDocument } from '../../../database/schemas/bid.schema'; -import { BidStatus } from '@openassets/types'; +import { BidStatus, NetworkType } from '@openassets/types'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; import { Purchase, PurchaseDocument } from '../../../database/schemas/purchase.schema'; import { NotifyBidDto } from '../dto/notify-bid.dto'; @@ -72,7 +72,7 @@ export class BidTrackerService { const usdcDepositedRaw = (priceBigInt * tokenAmountBigInt) / BigInt(10 ** 18); const usdcDepositedCanonical = toCanonical(usdcDepositedRaw, 6); - const network = this.configService.get('network.networkType') || 'mantle'; + const network = this.configService.get('network.networkType') || NetworkType.MANTLE; // Record bid in database const bid = await this.bidModel.create({ @@ -363,7 +363,7 @@ export class BidTrackerService { totalPayment: settlementData.cost.value, // Canonical status: 'CONFIRMED', source: 'PRIMARY_MARKET', - network: asset.network || 'mantle', + network: (asset.network || NetworkType.MANTLE) as NetworkType, metadata: { assetName: asset.metadata?.invoiceNumber, industry: asset.metadata?.industry, @@ -373,12 +373,12 @@ export class BidTrackerService { // Update portfolio try { - await this.userPortfolioService.updateOnPurchase(purchase, asset.network || 'mantle'); - this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || 'mantle'}`); + await this.userPortfolioService.updateOnPurchase(purchase, (asset.network || NetworkType.MANTLE) as NetworkType); + this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || NetworkType.MANTLE}`); } catch (error: any) { this.logger.error(`āŒ CRITICAL: Failed to update portfolio after auction settlement for ${investorWallet}: ${error.message}`); this.logger.error(`Error stack: ${error.stack}`); - this.logger.error(`Purchase details - assetId: ${dto.assetId}, amount: ${settlementData.tokensReceived.value}, network: ${asset.network || 'mantle'}`); + this.logger.error(`Purchase details - assetId: ${dto.assetId}, amount: ${settlementData.tokensReceived.value}, network: ${asset.network || NetworkType.MANTLE}`); // Continue operation - portfolio can be rebuilt later via admin endpoint } diff --git a/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts b/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts index a48912e1..dc8fe106 100644 --- a/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts +++ b/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts @@ -2,6 +2,7 @@ import { Injectable, Logger, BadRequestException, ConflictException, Inject } fr import { InjectModel, InjectConnection } from '@nestjs/mongoose'; import { Model, Connection } from 'mongoose'; import { ConfigService } from '@nestjs/config'; +import { NetworkType } from '@openassets/types'; import { Purchase, PurchaseDocument } from '../../../database/schemas/purchase.schema'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; import { Settlement, SettlementDocument } from '../../../database/schemas/settlement.schema'; @@ -80,6 +81,7 @@ export class PurchaseTrackerService { blockNumber: blockNumber, blockTimestamp: new Date(), status: 'CONFIRMED', + network: (asset.network || NetworkType.MANTLE) as NetworkType, metadata: { assetName: `${asset.metadata?.invoiceNumber} - ${asset.metadata?.buyerName}`, industry: asset.metadata?.industry, @@ -92,12 +94,12 @@ export class PurchaseTrackerService { // Update portfolio try { - await this.userPortfolioService.updateOnPurchase(purchase, asset.network || 'mantle'); - this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || 'mantle'}`); + await this.userPortfolioService.updateOnPurchase(purchase, (asset.network || NetworkType.MANTLE) as NetworkType); + this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || NetworkType.MANTLE}`); } catch (error: any) { this.logger.error(`āŒ CRITICAL: Failed to update portfolio for ${investorWallet}: ${error.message}`); this.logger.error(`Error stack: ${error.stack}`); - this.logger.error(`Purchase details - assetId: ${purchase.assetId}, amount: ${purchase.amount}, network: ${asset.network || 'mantle'}`); + this.logger.error(`Purchase details - assetId: ${purchase.assetId}, amount: ${purchase.amount}, network: ${asset.network || NetworkType.MANTLE}`); // Continue operation - portfolio can be rebuilt later via admin endpoint } @@ -143,6 +145,7 @@ export class PurchaseTrackerService { blockTimestamp: new Date(purchaseData.timestamp * 1000), status: 'CONFIRMED', source: 'PRIMARY_MARKET', + network: (asset.network || NetworkType.MANTLE) as NetworkType, metadata: { assetName: `${asset.metadata?.invoiceNumber} - ${asset.metadata?.buyerName}`, industry: asset.metadata?.industry, @@ -155,12 +158,12 @@ export class PurchaseTrackerService { // Update portfolio try { - await this.userPortfolioService.updateOnPurchase(purchase as any, asset.network || 'mantle'); - this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || 'mantle'}`); + await this.userPortfolioService.updateOnPurchase(purchase as any, (asset.network || NetworkType.MANTLE) as NetworkType); + this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || NetworkType.MANTLE}`); } catch (error: any) { this.logger.error(`āŒ CRITICAL: Failed to update portfolio for ${investorWallet}: ${error.message}`); this.logger.error(`Error stack: ${error.stack}`); - this.logger.error(`Purchase details - assetId: ${dto.assetId}, amount: ${purchaseData.amount.value}, network: ${asset.network || 'mantle'}`); + this.logger.error(`Purchase details - assetId: ${dto.assetId}, amount: ${purchaseData.amount.value}, network: ${asset.network || NetworkType.MANTLE}`); // Continue operation - portfolio can be rebuilt later via admin endpoint } @@ -268,6 +271,7 @@ export class PurchaseTrackerService { rawUsdcReceived: usdcReceivedCanonical.rawPrice, blockNumber: dto.blockNumber ? parseInt(dto.blockNumber) : undefined, status: 'CONFIRMED', + network: (asset.network || NetworkType.MANTLE) as NetworkType, metadata: { assetName: `${asset.metadata?.invoiceNumber} - ${asset.metadata?.buyerName}`, industry: asset.metadata?.industry, @@ -279,7 +283,7 @@ export class PurchaseTrackerService { // Update portfolio try { - await this.userPortfolioService.updateOnYieldClaim(yieldClaim as any, asset.network || 'mantle'); + await this.userPortfolioService.updateOnYieldClaim(yieldClaim as any, (asset.network || NetworkType.MANTLE) as NetworkType); } catch (error: any) { this.logger.error(`Failed to update portfolio on yield claim: ${error.message}`); } diff --git a/packages/backend/src/modules/solvency/services/solvency-position.service.ts b/packages/backend/src/modules/solvency/services/solvency-position.service.ts index ba2e1312..7b78ef63 100644 --- a/packages/backend/src/modules/solvency/services/solvency-position.service.ts +++ b/packages/backend/src/modules/solvency/services/solvency-position.service.ts @@ -10,7 +10,8 @@ import { TokenType, SolvencyHealthStatus as HealthStatus, SolvencyPositionStatus as PositionStatus, - WalletAddress + WalletAddress, + NetworkType } from '@openassets/types'; import { SolvencyBlockchainService } from './solvency-blockchain.service'; import { UserPortfolioService } from '../../user-portfolio/services/user-portfolio.service'; @@ -41,8 +42,9 @@ export class SolvencyPositionService { depositTxHash: string, depositBlockNumber: number, oaidCreditIssued: boolean = false, + network: NetworkType = NetworkType.MANTLE, ): Promise { - this.logger.log(`Creating position ${positionId} for user ${userAddress}`); + this.logger.log(`Creating position ${positionId} for user ${userAddress} on ${network}`); // Calculate initial LTV based on token type const initialLTV = collateralTokenType === TokenType.RWA ? 7000 : 6000; @@ -63,6 +65,7 @@ export class SolvencyPositionService { oaidCreditIssued, depositTxHash, depositBlockNumber, + network, }); await position.save(); @@ -109,8 +112,9 @@ export class SolvencyPositionService { depositTxHash: string, depositBlockNumber: number, oaidCreditIssued: boolean = false, + network: NetworkType = NetworkType.MANTLE, ): Promise { - this.logger.log(`Syncing position ${positionId} for user ${userAddress}`); + this.logger.log(`Syncing position ${positionId} for user ${userAddress} on ${network}`); // Check if position already exists const existingPosition = await this.positionModel.findOne({ positionId }); @@ -129,6 +133,7 @@ export class SolvencyPositionService { existingPosition.initialLTV = initialLTV; existingPosition.depositTxHash = depositTxHash; existingPosition.depositBlockNumber = depositBlockNumber; + existingPosition.network = network; await existingPosition.save(); this.logger.log(`Position ${positionId} updated successfully`); @@ -148,6 +153,7 @@ export class SolvencyPositionService { depositTxHash, depositBlockNumber, oaidCreditIssued, + network, ); } } @@ -679,7 +685,7 @@ export class SolvencyPositionService { }); await this.userPortfolioService.updateOnSolvencyEvent( positionId, - asset?.network || 'mantle', + (asset?.network || NetworkType.MANTLE) as NetworkType, ); } catch (error: any) { this.logger.error( diff --git a/packages/backend/src/modules/user-portfolio/controllers/trustline.controller.ts b/packages/backend/src/modules/user-portfolio/controllers/trustline.controller.ts index 877dd25f..15f7dee1 100644 --- a/packages/backend/src/modules/user-portfolio/controllers/trustline.controller.ts +++ b/packages/backend/src/modules/user-portfolio/controllers/trustline.controller.ts @@ -1,6 +1,7 @@ import { Controller, Post, Get, Body, Param, Query, UseGuards, Request, Logger, BadRequestException, NotFoundException } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; import { v4 as uuidv4 } from 'uuid'; +import { NetworkType } from '@openassets/types'; import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard'; import { UserPortfolioService } from '../services/user-portfolio.service'; import { NotifyTrustlineDto, CheckAbilityResponseDto } from '../dto/trustline.dto'; @@ -61,7 +62,7 @@ export class TrustlineController { } // Validate it's a Stellar asset - if (asset.network !== 'stellar') { + if (asset.network !== NetworkType.STELLAR) { throw new BadRequestException('Cannot request trustline for non-Stellar asset'); } @@ -107,8 +108,8 @@ export class TrustlineController { this.logger.log(`Created trustline request ${requestId} for investor ${investorAddress} and asset ${dto.assetId}`); - // Update portfolio: add assetId to requested_trustlines - await this.userPortfolioService.addRequestedTrustline(investorAddress, dto.network, dto.assetId); + // Update portfolio state: add to requested_trustlines + await this.userPortfolioService.addRequestedTrustline(investorAddress, dto.assetId, dto.network as NetworkType); // Note: Admin notification is handled by TrustlineApprovalService in AdminModule // via event listener or admin polling the endpoint @@ -140,7 +141,7 @@ export class TrustlineController { // Query portfolio for trustline arrays const portfolio = await this.portfolioModel.findOne({ walletAddress: investorAddress.toLowerCase(), - network: 'stellar', // Trustlines are Stellar-specific + network: NetworkType.STELLAR, // Trustlines are Stellar-specific }).lean(); if (!portfolio) { diff --git a/packages/backend/src/modules/user-portfolio/controllers/user-portfolio.controller.ts b/packages/backend/src/modules/user-portfolio/controllers/user-portfolio.controller.ts index bf9af75a..de37035c 100644 --- a/packages/backend/src/modules/user-portfolio/controllers/user-portfolio.controller.ts +++ b/packages/backend/src/modules/user-portfolio/controllers/user-portfolio.controller.ts @@ -1,5 +1,6 @@ import { Controller, Get, Post, Param, UseGuards, Request } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger'; +import { NetworkType } from '@openassets/types'; import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard'; import { AdminGuard } from '../../admin/guards/admin.guard'; import { UserPortfolioService } from '../services/user-portfolio.service'; @@ -17,7 +18,7 @@ export class UserPortfolioController { @ApiResponse({ status: 200, type: PortfolioResponseDto }) async getPortfolio(@Request() req: any) { const walletAddress = req.user.walletAddress; - const network = req.user.network || 'mantle'; + const network = req.user.network as NetworkType; return this.portfolioService.getPortfolio(walletAddress, network); } @@ -25,7 +26,7 @@ export class UserPortfolioController { @UseGuards(JwtAuthGuard, AdminGuard) @ApiOperation({ summary: 'Rebuild user portfolio from scratch (Admin only)' }) async rebuildPortfolio(@Param('walletAddress') walletAddress: string, @Request() req: any) { - const network = req.user.network || 'mantle'; + const network = req.user.network as NetworkType; return this.portfolioService.rebuildPortfolio(walletAddress, network); } @@ -37,7 +38,7 @@ export class UserPortfolioController { description: 'Returns comparison between portfolio data and actual purchases/bids', }) async validatePortfolio(@Param('walletAddress') walletAddress: string, @Request() req: any) { - const network = req.user.network || 'mantle'; + const network = req.user.network as NetworkType; return this.portfolioService.validatePortfolioSync(walletAddress, network); } } diff --git a/packages/backend/src/modules/user-portfolio/schemas/user-portfolio.schema.ts b/packages/backend/src/modules/user-portfolio/schemas/user-portfolio.schema.ts index 084ad67b..80c8755f 100644 --- a/packages/backend/src/modules/user-portfolio/schemas/user-portfolio.schema.ts +++ b/packages/backend/src/modules/user-portfolio/schemas/user-portfolio.schema.ts @@ -1,5 +1,6 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document, Schema as MongooseSchema } from 'mongoose'; +import { NetworkType } from '@openassets/types'; export enum HoldingType { STATIC = 'STATIC', @@ -41,8 +42,8 @@ export class PortfolioHolding { @Prop({ required: true }) tokenIdentifier!: string; // Address or Stellar asset string - @Prop({ required: true }) - network!: string; + @Prop({ required: true, enum: NetworkType, type: String }) + network!: NetworkType; @Prop({ required: true, enum: HoldingType }) holdingType!: HoldingType; @@ -108,8 +109,8 @@ export class UserPortfolio { @Prop({ required: true, index: true }) walletAddress!: string; - @Prop({ required: true, enum: ['mantle', 'stellar'] }) - network!: string; + @Prop({ required: true, enum: NetworkType, index: true, type: String }) + network!: NetworkType; @Prop({ type: [PortfolioHoldingSchema], default: [] }) holdings!: PortfolioHolding[]; diff --git a/packages/backend/src/modules/user-portfolio/services/user-portfolio.service.ts b/packages/backend/src/modules/user-portfolio/services/user-portfolio.service.ts index acbe8243..1dcfa63b 100644 --- a/packages/backend/src/modules/user-portfolio/services/user-portfolio.service.ts +++ b/packages/backend/src/modules/user-portfolio/services/user-portfolio.service.ts @@ -1,6 +1,7 @@ import { Injectable, Logger, NotFoundException } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import { Model, Types } from 'mongoose'; +import { NetworkType } from '@openassets/types'; import { UserPortfolio, UserPortfolioDocument, HoldingType, HoldingStatus } from '../schemas/user-portfolio.schema'; import { Purchase, PurchaseDocument } from '../../../database/schemas/purchase.schema'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; @@ -10,6 +11,7 @@ import { LeveragePosition } from '../../../database/schemas/leverage-position.sc import { SolvencyPosition } from '../../../database/schemas/solvency-position.schema'; import { PortfolioResponseDto, RuntimeHoldingDto, RecentActivityDto, PortfolioSummaryDto } from '../dto/portfolio-response.dto'; import { toCanonical, fromCanonical } from '../../blockchain/utils/numeric-conversion'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; @Injectable() export class UserPortfolioService { @@ -23,14 +25,17 @@ export class UserPortfolioService { @InjectModel(UserYieldClaim.name) private yieldClaimModel: Model, @InjectModel(LeveragePosition.name) private leveragePositionModel: Model, @InjectModel(SolvencyPosition.name) private solvencyPositionModel: Model, + private networkContextService: NetworkContextService, ) {} /** * Get full enriched portfolio for a user */ - async getPortfolio(walletAddress: string, network: string): Promise { + async getPortfolio(walletAddress: string, network?: NetworkType): Promise { const investorWallet = walletAddress.toLowerCase(); - let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network }); + const targetNetwork = network || this.networkContextService.getNetwork(); + + let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network: targetNetwork }); if (!portfolio) { // Return an empty portfolio structure if none exists yet @@ -41,12 +46,12 @@ export class UserPortfolioService { totalYieldReceived: '$0.00', totalActivePositions: 0, totalCompletedPositions: 0, - networks: [network], + networks: [targetNetwork], lastUpdated: new Date(), }, holdings: [], activityFeed: [], - networkContext: network, + networkContext: targetNetwork, }; } @@ -68,7 +73,7 @@ export class UserPortfolioService { const runtimeHolding = new RuntimeHoldingDto(); runtimeHolding.assetId = holding.assetId; runtimeHolding.tokenIdentifier = holding.tokenIdentifier; - runtimeHolding.network = holding.network; + runtimeHolding.network = holding.network as any; runtimeHolding.holdingType = holding.holdingType; runtimeHolding.status = holding.status; runtimeHolding.tokenBalance = holding.tokenBalance; @@ -118,7 +123,7 @@ export class UserPortfolioService { amount: act.amount, timestamp: act.timestamp, })), - networkContext: network, + networkContext: targetNetwork, }; } @@ -266,20 +271,21 @@ export class UserPortfolioService { * Initialize an empty portfolio for a newly registered investor * Called when KYC is approved and investor is registered on-chain */ - async initializePortfolio(walletAddress: string, network: string): Promise { + async initializePortfolio(walletAddress: string, network?: NetworkType): Promise { const investorWallet = walletAddress.toLowerCase(); + const targetNetwork = network || this.networkContextService.getNetwork(); // Check if portfolio already exists - let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network }); + let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network: targetNetwork }); if (portfolio) { - this.logger.log(`Portfolio already exists for ${investorWallet} on ${network}`); + this.logger.log(`Portfolio already exists for ${investorWallet} on ${targetNetwork}`); return portfolio; } // Create new empty portfolio portfolio = new this.portfolioModel({ walletAddress: investorWallet, - network, + network: targetNetwork, holdings: [], totals: { totalUSDCInvested: '0', @@ -288,7 +294,7 @@ export class UserPortfolioService { totalCompletedPositions: 0, totalActiveLeveragePositions: 0, totalActiveSolvencyPositions: 0, - networks: [network], + networks: [targetNetwork], }, recentActivity: [], lastUpdated: new Date(), @@ -296,28 +302,29 @@ export class UserPortfolioService { }); await portfolio.save(); - this.logger.log(`āœ… Initialized portfolio for ${investorWallet} on ${network}`); + this.logger.log(`āœ… Initialized portfolio for ${investorWallet} on ${targetNetwork}`); return portfolio; } /** * Update or create portfolio on new purchase */ - async updateOnPurchase(purchase: PurchaseDocument, network: string) { + async updateOnPurchase(purchase: PurchaseDocument, network?: NetworkType) { try { - this.logger.log(`šŸ”„ Updating portfolio for ${purchase.investorWallet} on ${network} for purchase ${purchase.txHash}`); + const targetNetwork = network || this.networkContextService.getNetwork(); + this.logger.log(`šŸ”„ Updating portfolio for ${purchase.investorWallet} on ${targetNetwork} for purchase ${purchase.txHash}`); const investorWallet = purchase.investorWallet.toLowerCase(); const assetId = purchase.assetId; - this.logger.log(`Looking up portfolio: walletAddress=${investorWallet}, network=${network}`); - let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network }); + this.logger.log(`Looking up portfolio: walletAddress=${investorWallet}, network=${targetNetwork}`); + let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network: targetNetwork }); if (!portfolio) { - this.logger.warn(`āš ļø No portfolio found for ${investorWallet} on ${network}. Creating new portfolio document.`); + this.logger.warn(`āš ļø No portfolio found for ${investorWallet} on ${targetNetwork}. Creating new portfolio document.`); portfolio = new this.portfolioModel({ walletAddress: investorWallet, - network, + network: targetNetwork, holdings: [], totals: { totalUSDCInvested: '0', @@ -326,7 +333,7 @@ export class UserPortfolioService { totalCompletedPositions: 0, totalActiveLeveragePositions: 0, totalActiveSolvencyPositions: 0, - networks: [network], + networks: [targetNetwork], }, recentActivity: [], }); @@ -340,7 +347,7 @@ export class UserPortfolioService { const newHolding = { assetId, tokenIdentifier: purchase.tokenAddress, - network, + network: targetNetwork, holdingType: HoldingType.STATIC, status: HoldingStatus.ACTIVE, tokenBalance: '0', @@ -420,9 +427,10 @@ export class UserPortfolioService { /** * Update portfolio on yield claim */ - async updateOnYieldClaim(claim: any, network: string) { + async updateOnYieldClaim(claim: any, network?: NetworkType) { + const targetNetwork = network || this.networkContextService.getNetwork(); const investorWallet = (claim.userAddress || claim.investorWallet).toLowerCase(); - const portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network }); + const portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network: targetNetwork }); if (!portfolio) return; const holding = portfolio.holdings.find(h => h.assetId === claim.assetId && h.holdingType === HoldingType.STATIC); @@ -508,9 +516,10 @@ export class UserPortfolioService { /** * Rebuild portfolio from scratch (Admin/Recovery) */ - async rebuildPortfolio(walletAddress: string, network: string) { + async rebuildPortfolio(walletAddress: string, network?: NetworkType) { + const targetNetwork = network || this.networkContextService.getNetwork(); const investorWallet = walletAddress.toLowerCase(); - this.logger.log(`Rebuilding portfolio for ${investorWallet} on ${network}`); + this.logger.log(`Rebuilding portfolio for ${investorWallet} on ${targetNetwork}`); // 1. Fetch all source data const purchases = await this.purchaseModel.find({ investorWallet }).sort({ createdAt: 1 }); @@ -521,7 +530,7 @@ export class UserPortfolioService { // 2. Initialize new portfolio document const portfolio = new this.portfolioModel({ walletAddress: investorWallet, - network, + network: targetNetwork, holdings: [], totals: { totalUSDCInvested: '0.0000', @@ -530,7 +539,7 @@ export class UserPortfolioService { totalCompletedPositions: 0, totalActiveLeveragePositions: 0, totalActiveSolvencyPositions: 0, - networks: [network], + networks: [targetNetwork], }, recentActivity: [], version: 1, @@ -538,7 +547,7 @@ export class UserPortfolioService { // 3. Process purchases to build static holdings for (const purchase of purchases) { - await this.updateOnPurchaseInternal(portfolio, purchase, network); + await this.updateOnPurchaseInternal(portfolio, purchase, targetNetwork); } // 4. Process yield claims @@ -559,7 +568,7 @@ export class UserPortfolioService { portfolio.holdings.push({ assetId: pos.assetId, tokenIdentifier: pos.rwaTokenAddress, - network, + network: targetNetwork, holdingType: HoldingType.LEVERAGE, status: pos.status === 'ACTIVE' ? HoldingStatus.ACTIVE : HoldingStatus.SETTLED, tokenBalance: pos.rwaTokenAmount, @@ -575,7 +584,7 @@ export class UserPortfolioService { portfolio.holdings.push({ assetId: pos.assetId, tokenIdentifier: pos.collateralTokenAddress || '', - network, + network: targetNetwork, holdingType: HoldingType.SOLVENCY, status: pos.status === 'ACTIVE' ? HoldingStatus.ACTIVE : HoldingStatus.SETTLED, tokenBalance: '0.0000', @@ -612,13 +621,13 @@ export class UserPortfolioService { portfolio.recentActivity = allActivity as any; - await this.portfolioModel.findOneAndDelete({ walletAddress: investorWallet, network }); + await this.portfolioModel.findOneAndDelete({ walletAddress: investorWallet, network: targetNetwork }); await portfolio.save(); return portfolio; } // Internal helper for rebuild to avoid redundant saves - private async updateOnPurchaseInternal(portfolio: UserPortfolioDocument, purchase: PurchaseDocument, network: string) { + private async updateOnPurchaseInternal(portfolio: UserPortfolioDocument, purchase: PurchaseDocument, network: NetworkType) { const assetId = purchase.assetId; let holding = portfolio.holdings.find(h => h.assetId === assetId && h.holdingType === HoldingType.STATIC); if (!holding) { @@ -671,16 +680,17 @@ export class UserPortfolioService { /** * Update portfolio on leverage event */ - async updateOnLeverageEvent(positionId: number, network: string) { + async updateOnLeverageEvent(positionId: number, network?: NetworkType) { + const targetNetwork = network || this.networkContextService.getNetwork(); const position = await this.leveragePositionModel.findOne({ positionId }); if (!position) return; const investorWallet = position.userAddress.toLowerCase(); - let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network }); + let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network: targetNetwork }); if (!portfolio) { portfolio = new this.portfolioModel({ walletAddress: investorWallet, - network, + network: targetNetwork, holdings: [], totals: { totalUSDCInvested: '0', @@ -689,7 +699,7 @@ export class UserPortfolioService { totalCompletedPositions: 0, totalActiveLeveragePositions: 0, totalActiveSolvencyPositions: 0, - networks: [network], + networks: [targetNetwork], }, recentActivity: [], }); @@ -700,7 +710,7 @@ export class UserPortfolioService { const newHolding = { assetId: position.assetId, tokenIdentifier: position.rwaTokenAddress, - network, + network: targetNetwork, holdingType: HoldingType.LEVERAGE, status: HoldingStatus.ACTIVE, tokenBalance: position.rwaTokenAmount, @@ -726,16 +736,17 @@ export class UserPortfolioService { /** * Update portfolio on solvency event */ - async updateOnSolvencyEvent(positionId: number, network: string) { + async updateOnSolvencyEvent(positionId: number, network?: NetworkType) { + const targetNetwork = network || this.networkContextService.getNetwork(); const position = await this.solvencyPositionModel.findOne({ positionId }); if (!position) return; const investorWallet = position.userAddress.toLowerCase(); - let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network }); + let portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network: targetNetwork }); if (!portfolio) { portfolio = new this.portfolioModel({ walletAddress: investorWallet, - network, + network: targetNetwork, holdings: [], totals: { totalUSDCInvested: '0', @@ -744,7 +755,7 @@ export class UserPortfolioService { totalCompletedPositions: 0, totalActiveLeveragePositions: 0, totalActiveSolvencyPositions: 0, - networks: [network], + networks: [targetNetwork], }, recentActivity: [], }); @@ -758,7 +769,7 @@ export class UserPortfolioService { const newHolding = { assetId: asset?.assetId || 'UNKNOWN', tokenIdentifier: position.collateralTokenAddress, - network, + network: targetNetwork, holdingType: HoldingType.SOLVENCY, status: position.status === 'ACTIVE' ? HoldingStatus.ACTIVE : HoldingStatus.SETTLED, tokenBalance: '0.0000', @@ -783,16 +794,17 @@ export class UserPortfolioService { /** * Add assetId to requested_trustlines array for Stellar assets */ - async addRequestedTrustline(walletAddress: string, network: string, assetId: string): Promise { + async addRequestedTrustline(walletAddress: string, assetId: string, network?: NetworkType): Promise { const investorWallet = walletAddress.toLowerCase(); + const targetNetwork = network || this.networkContextService.getNetwork(); await this.portfolioModel.updateOne( - { walletAddress: investorWallet, network }, + { walletAddress: investorWallet, network: targetNetwork }, { $addToSet: { requested_trustlines: assetId }, $setOnInsert: { walletAddress: investorWallet, - network, + network: targetNetwork, holdings: [], totals: {}, recentActivity: [], @@ -803,35 +815,37 @@ export class UserPortfolioService { { upsert: true } ); - this.logger.log(`Added assetId ${assetId} to requested_trustlines for wallet ${investorWallet} on ${network}`); + this.logger.log(`Added assetId ${assetId} to requested_trustlines for wallet ${investorWallet} on ${targetNetwork}`); } /** * Move assetId from requested_trustlines to approved_trustlines */ - async approveTrustline(walletAddress: string, network: string, assetId: string): Promise { + async approveTrustline(walletAddress: string, assetId: string, network?: NetworkType): Promise { const investorWallet = walletAddress.toLowerCase(); + const targetNetwork = network || this.networkContextService.getNetwork(); await this.portfolioModel.updateOne( - { walletAddress: investorWallet, network }, + { walletAddress: investorWallet, network: targetNetwork }, { $pull: { requested_trustlines: assetId }, $addToSet: { approved_trustlines: assetId }, } ); - this.logger.log(`Moved assetId ${assetId} from requested to approved trustlines for wallet ${investorWallet} on ${network}`); + this.logger.log(`Moved assetId ${assetId} from requested to approved trustlines for wallet ${investorWallet} on ${targetNetwork}`); } /** * Check if investor has approved trustline for an asset */ - async hasTrustlineApproved(walletAddress: string, network: string, assetId: string): Promise { + async hasTrustlineApproved(walletAddress: string, assetId: string, network?: NetworkType): Promise { const investorWallet = walletAddress.toLowerCase(); + const targetNetwork = network || this.networkContextService.getNetwork(); const portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, - network, + network: targetNetwork, }).lean(); if (!portfolio) { @@ -845,13 +859,14 @@ export class UserPortfolioService { * Validate portfolio sync - compares portfolio data with actual purchases and bids * Returns discrepancies for debugging */ - async validatePortfolioSync(walletAddress: string, network: string) { + async validatePortfolioSync(walletAddress: string, network?: NetworkType) { const investorWallet = walletAddress.toLowerCase(); + const targetNetwork = network || this.networkContextService.getNetwork(); - this.logger.log(`šŸ” Validating portfolio sync for ${investorWallet} on ${network}`); + this.logger.log(`šŸ” Validating portfolio sync for ${investorWallet} on ${targetNetwork}`); // Get portfolio document - const portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network }); + const portfolio = await this.portfolioModel.findOne({ walletAddress: investorWallet, network: targetNetwork }); // Get all purchases for this wallet const purchases = await this.purchaseModel.find({ @@ -986,7 +1001,7 @@ export class UserPortfolioService { return { walletAddress: investorWallet, - network, + network: targetNetwork, timestamp: new Date(), summary, issues, @@ -996,4 +1011,3 @@ export class UserPortfolioService { }; } } - diff --git a/packages/backend/src/modules/yield/services/user-yield-claim.service.ts b/packages/backend/src/modules/yield/services/user-yield-claim.service.ts index c24326a0..06677e48 100644 --- a/packages/backend/src/modules/yield/services/user-yield-claim.service.ts +++ b/packages/backend/src/modules/yield/services/user-yield-claim.service.ts @@ -2,7 +2,7 @@ import { Injectable, Logger } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { UserYieldClaim } from '../../../database/schemas/user-yield-claim.schema'; -import { YieldClaimStatus } from '@openassets/types'; +import { YieldClaimStatus, NetworkType } from '@openassets/types'; import { UserPortfolioService } from '../../user-portfolio/services/user-portfolio.service'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; @@ -56,7 +56,7 @@ export class UserYieldClaimService { // Update portfolio try { const asset = await this.assetModel.findOne({ assetId: data.assetId }); - await this.userPortfolioService.updateOnYieldClaim(claim, asset?.network || 'mantle'); + await this.userPortfolioService.updateOnYieldClaim(claim, (asset?.network || NetworkType.MANTLE) as NetworkType); } catch (error: any) { this.logger.error(`Failed to update portfolio on yield claim: ${error.message}`); } diff --git a/packages/types/src/domain/user.types.ts b/packages/types/src/domain/user.types.ts index cac5779d..3e7e8dab 100644 --- a/packages/types/src/domain/user.types.ts +++ b/packages/types/src/domain/user.types.ts @@ -1,4 +1,5 @@ import { WalletAddress } from '../blockchain/addresses'; +import { NetworkType } from '../network/network.types'; export enum UserRole { ORIGINATOR = 'ORIGINATOR', @@ -40,6 +41,7 @@ export interface IKycDocument { export interface IUser { walletAddress: WalletAddress; + network: NetworkType; role: UserRole; kyc: boolean; kycDocuments: { From 578d83a9cfb0d2ef0ea596c788a5909394df4233 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 13:21:34 +0530 Subject: [PATCH 11/21] "changes for contracts deployed" --- bun.lockb | Bin 0 -> 527328 bytes .../services/solvency-blockchain.service.ts | 17 +- packages/creditcoin-contracts/.gitignore | 7 + .../contracts/core/AttestationRegistry.sol | 77 ++ .../contracts/core/CTCLeverageVault.sol | 153 ++++ .../contracts/core/ComplianceModule.sol | 53 ++ .../contracts/core/IdentityRegistry.sol | 75 ++ .../contracts/core/PrivateAssetToken.sol | 195 ++++ .../contracts/core/RWAToken.sol | 63 ++ .../contracts/core/SeniorPool.sol | 324 +++++++ .../contracts/core/SolvencyVault.sol | 840 ++++++++++++++++++ .../contracts/core/TokenFactory.sol | 188 ++++ .../contracts/core/TrustedIssuersRegistry.sol | 33 + .../contracts/core/YieldVault.sol | 235 +++++ .../integrations/CTCDEXIntegration.sol | 64 ++ .../contracts/integrations/OAID.sol | 542 +++++++++++ .../contracts/libraries/MerkleProof.sol | 6 + .../libraries/SignatureVerification.sol | 6 + .../contracts/marketplace/PrimaryMarket.sol | 244 +++++ .../contracts/marketplace/SecondaryMarket.sol | 259 ++++++ .../contracts/test/CTCFaucet.sol | 39 + .../contracts/test/Faucet.sol | 42 + .../contracts/test/MockCTC.sol | 48 + .../contracts/test/MockCTCDEX.sol | 84 ++ .../contracts/test/MockUSDC.sol | 30 + .../creditcoin-contracts/hardhat.config.ts | 30 + packages/creditcoin-contracts/index.ts | 3 + packages/creditcoin-contracts/package.json | 39 + .../scripts/deploy/deploy_creditcoin.ts | 236 +++++ .../creditcoin-contracts/src/abis/index.ts | 45 + .../creditcoin-contracts/src/addresses.ts | 21 + packages/creditcoin-contracts/tsconfig.json | 16 + packages/types/src/blockchain/contracts.ts | 7 + yarn.lock | 30 + 34 files changed, 4047 insertions(+), 4 deletions(-) create mode 100755 bun.lockb create mode 100644 packages/creditcoin-contracts/.gitignore create mode 100644 packages/creditcoin-contracts/contracts/core/AttestationRegistry.sol create mode 100644 packages/creditcoin-contracts/contracts/core/CTCLeverageVault.sol create mode 100644 packages/creditcoin-contracts/contracts/core/ComplianceModule.sol create mode 100644 packages/creditcoin-contracts/contracts/core/IdentityRegistry.sol create mode 100644 packages/creditcoin-contracts/contracts/core/PrivateAssetToken.sol create mode 100644 packages/creditcoin-contracts/contracts/core/RWAToken.sol create mode 100644 packages/creditcoin-contracts/contracts/core/SeniorPool.sol create mode 100644 packages/creditcoin-contracts/contracts/core/SolvencyVault.sol create mode 100644 packages/creditcoin-contracts/contracts/core/TokenFactory.sol create mode 100644 packages/creditcoin-contracts/contracts/core/TrustedIssuersRegistry.sol create mode 100644 packages/creditcoin-contracts/contracts/core/YieldVault.sol create mode 100644 packages/creditcoin-contracts/contracts/integrations/CTCDEXIntegration.sol create mode 100644 packages/creditcoin-contracts/contracts/integrations/OAID.sol create mode 100644 packages/creditcoin-contracts/contracts/libraries/MerkleProof.sol create mode 100644 packages/creditcoin-contracts/contracts/libraries/SignatureVerification.sol create mode 100644 packages/creditcoin-contracts/contracts/marketplace/PrimaryMarket.sol create mode 100644 packages/creditcoin-contracts/contracts/marketplace/SecondaryMarket.sol create mode 100644 packages/creditcoin-contracts/contracts/test/CTCFaucet.sol create mode 100644 packages/creditcoin-contracts/contracts/test/Faucet.sol create mode 100644 packages/creditcoin-contracts/contracts/test/MockCTC.sol create mode 100644 packages/creditcoin-contracts/contracts/test/MockCTCDEX.sol create mode 100644 packages/creditcoin-contracts/contracts/test/MockUSDC.sol create mode 100644 packages/creditcoin-contracts/hardhat.config.ts create mode 100644 packages/creditcoin-contracts/index.ts create mode 100644 packages/creditcoin-contracts/package.json create mode 100644 packages/creditcoin-contracts/scripts/deploy/deploy_creditcoin.ts create mode 100644 packages/creditcoin-contracts/src/abis/index.ts create mode 100644 packages/creditcoin-contracts/src/addresses.ts create mode 100644 packages/creditcoin-contracts/tsconfig.json diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..fd5d3caaff707c4ca0f3a83998541d33d9157c33 GIT binary patch literal 527328 zcmbrH2|Scv_rOP+r9u)R2_-3MK?;#jQHm1U2ZON!nhjkxY;8_WvwZudAMM5_j!%0# z_lD(;>JiQ5pcaoO+q72jm>lmvnaC9Lg1$6ie?!rl$4gu$!{aG}tO6+y@+rvXASD6( z?tu~>?<%Or@-~fmJQa|$L1O)zAX|YP4-G1T%mIm#+=F)x68 z3y`+WcszBGJ3zJs3H>z|@O=VIWm)}DUjfPwLLQ&1Lzhs$97t?0fG-h6hk|EVJzb!2 z?9UpIZ9&clsS45zo~wb(fyOjJra*ttPN9S^7V~3y!q5PLSQsIh$M#bZj6*wJL86|^ zAhDeSkl61WR#H2gAP@ihue}7e{SaTXTK`Gdyssz%#+k?S7KZii3;vk}jbp#&v;Jq@SNa z%;O0K0zn@$Q{FgmF1D+~N@bAPPGgYRKLPXy<76yI)GLq#3qvD#y#6p4ogm)<5FJz@RJV$>_(q+p1g82~<0$*N` zAT|o?x6ot8$&IbI4)Wl_#6XF0EFXrFFZK`PizR|(P>%gMug~~Nqa$PQQOIMt&_7fp z7Vvof!6I*du!JX&goy=^w*seOzxX~PF&fAZtX0c{crnI+35yJk^%40B+8Z$bX#x`C z-W2RXKMZ7LXOK8Pnyhp-Wb%rTNBxahsnvz)rwT~aTM2%}IK0P7p~M(XXotO z#gIpR23?tU!}t*a#^9vr0HIF+*e#R@VxT*`3s4`&BdiLRjm!@JN9;mgf_|4-Nu-%S@O! zfc3)|#?F5}f!ip>cjL$*Mh0P6C}o47D()uZC^&dhkEE&MfUkmD91Se4&^8_`Z4V&K)c9wuw>d7 z!=fAk13`WYW6OJ5G4omw6DIJ1`P|f+X@3+*E7&g!M7DmK|31B{nYMYFV6#8Pj3qdd14dWvgNF+Qp7sl^RL86@>hcWZ* zDM-|Jla&`iwuF2ENQ~z&kT{-hAkiPSi&vyLSRx3m)w7SSH=C^|fTN30EQy%R=3lrn z?MNc{5s?ys#8<$a4}1lZ2(c)Z=Lgo|`2D^fPC9z<8lP2}tzw(s4WhPIrZw?PNKyHUT_G2I9G0r2zrsmkrL8y=R&lWQFmV?B8c}qm0 z_&kUY+h_=n7bpoAV?IzA5{7bRFw>86kl5}bHXkRd4Rc;J%lJQ*9-a=#t(uPVNZkd7Em4* z>R%gx>TJEhFo8cFAbvtW@VR$Lm@(Sr%l0oD>S4dFAdlxjVF=$}U>we)^Q#e*<2a0r zX5>JSXg95c)sRQ72T1f+d$yi6+pY%i*#2iW{}3dOV-ZNKpAQoGl^{{iO!oOi_PGm4 zguIFCo` zHmwKCrZfEwk-&M;CrG??2E+H6#p87Yt~o1j&*bsCLw*lPET0L|7^FK$6Od*gJAf>n z%ft)ym+YPodYZ%Y;K-QT3DOVj!niR4iS}x<`5*I{^Lidgd~Upu@mD*L*pGz^nD|p) z#LSasP>%EE6O>~+-4-*l4M=s!Hvx&<6ZUxtNF3(}&_2$WQy{fLDuRCWxGV*! z2zi=c%~F{0q4}}`^4N|a9?W5!J}zPO(EJfb2*j`i@YrpVCzr~!X9M-n-s6y00Qsl& z#YYq>5e4&k-Jm||p?!08GUJa$AhEx6-VYY})*eu5z-}z}5i{#h-<3>%oCZfn7@zB)9Q{o8%dBDSp?mBs_IWjwqaSud z+c-}mB*vj|{otL?WX5mAI%d7T3=+rn07xAF{qP*;_a>0&m*uRS&B`cN27p96CV<3o z8O2Ipp&!g{xc`X#QSf3zYsG)-5#6U@n$*VG$xV#je300`q|Ho!;B*ubAry!wLmurp zyoD*x28sRQZ)N;<03`Zp2S~KTDx0wj&J#i(elX92EvI`1olm*mH_|{~D`;1F2jh<> zAaUHNUD8AG0PzK{XnNP)53%RRb~4;PkZ30yzJrDS0TH?Pn*1opkoq;^+ z?+x`dKsE!3_1;5yYmoPjGkhB4aovbN!L)w@%G*O;w~$$PFM?Eo{2q`P|A8l&a}nG> z15lIfDW*L^aIi2eLg=#<@~AHpq&!G(u}I8^6@lzp1?}McnFjvBadJJw)C-3^&Li?G z-5YMha~x+r`<%w%_j)uAbgw8s%fy2la2OYd&NK637f6gRM<~a3Nq;{!Z+VfiYdJ`q zC*43IuXTx$Dv)mp`EM7Pc68W0?R(82-vXWoiz6q7z`jlA=bq3$`lIs|hBIXItyziN zvQR7#cP?V|hOn|7NVL}{0M6mQ@Xk-b_r(%0g3C_<}#*# zxIMvR-fGCBpHe|$|7g7^V(Xs-iT*eU68n*PooR0uqPr{rmo84see!0QO zQpjW6+=F1o_Q)S_o`v_#J^`_?pi025uH{UJ?1v|b0)u0rtsM^t;fuzkk|%>1SKL2>^Q z%JF$Wkl60_hwQrii17!_#~y6G$Ou0Rv_}#EGa2S}_s5Jru>eK{UIFa{edw=fk=Pg4 zWO@%q<4y0QC@w=qVG-CK-`iU(h{F5I|Gqy|c*fX=?*-v3&iexT(B5Xx8NEN?Ir@wI zPxaogcG0@X5AhYiyEOs5hx^lePkIkn`(7CAS`GcdI0_T`#iE@{S%1!BCF=EtC*H4^ zetWR;0Z3)wTtK3IAp)_#pcju9|C%Z1yX3eQ_&JM2D)afvtZ0731vh4&E5 z{nG>L;X1n<_Cr;Wx85`MP5i*vQ_MHR#_?+NwMPud`{9ef>cEDrPW7epB2JsLLup4cBBacpg%z-l8Fg!+JA z!i{~ReQTv3*hKG>UBMpoi#2N(ysi-7iSWfYW?vfho$()EAgO(i%!l$eP=6>Zzkg-y z?!)G4`__`tr&VRw8NPI2Dn-B4V@j4YG)(-)x0@90(BZ|9&vP`?bpTn%69^QN2 z%E{E8BWNEI`}x+ccQNve9ej}JPmzL5ZTrPgUkCEqz@rRoE>jyn5q$4pw5ta4IDbBX zM1LiR6^|3!EG#GgRB#!?Bbw)1G zWXdD>VYMSN3+kgE0zl$;|NeQ4GnC_aS%O6SyMV+v(gulo(zO{o7K6lg;y~hj3I&PJ zhk(TSsQ~q{zi;6K15J>g9hm$;kl4RBAaPubLENN1Ee;<5M zf%bONm#K||8&HmVLOROSo^MBkM1R<@QU+u@$ZLbt1GyLKqdgN17(LN&PDg)NLLU8( z_YpG~qfjWvJnd6(uMC7&#=P2p;5kZTICRi?h0aNI4zcROv=94P?YW{SBBSzBwfyU3nnCaKCZj66xAdh|@)}3ij03SX zVSIdmJnB0O635A35Q--AY$1>Lv0O_gu3ACf1oD-=WoqYR0m!b9PXpN*q=YRW2(ky{ zRY1Z9miVq0)4yVn*zav1aX!xkiQGhxoj}@y)B>r)=H0+QI6s!c2WIH+*C28H!h~XY z?<3(Y1%IQx(eSY!&fj+f8GpffFc`YY%Yi)B_pY7YFu&~?|0h5@*za8qjDKc>#Qv`Y ziE+Kek$D~jd9;W2SEoUYf9Z3|KYcz4$KBcw0_eQo9L5{x?L8O|9KW+5aX!6*IK=Up z>couK{9(-eY3;)3Uj!1zGXW&}K@1Y>yANmD^N0F4e;q;Ug6sei{rY*R46h5wDNNleONaXK={rLO} zNVGQ;B#sxIOCvm)b;lPZKKBBN<3jO`@4fJ|1G?vofae(Zk}<5mL1H}9xgi_AXn^BR z_mkhx4|G4F&okSz^Foo8G9a!2RS$qgfB zd@g{*c9JGB_6TBx5x9>PKsoj=n9uaXhn1s1;yC&W;0<#Goa;mwr99pNsE_^SL%icU z-OY!wBON5hqb5kyyVRG-$AiRm+@FyLpdUL=g8Yr~qv@?|yPEzoweKC| zKw^9F>AVjg^!E*5*0F9Nu|FL^Vmmb7)F6*`wFHTFib4eu_|YAF4kGk1_6w~Beb}!H zfs7yWLE<$BxSWakemow19|YsR?)N!9L%SHSwEw??Jo=L-!<=g$v3h+)J`rNL zr@``6J5Kcd1o|EVeJ_E&hd}d%?qT$O0zKe6K>NRcui$4aGrkJYKa9_>j?Dezavb9) zy~)hD6+j;CeG1QU{60fDj@J#y<2avV`5x=_mA$gm(h}eSbv&?c@1tI7p07Sng{5 zLiZ=j`HX)Y;W@TL=T@?V^!=_UB0wyP^bg?CxtPwMv`$ZeKH|RURg+@>W}Bp_$qA2l zedi1tea=Nrui(6LTg|5P=UNsvPt7)4c+c&KH`uLoq>tjYt{D>!$Yw0Ls6XS$`X4r~=kfwpq=khks@<{bUDMsFQ1ER2 z$kCmK>1Lj^sc4u%U~?c}sYTSoO--s!9$Qe|Y}V4DT<^PKJ#*-WU4`Z{p! z_O}P-Ca1|gwpg#Y@?hkmeA}{i1r;Oro!lTwoB3=*`-1!VF)v(iIR3EFEjO9ad4lfK z)_3BMmH6~kX|?KwdfU6D@UE=#n(*y9xps#n-AufD{=|Uwz`eMY3-WwX=WDx;zKb+)dP;W=RjKUVzh3cv;;&obF zn7n6P%GAkauREMq?v-JZ_0s&rv3BLMU#BlI8MDYB*SfE~$m;Y9*H!uY-*RDJANJ>w;J74m&lfw%T*-ZEC?a z#lE2`ZJdY1PCDc?xWDgci`_qx&zwv9y!cSdr>n9uTP39p3aHY`HZhS|x?;iw{)fU- z8{Yjmy)jhLcKHjf$s;|7M;om*E8bP38k3;aG4o!=zZl$IB(jG zwnvYzQ8+ckexYI9@uZpVku`2Q_Fp{QGI%v_zMhwR-e{0-|0kc-u5DU4Z>Zzm9Y-d< zig#GM@q{EZ@4C&WiOMxvR$K@M@KEgsMNF1O}9txzVmYNx*Yc( z@mJhG+|qBeZtFvvJGvSw3f78^oGYg3Tgz4t(P{Kxg6r$oVP3~xH_f>7%Fx5LblCW+ zbNA0Jnxd%Qs4Qmj44&zI&GV->>^oVOdp&6|>6Hu(a-TGC`mEk^orVn=I(ELra^qCp zLX~rS&rMCS^WWa7SMc8V=dT3#pXo9&G5WrrQgP_!;S=$>mQhHrB`ox{nclK{n@^RakxlPw|{nuGP zJ65*npwWDKr(Q3=c;BAbTF&%^+v#&R1e*f8AIy)Zg@$>8U6{~Q-fA&d^Ay#^VV6i_r;po`2)B7P}~$f)9*?5;gMzv ztMA{MDf_VZh=kz76?^t>w{3HGWxr!`@e0p9v~4mMe!VI=R#WC?C4Vtw@#n1JRgPP_ zdE6SQ^5S}jD5u?GRi}cOgCF}e?Kfmwf#TDxgZBEqyQzPv)6BsyZPl83X}f68IH&kT zsHmCiDj77T^*Zkf_cxDrz2L%E-goA@zLo5(*g3O5jvuk`hvdAG$>#nAPiA??#~9ty zno@8w^jhza&sy#^6kK^Yt;bNcaW@TeWYWEz5EE)Y&(E^MatGX(}ZrA50vp(`ZTg5Sg6fNpl)i%$~Ax zUhhzfo6Btm57_V_@LBJOeAQyL&eiUdUjF==%>Q(0kj2B@#Se%6DIVJlc|5vhO2>z1 zFJ6A3IbuS0zneBW?#336L)*VUR(7Lf-z5hM3x#?;=gPWFjt=Yc+K%EP;`+HJDQ`Ph z9V^^2_H53rJ6#7YPHpFG{x0a&`x^^>_$PfD(r=61CCi1Y-Xs>T5$EsK*fm?Hc;wvi zd0iu>x7gKT;?}(?dB?Bl`3=vqQmtrrRdwqa*LkfTZwt5FI%A`4tGIOKHM5qUpLVrn zQk(JogNIh>lb=?{O!o7PpW>pky3svTm3>cdb~9_N{$lpXxGDWD)_?VAY~ghNb+2^I zm;sHOe-C`QQ?V+%{r4$3np;3MqO%_eagsW@b@oc zRjV!r-Q9NBeA!p0+@JUEjJxOlWJFx!VeV-MB=ZK>?AzFJ%Cjx=m9AZD7Ph{+^x&HE zeSZ2O)e~nAaGFs5!uOEr7}qmL77exEtrd}X&0?TvrqjH{=dG8RC0HHUZZP@Dex)fr zU+%RRn4L~r-ud%1g(4f}0m=D#b9(51d7o9YYF*=_@70dWHW?D1x7g~!-s*ML>nHUO zNK&Zi(=sH+q+5AkZ^4TJ*_-FR5*Y9e2hlp3@a*Pb*E3OS*ZUcDOSss7W#svBU$nQx zD2(#j7M#+x$>vGN+c)yse_o*Vdgzd%PVF!3F`lw|#P$!x#!jal!n=#w-yS%i;_AoZxMcH7&-!iN`RqrtXSx@MDYV#Q;UHM=-B^9B za#HM^h2viZ3`;xO=b^&FowpaBUedgUtnq!V6CY*<$-FaNyxZ=uMR3^S&?T2o#y&Lr zR-iKH)FjdB-`8V5{n^)FDNSpX@2}x=LFS-Q;8>F}M@pJ>TnCZ#ipra@e6K zA(DyTwUfWh9pLS?dD`wLNfzocGyFnUzrWN{?aP?A3-850Z|S2izB%c;!58t|A__GpB7kX*@Z- zFX@10L5TaHtu6zFSDah5iSpe%CBawTP&lN?y1c@LPjtp_HS3Ueb>a70Ih}iym~PlN z+tEGL{FUY6!p_P*?*g`T_K7yjD7{jWry6@KlYe;el9{XBk5tN8$NQ(8dz6z|d?>6~ zF?8{^mJ6oOx$j{T(Dd6{^XHMro^2c|BQ#YJuOequ}eR$TM7vmS` z_Ug%+5IOCUSGs7GKO4O2iPDc*7prEsy|(3xtood`^9iAM$`h0VE`?%vvyH#T`s=Fxki z>XvagkDWNFQR@G0!&DRD?uwAg;xc9N-u<6PcAlsnrl*^btNcwNGSuwRiCzJ3FFsT} zm*LSfAa{83IrrU*Ol1no#*dl1ciUX;3!AKV-a4`F9O#3 z>bhyceyxh^%PgM-E}MF}U4cT(>g00jztxIIkBbI(P&*r{t5{sJKUYh)yn0xB&t=UO z^%jpAFjBGIweRJ9JaPw3Zt>H){qVddYg`iAee(*qlkc{mNMdT=^rlAdo(l3wgXsKX z>F8g2c8|&lzZp4`o+z&o8L7H=_IWkJb^q6}hb9K66~r03?d_h;bdrBM`ca#ZO6Plf zSAFbrZ@n3<+q527?CS7c=j__v`p4tNjXkXOdR=h4G0j0ZMq{_?j*~ex(>>iHE}f1q zDw(zS)YjqCURvw+OrCeT(WnI9!dd%wEjzEUH$UKBZvMKwugeEpwmP|~Fra!$ViTL( zLDXNeTeQJqZ1F_7BN}JF6Id5GBoh*^Y)_k^1Y7@ z-zFz+WwTm6XMFB0H#4=3S*gao4>%<)Dl40P+VFDcRvt6*lw-p8Y;w?XSeG;4(%r7- zwC6l15I1fY5wbST{Nsi)!^00BWIoH=|FO|a{glg+@Ne3V35G))6F<4q{CeT;b>~~k z=V+QQj(a^zZmYId&97*uq3?D!VM4P~vjguM3uylIJaXG**~Kwad9JH@lUjHiC zG$ni4-peb+6J1bzhg#_7zb+Q<|0q4O5A`JYvlrjnnZrKS!UuJHG80tG#!{ z%e8M*yQqG!bzWwABk9hk630$%^RDe|@9Cs)?3>@AsH1DQrQJ^5?>hTQk4xiwH+s1K z%45-q1-o~oKQE+pW#-S^HQ(B{32mR^B1|0WwmItg<>bXn_dF{-xaI4{IcetVnup8e z9cIYvY&&g+PD%8g+nu_9>2ZJ3?CII7zg70%pi^N!cxU#u$(O2fja7(!mwTh!=5RuFD?w0=>7}$uLwuU+&2ztXy2bm4U$u_K%UZX*JAZ>!56{V; zAGe;m<8VUK-itblntBcotWO=zczCGl%q@9y&tWD)=b$zwDf1F_534>M{=_EpSxi*v zqM`FNTb$Cn?z+NN@51RrpN84)8bIq2-KV>(UaEQS$}8EC%?6Lqh<=?GbM?r5Lw-=j zfR_n=KMcAyt(efmEvM_jMOpIR@?+zB|Q`mH3J5mnP|G{xu3_P*P31~4yP`>$W53y zG`#84W#*wPceZG=vD=Bt2SuePGj3k)JSFPe+1++&D`WTyUy>V8`)zvA(%EK$zN<%1M1Dy(r;+@7BG=*h=toh-VB zUs%|(^{jDum7?>L99oXr@hH>B!|X)<&c+T$Pi=Z}ET}YUY*pMsW50sz5$cQksjO|j ztJ!9S!DDaF>vp}Mlow>&PDN)VRM)p#Ip3#vU&QoH=iBRJ28P@rucXg_ZJFm80i&%B@J%{+E{Wq8kkBu4D+EG1Rt{t79 z2YtL3rSoJ=`<9V|KRqhfjP336Y=@^oxBja}6jzP8yj($NN7V93rr$%g_3rBz$m<;( zBa>0?_<3#EfvpD578Rek=wC2@yq1m0Aw8WH8rphp3k-X1yrT6i^7D+{f-6RShaaT- zYQct)XS}klyH366XCv23uK%IifeG#Rg)gIf`s!#kn=@nH7V2M{e|+7BDba18)pU1G ziag!3S7^pJVaHLu`xs_t@9(iee#@n2iR0h8kGm}lp5425uHRnX7TZ3Nxt&s!;9b;TNuA~g#l8P={bf<*rFwfOv{rSTZ7?gY z%bVv#x_Qz225v~5C-xN4e0;s@h;AkCjpL4V*F5pQ3qGSSj2QXKx9v;4AKtoC_dCCx z(5bhQM(UE26T6t6`aJh=%t(dSW}6uf|5PvU zb*HmS-^mGSU0l_E@qukc1}o@2+@Ici(tAL)JhvTs+in^>i&AO&H9V(fZ|5hU_Rr`d zD?8`G#PT7pl*3&1cfTAo_UYmqlcs8i{w%%x=t$Vg#UJmEF)34e-q>sY()^~&;8yXx zr_F{=Q)aZ%{IE$Sqfv@q^098|w=CV;I$dfptaME7n=T7{Q}-Ocb?)vQ*)D5_W#w$P z)EPV>F2%_?>VZ>950^#bl{z|%vRT$`oaE%G@(at}1njKHf2k|!ra9%2Fg96t-I9Lu zu8wUJKDN6-jCyk&%{v9>5>mqU%H59&e!`{1~F+IJ3jaeKSzcyf>7)=ySU z?K4gP{TY|9ny+(~SoG{Ko;q~5_vVtjqeeU3-rA#ITkDdc=3@uH^mLlhdFoG7`S3(~ ze{jCW+B{Q##Y62vi&&AaD97qx?4=dm`smVmr19-Z&-w|xYzpTV=!T@mexP&Q{Hi{y z8$0+Mr}y(zf5Ob?bB*IOd!}hCJXzVuV0mqUU42Ej_p zv{yr~w)Hagj1gQpGFbmuVC=+qC%>vrUmtYtrb&YTBzm7LzwD!mWt#KVx37aTR`Ijj zDv#9-n$>6Q%W=G|O4Zd#(;B}X7}{Au#r{TR<>mC-1D7P599cMQU`@vxz7elfTV0di z;quP-y58t_qYU0Ed5*Yz^gR8ZLGzk%i%xED+~H6}QnuIi@p%(e6?@Ol zdDKrPD?d)Ip!@Oz>d#WA7dIPS{3X2G{MUMSR7zKi97h%R3rWe^Kcif$?b9IxCfW>Y zvMv41!(O({`&}Efls-S8&kM$Co!K8_R`X(J=jjTY>5AW~{O>c~(?06AK;7MBg^BZ1m&hX% zg%8T@N>Sx^p2nBh4=m$XJ%3!;%-*fzDK{>Mx3T#W*7cC=tGS9-zgO+6Ubg$)^f5m->&pzFeI>TX!M7&5 zp-yzKNpExDh32foLDNc3w`$ozzBpdA@`_Tz+@UK*yjiz-%-Jd94zxX0QB+j(sM3XFsi0Sc0RDb2mwsyE^l#HVX&^ikID<~giP;IS~GMYk!*yAJw)Fv>sZ zC!eRQ)UhY0Y z>DZe08FuRZr({f7ux63lcb)t`8=e|&-dVGCg0*?fyLRrol7ccO8hkA*Nk7p1dQ#7- zJFEJdE7WA)s;Q2d@$O-#H5%5pPJGT#UN<9e$&|ZxnbFDp#NHFE+ir`#GFQ)Y`}~=& zX`fngd~?YOuY$t?i#Irx4Noomc3bMCTBTZ(BEvjSZdZ*4`kdRpW76 z^Ym0L6SfwN4ltXz$)ww>WpU*?$`^f%V{boyGPk1pvX!4gmrqw!*rZ?7-eqQr&g&w& zKhXH)Xy`Z}Z>=v|r2WB%mn9#&)Va^j91CmB@U}%y7A?EQ+j2bfn#btAV|-R@u8Ay` zON%_KXTIjeEW^8Ad&b<^aU)%5Sd*k2FzG7wbI19Lw$BQNwVXXFbe?g-_iH^v{YH2v zdhShi>U?x?d79F`>h`yi6W8RKPFb|FYD&(X%58#;Yp$-{f4W`kn$^#h+P*y*AC__b zVoBAC-Pbgy=vH~fZ8-9=&7GYSZocjAlBqdQ^GnF9tVOOV`bpv+4B9& z*D4KkELXCAWueyk$xy?&gO7JQwP|E$t-vOgZchCxAGuZ94R;?tY|+xAwry0lKIoge zsq)#XRU=IbhYorW>|k{Kz`;qH!~0~6Zhq;={IvE{$_}ZJ(aN||8>0WEwls)ybSHHiP}rs z4tis4L7!9p>GR2H9$nQp<&O8G^ZqK?;h`pxaxH>B?>FsVWjE*Z(4;p#AL$2J8O@$_ zZn)-x9sTSyT!jyK0Y_KyV_OZfXmj;Zx35=Xa|bGiSlxRzLr0jkUNKKa#o^A+CAa-M zT`^kp^HI0QHvC=%DTzmptLjSn46jrfu|@8{+(xgmryYGAFlDs8>1FfO&<9tywe-HH z=Cm)~B5&s1y}l>6d0E7l7xlN@aQn9t%4j6w|T*E82;u%#miqLDUTzvJ!&2f$^Twg0Yjlbi6*FuBu>abf$w)dXV_o6?Y z82fR{eBGz(#!h*(pvt9ZY1#Vi3oQ+8=v)JQSVHx0c)~TD%ILtokiycuhZskFPy4h(*5N3 z^8?*a=<`gahszA~dU)J!U8dK4!=Ch`YC~JR*>`mErKqe+-Iawe2L{U&J8#W;o-pUr z;1dP|qFZE@oi%))bJe61KT>Z*xOg?43&!rsKX^I+#v{2K^6J@oPg+b@@>nSxW@zIe zf9uDV!PlC6uTbaRIy3Rg_MxvlUDYof>NM-j#$z3>93A)gM`hf?7IzBMuNBWexFh>@ zS=e(s#i#EkAL-k_u3g4&IBPj>Qu}p* zeR9uK$NjwYoZj$a;nx-4F3T$OTa&fI3gyqOP@%IB2GoGaXD8}H?%J?X>Jc46*U zJfC`qr*2%n=4I0klLkb2^wM55#pOKBH^X;#-bmEn9=PV>xVbXvzNtsQZ4(!@l3B59 zyuE(&6&WusE@>ivz3;tv#j3Rn#~S<3DL?9*^=NUxxc!skpX;1$QMB|&pCEkk#t0kyWPx`Syz%D_WmvsU9FW{ye*x?((>Kz246X9Cf?Q zd%S@bz5hE{a#VBCfwPhHUhunHk1x|&36dhNUwL01dc-|$_kfu$R_ol?dcS<{X})_GN8_Tx*Yy1W`hEg^4}rdyK;J{4`9k+F`aS`D&*1m( z6|9LmY%ILmR9yYlGkvay`{&$qv*e!Jb>bhpH{roBk*#-XnP20L^FJQ*@=fm)p!4#I zyvrzsJ_aqKv|EO{Zdn{RR=#nw&HR#`KNVwgr^<$%^I5+>GD~*eez%$ziwc*ScbRC| z_qpQ+@0EAKey<7q3!s!>pE;(ux|GBmY;n$xNpc# zyD-LwH~r|AvyS4^&xdThf6yb*<-DhUa}A%SF4<{Ul?;yV9ihH4B1B+S^y8G#uuE5N zc9}!pQzCuex0QT#{dqs~h5Js)^cYu3V$q48Ri;YOO_mJYy1-eIBkw%r;D?QUb|1|) z-R^#7mxF$QADXn_0)G6tjl+N3s zx2%xXrMG$`TF5J^pit(W;%v8{&c|)47%GAbr2!%Y#Ojm z5x%DQPpJ`0XF)^u@I6Fqudx&@68{arek_kT*EWbZgJ1fyJlY`3(FWpI!!PjnEs2;|IJs@YJ5P^DhH< zoWI0N>%UUqF@A{WI)|vfI&9d;BiE4iXAZI?Fw@72+dI;EZe?cuJlx8q9>0;m_X3{cA8p{0sQ)Rz zTeAJ<8vEEj@t1(d`L6+GXoIxl-wHZD0C@Bp{C(Pg?ZU71Cej}W{9xc=7;61jFI49t z@m0Xn_`~1N;op97O2iw$A1(F({apJ^jT1i_c#L1nOEU+EPX)dY@YF8+4JxNZd^zyw zzlPec4}(Vbqhf0JZ$?l(KJXZSIDVM8+Ch8<@V3CiF`$;^>O0csl=M>`Kd*u{_$&mBqTGUkMgGjDPGm z@>Gs>>Pu8_DDbrZ;Tj_C{yhhHXV8yv3vtA`52W9|Epz`w-_aTdzy385zX*6dKOox~ zexx0LA5HjgcL7hnC;2x6NPijd?*G6W!GE;F4S1Y;*avC#uK?Z!cz}nvs|7QS?{>L_9DU^ErzXFfzFWQ5#LwrG_8ef$5tKT5m*E&_fK z=ttf7gE7P^j83n{zv^d_sEX=SbRpjx*l`? zptzIPes|z)|H1x!z|;PNx~0{xtk3ul``r-U5qLbmHUb`#wE7c(x2@BEY5D8G+W}7; z$y#IT`G@S)>-fLxZ#~HWJR*J^@V20zYur#H#Ag7H=Vy$)#_&VsRPRrc>JxZ%w9U%Q>z?%S%_YY}&KzuI)#{bxN z{E;?({D7zU$MKVvUjsaze*kTe{@1{d10MUsRX6IQ{yV{;-4S@Q9VM4Ud@{?U?uNwA zHQ?#~gL=8{Bc#8TArpVdV*JSBFB}r_o^^P5mBHDE#HRpn3;x5tH-jH4hhOVWRPQRw z%R%ji_^(qJX8)x5SFh4K4@o~Cc$~keo9ozPGsLF@kMG~GOqv)V{wB+#?=Vq0ll$|( zR8QUL*ZzgIx%Pp058(0qfqAr_>l`9}De%~TiaY8D+EQO4{vPl+|0rJ{Q}-Fw@7+8{m>cwE1bZ%F^o0FUQ)YL6u8`IDr2)xYt7s{eaA@m=BYPv>8GsKj*+5uXVB z;5zn8JAP+@$N7W4!!~gqa!I7Wkuej$$Y2}N+HV2;zr245VfAyhoBBrf9|RubpR3)! z^PgFstKWa;&AK!3+fe&MfT#Nd*SU{2Q2%!VUw8c@`~D`0f63~nJlAN~WLYz+k74)jx= zYYb5R{lMe;gB<>F?FaEyz)t`k_kZw1Z5tr|nux#GlgAtL4}3oue9wR2Q-H_)tD*Ma z0Djaz@ZI3@-~v3&e`&`r4tQJO(Vtw$4hM()e+YPM;HgXrf8mgb$IBm`zYyaZ!^HOk z9zv-0{zE?Cp#DGm1A)i$w*o-Y_<;0p1RlqqbaV9~@s+^a15X^uzx9E5E7<&?iQ4rC z*C1*6FyKc6-_ZDN42v(G9~#O#1OG4j*8xA`AN0Qi{$J*AA9(pd{>L$+IN&;dLBM1D z(RluiqvuqAAMiH7c_Q1TK`W69>)*$D#8!fMEdswKZMnfYagy7ToUoEVDWPR zp7PS#KN@(9U+h1QpS1qV1|H83=sS!d1Nh;R$lhnbI33E!TIiWcxvZwHW0r9crV~7 zFYWr#%=UldU)uTS20ZQ`IDVL<<TqDz{3^dzxbi&f0M+k+cEbyiaTld|B=AM7Eo(H#-6m}w+MLLe<^NBa<%^g zYd@YlP`9-D+YDsR-?VN^%Xp z|0@R`_dnFnweM&b>DP4pwf%7OR#6vru*l$bX=RX>QYbTXszP?2DDu9P0Kq8$xxY|#=1{~hu6=WiETw@>Y zB7P9?@Cqss^U#je^EVlIcm-U0f2K1mw*R+8`pZ}z>$iX(uJefa-cG;%{tbO7t^cM1 zkN!uF>)HiX|MTBr;O&4X-%G2%26&vm$jQTxw0vLK{PFyV9L68lME;8hp6;Jm#;D`G0H*-jT7Z>LJDb~jrly?3^0}mls>wj!RTK^vh9+t5GcxnAF50?jfmZv_U z9e+zycNp-ng(YHr^j!=5g+n4f1$aAFKl0N0zZCcZED!sL)c$J&hiAA#{pUYv{XY_T zI=^!0_J38V|BHaf_aE4A)Ge+4Q^4c=!G`hu4YiB;`V!Uq1iUS)AIqfmzq#wL`wPat zw0s2c)PH29<+s<-54hC)C*W=CjK8${&D|LL$)6ieDeQs8^B@q_CZmDk7OGpg5YB*SAK_b%K+xg_E(fbaGX{r3eP{fFbmb?-#` zNPlV_UJlBo9siTS+p_v`?ozw(YrTo;H5tX6U%Bd~Mv1oo-j>ym&*&UP_5LJ@j{&~! z`p4A{;`alO_ZQ?;;Rn|ME{XV`z~lK38D!hyFB}r_qu}M0E%2B}8>swmO;Ej5;Bo!I zJo--B_4gw1IDe39i2fSj>HLTBs{%h<64`G%ni)T2xY~|&iBA9??+>V3u}(SGsV@gL!{NES3MQ9jZ4U_`2sGYKJR-6?ich)l+JDdnDzA^lXH?It4v+DR zYcQ8Yd>ZiRKV&e5xy}LN%YZj!dGtM%V|(=_swY3@*Z$Lx{`UnQ;}_SSR`7#!kV_){ z(^&mzJNk~w|JDZ8+XFnVUzq0_d)PMd4}phQ2#HvR{g>AMK4X8KpK`&SLMe;M!?zZmxz|L}ju%_&j*mQ3RDY=K7>6G!~N z`P+m4Z~Ipq@V20z&i&G^zXsmS{!jLEJ;PJ~qkzZtlX#M~&Zy@f;*YXC*-f$@wDuA4 z&3u^ePmo?|{XdlDNiRvR`cvxY=gMN+Wd9A|G5*kgv|U>J)qI)v-wo}*Jr72Yl3!{c}3-bpOUSq_uw^s~_hd+Qc;m z$o`kW_k{lA*#mV;%WL~F=O?c77F5(G((ej9^`F)ds#BjNeg^P({*=b|*e>x-{>=VO zytMv51H3)xZ|M8$jsZL#yh8ZTerf$54LshTrMbJ+?f+@u@%=gVzdoPWeMbIM5i;lB zrtlDbC$0bNfJgr!*93mJ#u4dX2D~HiGuL2 z-yfp?HQ)#40;fd&n+LqhKiGdAc#8jq^j|CVSO2-rJ?tRaKN5I6KQ+|<>A=(dzajS5 z08jqscLW|eY1UBEKQQdq_;X#m zuz$qQ0p0@iV;P=Z6z~@giTGo{)B4j8{qKRt_>qQ1^GN^DaOVC&YcJOrCVn~abbiG$ zY57OM)B9&>`at@1#Z3HT>^Fq>1>TO0AFj67_1`Ao@%=lNA>RUj;gHDw$H1fiq_G{F zCthE|@Tj{X^Pdkq&Yye;KU@;UPshlA>;DAcO+i2TU!IF{s6+Zwfd7~M?-ua(tp0|? zfBUFk-=As-9|%19pR3==J=Fh9;Bo&@h6m_7@*~yzlO+BI@c%M@1<}9yk8N^Yhe-b( z;A#A%Swo0djA7yj`$>DypZZ+4oOnCn-PrNR=hFHw6?m6AJl7Z?{SSbLGwXlxFD>6a z_TS=H{Ez(pf8@Uc@5J_>Yu|C4$ba^6zv8DM{6gT#{|(`90Ppw@_P3w>Z~YGdp5{+O z?B5OizpQ^Bfd7~Mulp3{@0V!aNqheF0lp9TA7cVpY6tW6C5oR_z~lNW&Dw+Q68{W% zE8ubM;kx$K;bM;+a{u}TkfXDuD^<7=wIf2Ks1zwuI*X0+m zJnAN&;`6^Hs(S%=oWH2QA@-|J{dNDNHvgs@pHtoOz~lJ^^9|9z1bCXi()fV%-voXD z=tmY~fU6C}YbG-K8#;cGz}J2Mj^_|AiS(aLWd42u8AbTvdJZDK|FmE0H{P8LupthK z`1!!&`qvT|CHUbwhlsxnJl;Qv*W{oZs}SFOIHV3K|gZX2lNA%MEon@asHux zOeC4ypZ_J^XBLkKufQ727ylz~Gn@JEN0Z$o|7c|ClGgttfFA(*Q8%{1HIbc5 zfJggr-9-Id6Y*Do$N7tP<2wi{|64m$Pi8)I{=xca1Fqp*67kl+Q~#y$0r3gI1Z^Z?wQ-}Cfz~lNu?{AvbsZ-yt#1B}=oWF>dHhz`>?*#g}?we#2 z=`RN!&#zqf?caIhMa=%IMGrVi(jN=FGwVODV}~k;KMA}o@CvM6IadBn5O1~k*ZPn1 zkHKNI-Tpr7lwQM;u77Vvh!nya!;_iy562DX0QrUL{Yg^2D&TSb!1zI)){#GPR8IVqC5--t@`r%8 z1pTV4ey($X^tVl6)=#tx%cPB8FW_q}Hmf9bFHCk@#@Lx9KoGman59gG1kiS%y(p57lcr2n^o?+*H@J(7R3f$FKH z{(Aq<)%Vyo@sYp}W&Mx+r*f|PFR=QN;~IO|HtCUF_Urx0-*nb}PW(XN(SBO@xcY$j zB;b3n{m1sHow~aIzu$>J20X?O=9L=2e*)fx<1`)iX+C?hn*=DzA^l zXH;(-@OGe|#$Ve0Zvh_d$2Ku`xt?Q4e+BRsz@uI)llJ_mx{9%%+Jh!IC8{3;Jf6P^ zlGgssz&iqu@q;Y2OYQwhQoUEeUkN;}|Cq;pNs|4=!1n?BNk5hUiKB9= zH()ih{?q*d*AXs>_!QuKv;M;v;F^d(1w6(-^_%M+M!e#hU;78H|LPnKAl@GMfuO$y z%So$$4)A8cqi$?dTK+Kb`2Lv2kNohrZjk*3Ynk`w((dgXv1n8%@!8W)g;>&>V&)SciwDHqA>wkH&<8L;Qeplda z>gcC9v!$p|I$cb>hjqxfeV;=IifcUt7#@MmVocwYd>z@82ewMS|-|)BIj;!y0v3`Eb|3(yY*0Ur& z&VQUY^g~Wz{#4>4f8fdG!anoQ5+CbF?z-dHnE#Xbm_Oh{#{FQuzajG*?^LWG@Nn%S zHxA}cBtEX6!N;L2{}}OGi2SJ%f2CcD{S#v^*EgyD&c7e=?edWSP~xNi@GUp@QvV6W z=jTt5%PpM$a=Wwcf5Al_=e-=6$q?(rV1 z4F5Ip8wtKD{;M3#djAbE;E+?;S2yA}5dOi%HHe(T{N;c6mwOGy{L940`3F9WNgNOI z9X-6ZWnHzR%~LlvHCacODE}?YFBqYCe+R9q@P`oJFAx6j5x-9!_)U-JjlY%nz4PF| zaAelsKT;)s{fXZ#5B@I@zop<~?#O)xz~f)(gyQ-SO`H`J7a| z|DY;=8}Xav!T)RGyXJvkH!5%Z@x-?j{xK%XUO((6zI`6ze@A>=f2f-OhNtq@|7pa> z^^>apKNCMM<8K|ExB0h__<5QCal~(*hyL5gDE|K$RrB|V_<4!H{AtDSFR1E2koefY zROMeIKJNe2Y3<!aR?47FYpV7qcEaHb>W&InR zRXjgs9%F8O;P}0WFU?m>1Ah_CAS7dV%7|Af95t4CJLu?%9YvSYn19cp7Z7{#_g{=N#4$3XeAN2>H<+<5my?w;Dq4*KE z+}y!7^OGffRpK{~Rm@+k9~8E$sQvvX>-iJknc_$6a&r%>%s)qb2jVLeyOdw}qT=}% z?6FO>=T=zPh4^;DKl;FOx%`>L$NGaluASwMA^V9YKE@yUuK*)53-jIMvYsDpdhsUw^3*zv-pC@%@R9{HvP3EyTzDx2pUHdGufAvf})Qal`(v z?D)A7KQHrVD)Djt#&~1yDm#CV5TD=w!y4v!0ed+W)_X&IUO!cd!23{6T(mLY@=DhF zhg?~H0P%7DM(pT2&Y^M&`wtU*)Nv>~ehI|K^&hy1L0NvCtN&fU%JN4EKIctY{(j;& z5%~jG+4=K<_~<|Sj-o8T#-8i)KY!E7LI2Mt=5HoG_D{~6vh(K= z@v;8c-k*N{R%d

x%fHha77Ejqrz@`EJCwBL5hF!#{L#sxp5e@p1o$Iy$cc+K z=Eo5q`v=ZH7<*;;YBv;oo;N&?;3KEP{>KvEk^F;)>tAL0Cj_7EG3MkOZLF8?rsDYx z>nq#;dV()EZuZ0e#}gm-Uqz?^{bxDr{SANX-BP?ipz8I52l0{r-}e6I@DDlb?@hynY`yb2yaQ8n|)-%4XSpTZ#zdP}9{^9xmKaTz)VE?O$kNjcm(0{o( zV1B&dgQv>+GrFUAeyB@)*epzkoWlNnh%Y^V$l*eV`3H#aLH&nJZr`EHe2u$V=TFQ5 zxi*+@M|_MQbCvD?SmHYqpY1Us#+(Z4MG@bc_!v80gE{fIjrqFwvaUa1gZEL^`x`Rf zo%oo4a(Qfz`HKV}b-B5R4d%ZfehZO5Wny5y`F+LwtHA7teZ{^gDV^JfrWI)8Z|{hMEwGe3^_b`(GMPsrqs zA@gfL%-ipO2NECq5B5)G3j2>HK94`k`~VJH?Dz{&3`uu zzZCJ6oxh8TkMUP^|9MLMCd7wdxoekHfA_!QW5xN8Bk@$HDO zMn#!1Wd9GJDDubshaEYE`IVk3?w>IKu!pcbHyf>*kMkGw;a}PO<$I~P{!(@PorsU~FZim=|53zuBtE$4liYFS{zv37{*S~* z{t-V8xoeR9*MIfj`B#8!$SKV4L;QNeKX}TX|JD#6&tH)@EjrjPY~@r~?;7!KB>t7% z|8)};>zC(`vg0>__{cx69k!EG>}ccoPYM6v7o-DgSWaPn`6R{l7vfgs`qPW}eEo&7 zXS=z@zv-U6KPTBnTAU^Nk9Fqt!M_}D` z#K-*~`(@0LOpVOHDe;f^mF>TFvSR(hpIk0<*}om}x&Pp^96C7_)*CPQ=r<0Q=fp)D z>m8Bs3zJ-KADI7%_`H8(4ze6Raw@D>^-b3E56G1DA3%JZzg1oTn~2ZXpG9*D_>VS@ zKc4s)Kjfa*;2)~lR+(QmMe+Sl5uwHMY)KL!>kTA6&floZo%=Au{2j!{{*SfKGPLJb zST~jU_QaQa-eSAVulrW9e_-7CV4a+h`SXd-=ReE=xjA6|DdIO3;|H0t`+uo-iuX^! zRb~#b|K7xhf3C}&L#!W6d^<_}6o#zA{8ZvQOZdvJKkN5d&u{SjLD~HGC%*LhNmlTr z#PJ6apP&DMtE~TL#FyT`DeK?hgW~#=<58ABkoXRif4O;Q`|K~A_{blxKe=|8|AP3n z#rT7(?EJ5ms)+y3xVZi|WdHue$M`98?Est14Rcu$NO||F4PfD(QduoJf*3=1=&f*ncqp zI0lK@Uq3QGUc!em%l}Fg4Xo$(S@HY{{!8RWlC(2_H1RQil)3hU8RqXMKIRYCc^yhz zW&4r!9}(Y!_`Ggeo-IitWWCyHiv0`Yu0sc1i^wX>_ai>8UwHj-9Jv``{$b*`B0i5j zqg=jbde-m%BX?|9F5iXtxc`KHvD`?KcJ?!w_#X{2>=)zSS4S`bFNAS%b`vPebNz3~dLG2b`e!|sbNz3~dNTx{>wnY#Q_lLwiI4nq{ZGBW)mi@&@$HB& zcipl*=GXh0_5BIY0oKV0nLnEN*uRt+JJ@CZdE(b2KGq%9klez2&F^{p{iUwN$NJ~| zp&xPz`(H_X#Ls*=T<9?WBJrE$q5oPx^2TpNeB6Jin*T+4^nZi+xc*SpzroME{r+TE z;^)PG2=QxC{Fu8X|6F3&5g+z=4C!O8h5cV7mY3k?N|Gor-$-2%zcPJ? z8RmBteBQs5?f+`xJB$2jkzM3aPGSEk#J7{=pSe8;1o-u=T~BSAoz6GcmCIJLoRRsp z@+tbyadSUd?{CO_f8tw_e_Z!y|4lg?IrGDa?@oO9$Mqk_kqzZPBIc(NAMbB~huB&E zALVQ+tXC(07N2F=sQ-_Mbq5e1*B@m_1NXklj^7sI+l%~_BEH;nIQxGg;{S90`uGm- zS(^r?)^p>=w|3s3r_BE?%&(-O{(Jw${g1NwZ%KTNKe))hvizyU$Mq}Xmzz6M{XNbJ z#K-!9U%9@ed{a&J|NQ+y&I@#MDy%nv_)SFos`w8ReC8^<{t}6g`G@?$#-H=xZ++nS zD-}@BynY9lkH2xGa^`yx-;(^Jj@Xrb{xggCSik(-g;DA&yU*-DhWOln_}9%&IU5=C zzY*V_{PVg~Hvf$as{j7~OH?`kO(8zw$9G4_zudy{pC!Hn@s;7i2lERR$~yl-F4qq8 zn-d@LWB+Fv?BrHhcQWzu{EhR@D3`BQSY53h@#W5Yw#)vf5ueXrdfX@jnSX@%eE-dB zPzL>Xt`dol{R4AHnLe=pszua)KYxT@oQLET=1(DhQ}WLoW%*IWZ%=$4H)Yp<>7oig z<{cj#OHRn~k0pL{@{io9a{h=WKK3unU#vm7h5Z*Vra1q=KMt1XW{36K5g*sj;3`v? zzn1uR#OJzP8?66;_~yjN{-?_GKf~hczn@>o^$k7tKalu%{>gR5+-$L41o5%{5Wn2L zOX@$F_}ITNe^ucdYpG}c{du1Mxy8-x9RFD2_a*;4_gT(*e?!)LPkdbeVBNun+%>>_ zhZ5?)|Nkh+lwH38#BWRfiJIwOZXVcwQEkQfm*>B-{@sc1DDuZP5le1`bwee5aFmVz z4e_yldG097udbuG{s9j*I4;DJQ(?Vc#J7|9S9bh^iI3-ZoPWlge4~y1#}gmRtxIr*0IpA#R~56ow~a`_EPXN^BNa{Es{GYjtd={w`eiThOh{|CmAf1JON zJAXQqUB4I0D9#^<8;7!d9lfmetIQt2d3GZ{_78HM>09m`Wd1_p|xQ=xor?7q-;^X=s{*lAFGCRQhVB)(7KKus6UXW#h`Dw)O zM10icK0AaT=C`h>xc_9Q%8uW92_N6zupRiwsj&b4m9nnivG=k(CobApZwK)mMgCOb zXAmFz5Bd$8Y!^OqDy(O2q*#CGw<`Xp5})s%*k(?Cxs7#C5Whzr`d^{4x?0CP@JA9K z&+pKGRmT4s@p=8KlE0S5>T3P+5dUG~x5z{MvrMv{|ESXcyTr%!x2pN8R3&eGKjQQL zrAqwAh~F&_@#|Mr?0?v|aSwt+PT~1KfcW_S1kWz<3{%b zyR!Uu#BY{|{#%+V{A1q9^-Ze3^VFO8xPMSJ{}s#>^AB^Ea|-*p71r%feBQqyQ+ECy zBtD)Wpzp|mvivW^Z$f;cX2vf!ha7+Xnt99LMdG&<{*gnRL**3quU{)~{s$2s_urg9 zIliI8{v(NRPkdG9Ptn?0_kU8mxy8Z$I}o3*zf|EbB|i2aaFKgu$3KqvPI>6RiTQu8 z-<3Uo3?;s89{h(BKQH6g$U<@clDqDZXA~a45ya2S{@1jQV*SG=o;}I^4v_s%AwKRO zz=sUyVL65Qhl%e;e9Rk`DZ?LGPZ2-PT{s8JE$qwNNd74ZY} z;J<%U#rMCe=I=7`ee&Sn!Y(U+s;vJF#19buRhj=<_F3}}*FMVLKa3-Ohdhkmb>jDz z@RglEwhno_{@g-*+&}WZ@#jADx3$RgH-q@t{}8uaE^IQtL9?vq&yZst$|=krNPH*q zuj>6%B=PGJpJV6e5V^&`{=X6*&)=A@?DeyiW7hkl@X6yK*S|0Ek$;YdQ7%7N_y-St z;C{&E#}gmdFVL4eccII1mUU7*f8}vk)_(-??a05}^Dca&u>Ws@4;g$bd;V$UtT=zN ze`Wb0#K-ez@DLNnMIUo4toKFml^Hu2W`1WEMgHW@I}VEZYlz=mjKAEmllp%~eE$AP z6~2CR#r#(_elOzV`IoBu*8<`re&j>$*h~9=n)tYW2A^|^_S_2VrV*d-|KMM44w-M^ zs(AlH)%|lE@q1AGSih>AzaJ1E^IuhdtrmGZ|IH(QGxCqT;rWNM`P-}9-_|;n} z&cEb3bNrP(f2=3I1H}(Mu0NHH|1t4#{s0f>K4tlat+SpVtHSpuKK2jzmFt^Sf3KCj z#P`p`_?7ceSM$vSe-iO=|A5$48UMG$ACU)suQuvx!}7qtP5ivX@6=X3^Z%b$wf`rG zKPnILTeVZq{Quuo^&gT)zMf~^@;8I{xc*l){tv|On+JZ!_KN!-RsEkKeqQ3Y@XA~M zHWGhG9{R7{A#eSkKzzRb!TDG2H87ul&k!H?U&udXupy@~zhXzl_s7`#mAM9D{v6`- z`zP>=IOG)OKO#Q*kGOFt%dgr=@%@{s^KTOIasP$>BlpVY?-=oM{fFxh#GoucmH7Pr z0nwHI{-b7R1s{G@iGLdL9VmYI#`#BX;qf~o{Nvn>!g59J?>||upLf>%1MwYIbu3zxI6J#uhPELjO8g|Kg{?4+Tc-+RiBLyG#e~_`9_5Oye zw~zRkKghq_wF8^Xe?xrqpZzO4e@(k8)~_H65m$vS*Ea* z^H0|ONqnq-_-9$pOhqf}+H}j?^P`D*#nW%ECX_?SP~ zdr){EP}KhZll|``e#<=MKZE%A{S8&e&%H<1{NtGZ9(7g=>#iq0_8;U=Zth@(`A>mSS=wyBK&R>a5t%lo$+E_B$}JmT~7Qs!ii zLVSDjuj>52M|?-(}<$DQ#zd zI`QquKi3(hy4ihZy#@mm?;r7bhv#8-9I1@?3yF{XqYX071L`>y=HDPbu79xpYUD)t zqmB7m0~P+kNA6kvhx-3iS+6bev3{TcnX>(#C-{8r#CBmXr^0$yiI4jaj-BN>anZ(l z`hyhLKY0EkH}_Kh7~fzP=W_CJsK`1@^Kmzx9Dk0(C%A71;) z=D*7Dto6?}bBi7AtlN|LxPRxkS)Q8>)>}?|JJEl{E_WR;{}%Ca{zdNfb8{+bXMXV! ziuf^qkV9qjXHR@bN&h(y5?9%NWdGBNZ%2Gp&p&5~kNq1?*d{*bR#;bkWZvd~ed1&P zRc7oE8~YC+KE_XO-nd`P4<$a&fBX)e+`@ddQHtL`z}Tz8??!y=KdSQg5#Kov{4d0} zljL7+9=ZS4qZQ+a`H!M3e<<;>f8x6nxoZc0*#9=-|Pdf2->MDDm?$ ze#OQruAi~~amdXf=g)=sSU<{qcO}jLB;wnP{6ntn_&+9oGvf2L56>gm%BgVtmgBOn zAJKQdkI9LPHs%i_KAsRld$dMgHI$ zHkBQ}HpIvIOV#n8OMKjaVeRr7ppUs0?tcXF?THTpo}s{ooWlI?#IH?!tQ+(}+5Weh zq_}>O%j4MC{}STck$=>&_F2w)e?!*0PJF)qR3--I8_>#kB>xzHRro!KkLPF1W&B&* zENA~Kh>87|c|4C;?{CQb%f!UL4Oy>k;D5*eZ~A}AnZHEB$Jn#{PyIjZ ztaqLG`2Gj^!~DY>kW-kiJzeqp_x$`s4i`GicO^d7uQI-+{6OOK{gd3eE9KuKKCYit zJ%8HGP(1&VyKlia3ip2w@$vTyc<(QvXwLN~^M4W_*U!rA9a8^}GZp(cWZ1vt7WO}u z`1t!Hs3Qja4xF6A{G-Ij{8MJ^V4wNv#K-t!-m**?|8-_5_=sJZ!oK(Ab|ACC<(8;N=-bumd`6G7@F+YR&xPHR^4H z--GzhuS0yk{*XHdo0C5jdphXvHca01p-8vmGyrnr2N!?)83%I5&+dSj zLwJ`4`NTaH&`6*OA$(M!1O26UpEB#U2vMX6yXJI2pYHK83lR3|(t&n*_LW(H(4(=; zEI_o=+*U(w9OyuiBJ`WlfqCab2jXr?2jujfbf%v+qTZGeB`1VG+RHNSbtFXpy3>Io zMcD5FA(bAPKmUsuLti@3Pd|bE2~mLH4?u+q5cPqmPyymvU?eJ3qzFCwU6oAz(P*TS z6T<(vOf3Z>uE})3&J;ROfXLr;Iv}4x2TFE`{LZ5Td0IdRN=^uS3+VuFIUOiKV>*tY zLPd(Odn{A>Uxb|qI)KMTdv=Kao)qms=tt23yU}!@ND=KZnbQ9v^v}=%JVyug&eMSc zMEwFCXun7Y3J~%*RHy(kj<-;u0z~_5RHy*Kze@+?_vk>$3DLiYbU;6z4iq59?Y)@9f*3Oz$76DBF;BLo+9K@1n;eo12I27iF!_mc+!L( z5O&f9ei4{Kh$2PkeWe5Z?{uL4gANoR>OTekB18dV-ziLu$Zv5%=xO1HK-kk3bs#?K z&=1H<2{{lSbp@6dSO!8WQY=b!Ba&m^sZIzxrlMYl5P51qhyuh%Yx;rs8Vj_8kO~ld z2T_+I#>Yv>fzWdygs8cww;+UGO9=l!h*}9b5OH}5>@4I`M1Ojc98Er=9f*(g`e-Kh z7IGlsq1OU43lMSm6JkBl*Ug#w^tEkfks^5XbzWux;v;>%m5KB9nO$cQo`dwJ)XNSe9y^LrF!oHrU1984F5Op~SzM;_1 z4l$2RM0<8vjM^=z9d_ynJs|pFCF($YY#{1D=vxyaUR!|lg6oGIFKLR{-^COxQb5&A&b+bZfn z#JhtKaUB$LAo_cR5cBh-kOLu)CWM_BLd>u8qJDu8MT*di6>=ax#)&!*A1{k~P6$6Y zNDuyR6TBrWE=CyKhkuh`f9ebs#=|75H7q zvqSj*CG^y(0@eJ4kQbmI@KaFKix8rJB?u8$X+r4h2`o#9_zekBfM~BM=sXCm5x z*new@IuPx(MO_&L&s^|;_-HBWIU(kajnK;uVYeZ*L(g95DTClU2p$mqbrW?U+TBGR zhk{nHbq8$jHKOx%t6JlQ< zC2$&HA*#7UvXfy+^$k{!bC3egTkeWj=a@o^3PfZufjH$X^54kDh-LLUhG z!J-bt#}N7f`=LS(L_Wg>9ujgX!p>nK2f|N;r~~owgs20de^S(?2*0OD4vZm$opXdx zjTQ1ZRHy*4&aR0%5O%MNIuPx52qC&pKVa_>A)ckbBZU5YLikH1MESo!*!?K%Wrt}0 zB-(*`R4>-yA~tT`c6PAnYy`d?5C{b%e0LQOJSl|0W?17IGluTLf+;guQKq zu(LJNuLUL(!e0s@{ZspZ9|ED5D%w90!cMwq2ZEO&>QV&ntB?cHzx-qM*eOr#&@&KvQiR-4$bqO=5cTX3 z?G;746cKl2A;tnK4ks|bG2)&u2U5aR*E#yGhnJ4N% z*q=|RMYvYTfsn5gxL(Mmi1rOa4uqdgLO)2zr3g`okV_Gw9YPMo$364|_V)@o5c|?$ zLijl<+K-9$>=672(GEoYxTph>-_xQFgx#}*&^t$nra1f%i1y1=2VNC&AoQ<^IuP~i zq7Fp;hNuHkze$L3xFh6Jg#CM>{h`p07kb$t*6mYj$N0Syyi`J5NBkg!zn=ns5uyMg z&rGU7*wH|e1)^R^)PeY@CF(%%O9<2!s3Y2e=tn70mm+w&Lcg?V&kph3PF-rpa~wON zCq>wIAUV*H5czZ=#PxVPLUgsGXzxsj{cez`2N0qFabGx=5TeQS1MfI2B!s;s5DG+n zIo08BrH}*BpH-p`M18fWOA-6QCLxz1^n(O%vuKwh{B03(AnfcA_3RM#c2YZVm(T;E zzFX9#h&=5lIq(P}#{Ia^lOp0cA=;w}v3_EOUUmq77ezY|^*BQ0`?in+;rD^41Ci%P zq7Fnn&qQ5{u=iZZfw->!M2I-k2x0ddA@sfzVqA+-@=z~ENFue8gwWSTQU#*Dw5S6S zkG`k_Q7=yjJp+M;q8$jk#zJmFh& z2cm!d2w``SkOQF?AaJO_;e^l|E$U+l;eQ+<`ZJLbB`1X4$wE(xkWUqIAmW-y2)lEH zJSRjPb4d?*TP*Z}kS`H+AnHp+Jv&4k%c&iHR|!2J^1q1??VAaahY&)1;gXFOPQ{XRwnKwx! zmmtGaSa*FydtcEmMU3Y-AqQd}O%`<^>`xJODPlg%COP7qC-mkMg1{i0|G>QntW zA?&^+L|loYo=gb+H-soa=)Dv5>=63zh2BS@2gJwkq7HRN&aM0*Lss)SaA@MA67foQi8^2VZWONh{%McqZTw;)6TB0hIf&kkX? zCAA~2c7&J@-h$Uv@PN?kCa^mp^nD3ozb_%K_lFZ=-i#rHohgJUK=7v$LO+lYd6^~J zrHJ-9LT?@+c=HJ}=OZEft`hb2gjg3_2vMX6-d2(WLkN+laG@tfwC^D~{O%L_`vo2l z`aq1wVM6E~6>=crIw9&gA!DAx{zVw}dD_^!t;j196_p zPbVYTDS(rbK-eoN>Oiy?5p^j-uc(j%F&-sEU5eA*biP6vtD`AZ=O zV&1(Hbs*}A0+WOshsYeEz*Rn3)bWyg!(^Phyf#`S;$SA`f`K5a+?{-WP-h)fKZtpe)BA$ZLp!cN|GhVe zZ2Ws~5bqaapZWLRpdt_d-Wyb$U;e!}sF)A`-Wycp;op0Miu-_n?+q&Q@bA4r#k#17 zizzBn#QkD+?+Zc?a-47fy*G$#DBd4L3Z?H0LXJA})LY~ii0?1{y*G&LsHx%oLFDJ( zdxMHR{CjUuk%xcp4Jz^=eP0mk1$BI1vk4EA|3IvxfA0-urX}yV-W$wJN9Oy3xOA1iFNhY@k*9y}4I&%a zzqg2e=ihsSnd!-Ve-QI%GG6)+i2O+37la&jEX9BC4J!8QfA0Zd;yGo%R5ktRQ1wBYUH~UPZ zLm_H=PEYPSb;*U{VI6y4Zumv>k!_WB;fE9Ig)FoAIQPk%=Q_@dPF87CsqQ!WlkmUo zA~#$#UPnxHe00BIt-ktkQ=g7JTKsn9W3D6H^jI6PG9_i!5T_^3c1+rrl_3Rq!y6%45M{DE#r~Qm#p1{n)mML=W$?7|&FJI@I)<)Jcg;OK zr@VU6=BHNAkA2Vj1$x!#+x5UEm$@h3c_tC*`YH&>F+vg;_pzSw!|*pz2Ktp z{&@7Om+y=h*e_Ulr`?$`6K>UCojzxF!Gk3_7P6dpr)`^2Hdba^ulqOt@I^bSnx5So zgHdh!Y+B#qqD^Rx*`|pL9!u=vT*F0UM5IQ%L$832{#x3a&#oul7+YoT*npLzyf<21 z_L$wq^w`AZ_nNkMAGWnmS?vcF_p16F(La~3Rm^z9((U%Q7`fu>eu-Ui+ns4zV_gCL zQ)vyt#@~7DV3L26b{{M61H0EB=~wOG>8iJS&$t=&%g`}tn&l;SaZk@hW7`meebw|9n2mGYVbW!sRbYt`&GbvfESP>WNV9s- zl7xCrHJe(Rjy0Os_37DJZ_{V|vWY1hRCLSbrAZpC2i0o3pZ>)9@A)7uYcox2)S8*p z)-^1;tI?<8GtFDOuen@5rFa|P{tGHx+%lm<5$EuJ>8loNf+&p?* zi$`U4nl~{WZPKe}?8btdw0G)Pat!mY-o5Cn!MC>G8qjD#%u0z}@fxzi?yaaxqw4qn{i}JzH(=;+ru&-t93jIfQLE*&d(}n_g?<8q-w+dg=TEdw=2kK?bP}j-v|F(`9SmGndy!1*c!!Z6`eM1 ze9+_5owi?>*u^_XTr_n33f`|+xBA_Xw2seHZf{%E?qQ|MMLwC188mp^eT|YmpFiCi zbTlK`tmczvfpg3@K7W+hX7(k&4i0l$pNxFoa(mY<61#XuoQsC`7`9rB&l3jV5HwXS8A*mXzFMD@6xx_o0rTkl#02AXe~w9=w*8>dTGr_c1gUZ|aC zt=j9P>jHZ&7me!ECatryx7X8)X;##$jANQf!BvBfhiW!2P{JY1SARk8LNf{le{SVo z=IiUl4jH8*hF+{c$maR38x6WSz18h?xYid*y!hQRE*dS?cOKMs_?-6%Zq^U|Rt_nd zbm`UScS}yW-j7i){q@+n7OB%UC*3<48`a^^t(Y3C#KdU#Rop5dH=s+bzjP2{nfA9C0tf!E@g0qB_nYU8YxG zTH^TLGE;jEY*w-O{_e9f?2vabQT=AxC5U z4L-Juci6dT+|)jx*`}x4*WqCg8;%`2e%w2)5>94jEi}y=wVn6yX~3oi9UIL)r(L3Z z-M3AyZ<*(8+opv^=k~uod?_+EWl5^JtGmQ5ez%8<#y2zD^n+t4~TZMJUNus~uL zzmvd4XRtTH~kJ#_iB)f?xZ9FMjkz|l;LW~sF6l=ezOPxSd#gna zYHqmFs>sMX{q>&RaGthu&Hhcgo1Q$;Ucb-kc*)^kKfhkz!+-IXb(L+sitntt;*rEI z|E>VcYkZ%cGFaUtVfdBv?v^zs29L(m)!pM}uWvoPq-M}9gP#`W-O9XGKl1qIsa3HKFPq-}kz99gobDWIJ7!!oqCXoKxH+T2 z$%qzp{dfFwzh~Xxl~dUgV~^dP(y7(~I~T9(mL8$ER&4No;`+tb_S##cN;BLvPsen6 zTWsd6cOLbFFG=FX-!R~!@#}5-(hZDE8kSx-^6BQ#V{P7q1lZOqR;>K(p#l8{Tsc0Z zX50qNE!~#XyM1#&!twJ9#)giM?{IF;^`MG2)k8-*#!L4H{LM@*8oSqD4{jAZr?_KLvV>W$Qs?}^%OzQ?urzIVEkk#AGG z^&8}qF}15C-b!qgP~-IIr&^H@>yaEUV>_6YIWl7AYNH|> zPD$)mmfB6Qj`XP2B-PL@X;Ip!LwoA(ZQ6S7+m6n&BT&>KGbF0ke zkDeM@_*v!CrGM?XIPcreby^?BN6!h}Be82NwW}GKUgMZWdrRY&mt)7ox7rtUbF}HO zU*B4vsu=jdvWH2SZQtdI%Qt!_9rm1Rvub7G+cTyuG7XHsRliiw;%zT`=r@$uHIdp) zU9Z-*m7cYAp>Z0UuXoo7Y1Blg)9qQiFKx2aDBH4NV5^^ft2Qptwpg!Yh7qgV>}-E_ zTBO^ZB{M!0xw0nd$P3*R`mZs6?~_%eb|1}M)^M58p&}1#c8#lca`)+kB%}Ie{Ca)+ zUdYd7(&TSHx}{w(yOiWSH@!ogvt{J*K?Cf^cAl^=YvdcZ`;)` z{8z0y+8_024ceQ6zlF>DdNrxtjh})xynmM1=E1-Y@8%q9(s|Z1y+%Lx$CR)L=yIvU z!U-*!nH;ZP%hu>{r_sIC90r-!Fe&;-+okWK@e421{k67U_h^aT>QcL98W5zpECyjP(4u7~bVAi8WO+zAWo4T(G7+-GefFU*JRWa3kzkk;5$F)a& zFL7vA>i#LmzDn%YklOWC8$8$J;g$^rv_iHmcvbf9==7*&N4GAz{_(2UAQ!X9hrRc# zF*{`!U`LQ|<-&m%@gz1$NWu3ld7 zF}iQ1tM`_6s4~Z=(fQF=8pJjneoFhsYS-ktyT4B;@UVKhh8ug#*6v#K@|2Um%z9*4 zZtZ`?u9hTTGpXGxEz1|`(E=UJs8icX#|ObTZ)ZV!s=uyAF?= z^|-~%ux<O6{ICYn?HmrS0h(4GZ6>68p5S z`{3c}+vhC3K51xU?K#dhp1LiFzp`w}`Cr%e$vn81}Yu zxB1&=mf9Iq>E6!7QZ+`-SbpI0_93ychqi>fEVC?le*BunFU$E1pM2_Z`Cy4%bE(~7 z_bQ*dXPwZ{MnBTrWtnq<1L?|PG>S5IFXIbzp=0f8^e%!mqacs9S*qP9tIKUhx4f41hcp0DzE zoVEVer;KG5*6q{YnJkvrwUpY;cX8^a^s@%**1B%#zve`@3MZ}B=JR~i{C(n;-603V z3y+>Z`f*$90oo5&f1iJ{YW#-HmpYnkn9$~`XS83h6e@X1(|6kyuaYViOW8VQg zLv+p4GMes-``D~rgO?#SQ!iBeetPzCgQ5kG&OdZ##-k{YTiuo#HSFkd&)=<|*7Y)j z4@}&-aqrUmiyb9)>#e}8=~t8Cznc37c;3!eG4f{jz`+J%yL;42-@JL$L+N#@mDKLVj1`4fZQJm@mwSj& zwbvcbseM{q^49U>u5LXn1{L$&7#g_Yk=auBDQ6Ol6dP&?MBWXHS5LCCzY3Ve&am%mdT82$0o+E+-~kvs!!+HmuuDYNNdnr+ke=+ z(h+ma0;?7aIAHR2%B?k{Z>}%8)wa4zc)8UQyA7mv#};aHwfMn_X$eErdh~f-(V^U( z)9a$I_VUy>@7_(j$G8bGUwbxdU3j?P`i#qg+8Z}y6fg*OFl#ex>F7z%z6AXIlq#`n zEw!7j^Xcr@N>h%Xh;W;scerfV`)?2WO_?3!{9)Ob9_{X!#|&Fq$)bBe5&gr{?IJ#E zEwz5!dRsA%PB-@^%zpPhDEd>P#IB9huCY~Bjb7Itzt$~($8*g1ZRhW8Oz)n4$#M3y zP7X^R#>OnT+%2(7@CMySC+*+7)$5+%eRFP~PcKIfcI@5i((nP37vOK7^LePD)NaK$ z2dXZ-ajVRP(2rkA8u~9jZBR?U%C60wn;)}mcPrg9<8Z+q4})WU3py;hxvHcwJF zy=ZaPaqOcf311H+Uc7<7xz2VQN$r}>uid?ypOIrk)cR|KCur{9vZejLmyNZHjO-M# z}uf?vEYDB<1)MYmA?~eHE_(A6AwSVdEG7LO|f80yLByg z*KXz8Npn|$>bAutc5S70OT0<2(O#SX&gX--7MnSCE^K(V$*TiaRn?R27jePf)f-?o2m5~!cn=BMX+ug%_S zHj#J6<8RD!ew#||_O9P#K*rHa_0D9>aoDM8yKa~6gYvZsTdj4vkay1dO;+euepZqf6UX(tpwO+pe9|?w-%qN4v%Qc&Bt+7Z9Tp zbM@Qi>Fs<<9Y|F_VB)l;nFJicwT?`!?^n1| z%I>Rf^Lw5CwEE7m(e1Bovl!DrdLQd3wQG|YX+5!)v!VX>mS@kF{`UDs)3usCA`iLx z8+UeYy>?$&<7>6Mj2~60=XSHv`pFdw?CKKo@ynb-Bc^`X85(l;{OxO!JUB`1j(B>g zsYCY#2R^J^ucu!rb^O9{y?q@{&*@%c_Qu!)HqRzHHTqF${FIXK&9Ch1wxyFt;)5zo5CI_M-B&4!P=#PMGzialY;z*MiqAT>MrmzuwYL zJ-zeaw%_=sLZQ~xtgX|l)apJk^t$!W_8FwV%YUtJJPqSZAL$uTmeCY`=eIQS-I0 zp3Ry1Y4nMR{Hba0b{$z%b#0^Zn{F(z$sb-jcy5cERV@xIt$%5B>ia9@j?Xpqd)|42 z^!luY)b7UN2?bkjKC9MhdZQ?-?fD1K>s)8d-8P+y2kE%ZFZg0;u=Y%&BB$-+7Y=FI z;Ntkbj`h~m`Smz;$mRBLuZ-LJedF-0l6c*ucH4KZ()dJ=pf-i}eVY;5z~)%xy&YP< zxb%5_u z@Ex5Qb=UV^{%Bemjf8fSr1PPr)NZ@k?ypz9)SP(XRblJ>HUstcSq1cP>AI%II?d=h zBhxd|Miu-~_EEXRr_7@Z+l{nZ)Kbm8MY{jgcKsbUm)?D&DC( zn*8}it%n;^Qo2o_e9hu>p?4bTL-#jrF+nZnd55bzYpr^gx@ct8Wm`PI3>@QqOXq3r zHRGf29jm+SiJK%3t)+IodNmeZfS&!YCAuA_j2oy0?UdXe^Y&@ zm+9B061#1rb_bV#)M5JglPk(U8>QLOHrcj%S&i2YOB%%9s9n8%d)KJB(>!(Ei;ul> zVYplRmC7%|Cak^v>b$*ir;MYW?fM){zexY3_V4pWTdCcUa(7qVT@|uy+~pyTBSR~8 z9C0o2>XzOP5i>QX87?=T^EmBCOS7bL30hrC`iw31s?F;+9UaPEk7>R0Lm}f;xApe! zmDp`3wHv*%Nv%;FSMJ{(yjglbkG})LMWf`AC9S;2Ses8usgmGSY4Y?>d(Q?g zn_Twr!>2zhyO$ris(RSzoo%&JA0vN#~^paJKZ_m|f8hHM0)W@3z zyPBK~?z?YE*!w{%j7Ogh(SJ3y;_%0&B~B;y54D=pxyH;6AMEZKH!7Db-5)wg?Y??- z<^8W>x>rx+uj){u+^PGk%j$mEzg=_LL4*xOAOZGpiZl1;R9kl{`MM*cXSh zubxfU&`CNHW%+oRSpfq{9y&_xwz}V?-ugTF8;>d%UbB{@E-!WPf; zt`tsc;ulrzqo@Ctw&4#-DDdtCpTtcg&VZgGpBP?)FZvSFT&@_jd*xPP$X! zo|#VTQMccRH{Nva>*lDy%GJCrep!6qzA(W#!&#aKZ>e3ct6KeQtZ1LsW%Y`r#Fink z{hC!8mpXr3(>p$|JI%Tk6BfMd!$i;UjpqlZFRDK5(U{nbDmLHm%xoBTLwoq~y~7Sm z&u?A+W4F-lwijNt-u~0dwc(gG5$_sIAG!QctsWnn?mSa&&sxLLtLi6>DbaAt-62qWWE^V8C_)*P0_Enxs^3YXk_j6Ov`2&-$IUOD5*{E#eDl67@h%SG3 zmHU~Qbu0G0_N}z$uCFh81+;&ME#6D8+SD zH>ur6fg3zhO4aEW5g2c``rsS0d26<}N?Bm^Vz6$r-mhJ*ZjJm>ZROJgcK#F8HkKcL z*l^zNW&Yk8<(lTJVq{c!`g9xVe#U>d2j(??n7(`Zz~VxF`-!uhw>9-knvq`K_WCZn z*BTT1w@P$&ITUor>#pgDAu)ZTbx-@w-_%HF$o;MxE%uD^8}9vJNy(5fNgjGg<8>Th z(RsY~38(J;QkNedI9>mElQV(q<1_-+ws@Op-OjW4+tsal`d&KTVT{(Zi#>df?`YLF z>DZS-pZqp2@V1+G`(dcWZcnM*#7@JG9=Obd*j||a zE+E1@$ZKZR@HekYpHKdLr|FJiDHVsPCA+LQK6!AQQ+)4s%OrMvq;}it^?rHo^^jL5 zKTS$5^vq}RysvNPm%G=veqis`)&p1FGF(6HP_k3Xpz`i(tklj$BwYTPP(tr#x58nA zd)AoQw$ZpM61%;mcArmreQ3|k%`LvwTobC-w?Rh9Y7yT?U;3KV^M1+VX_hmzMuz9R zm1J`{^4gIJV1|T_+X?@-Mc&;AmG0|(q;^lZvz0Tukp8*1Ypl5^rCr z-LAuLMwva^yW7t{#@X>#+wl)NYFsTgH=%WuPM<+uj(YpY?N`5RU;CtQMk7~)I!~JP zdT5k($E&zgtW~jQ#oMPjte4pJliHnh*g!Y+u%3ZwW={U9juW;YBa=o6fi>vFk6j`#5Rd^7}W` z(g*fmZQQ-*p=w7~K5sm5W09`;Pbc477QEE>dcScGdKa`z%II@w#Dh{*&+TlWo4(s> zWx2TV-pkH(`Egugx1ZE*aA}uC!zXF4Oe=KjmA9^&_x4S1)=e$!Qs8PM$8tVtLvK~T z`LW%c39Z}Km>B-+NchqkUTP;NPUyWLZrqxByXS??+9t8vUuyU1!7-YjMy}a*)qVAe z4r^Q6-uc;QZP2W_H;$-{nRdZo*Ra)F>-}n0th7^)p{FMJT|Tk3m_DKl<9q@mCkX;F$1RE4&HvD z=-L}Q`W2mCcCmG22me{~J)S2zZ7{1I(({<~y_JDdyGb7(W>ly=v&h24$M-A$*mygC z!PIuk5B4s&dDD^eyF;5>wGX-&lJ8t}n2p|s&{dXY=bbWtsXa6)r9;q)_}449JI;~B zJ4kAGd%mU5>(%Mjy^6WoK!Y=T{2LS)-){8@ss-~iY28zyaQUynDp^ZOdDhMjbRVcP8TR1bK-R@{;xc~jtY?4 zZD|-g@xZ;7Q?C>Zy*dB;Sc~pnL;9UFe^C2H-L+;jdi$t#?HGKyOkk+pOvj^*7Juy5 z=de!NzU4F0Dr`7hF!}b9Q`;qWhe+*~EgsmZoJWT%iC>B}_Sw{7NXRo&|&xp-muEot7i|Ujbns|7%!QQexrQeGTmD+6@)hpkb zcfRJ!D_Iq~)6u1{y7{{qrIHWn&RycFduvu`vFh4 z!!!A=#&3CBDx#*pB;H|CyIW7j`S`v$P}p*>&XCkq^Nqcob#E5ZE&gs%%d9u;&ujD6vcI4AvvHhfZ@%R!)g7*fT*s-w6g?lMwEEWIvpyGTyTxxelR6DB{i`*NV zbiQNQWB%qFAx+oYIqtcZ-z4<*$m&HS6D?Ei-kN9}KU&s*iHr6&BRzBHNg)=g2?2d9 z>p4{OGnM9Hgw$?OsPl>E1svMF|7mu8ok@z@y7WAo~J&Ub}3}$InjN{HS1p1x7rcw+cSEFiJw+=_Ihazp#>-+JccklhwA5~!wnIzZsC6J&-EMMhjJL_)dr_x~E`C*X zMu|zs@9v&Gd3B#33+EWeht`iNUUt!{;f+ck)VbcTWsM=-nr&Dx@tO4m>H9`wq;`$^ zCGH!Xx_e@Sv6aIXXB3=s`Rbg>FUD-WYIyZl(`;_ljQ9c)yZrYFVO}G0?l=!y z&(D4h?@X#07~$41-7ex?{ypZ;mU%mRjw<-A*!m%+ElUkln_#^D=+AkJbvg&0aO!pN zb5N^SHN2b-em#!=gO&G(@zQwD9Ez^E(xGRocJB{s%qSo9X6X3$Bi?$C-Dy0sUffHk z8flJ(v0k%AG_7WkkUZFa_t~{SdsQ|p>XV+o#J9^fj_HTJBz7lA?XJ+96xDt1(#Hk+ z1V$ff-`{Us_nFJ@&apJ^*Z$$sh;nTotXW?vwPsx33c4$`E&El}{nFvMV(S$s@Upx`qdjh> zwzh_sU3xtH5#ZD0TUq~Nl`9nw-Q{(ufqK31PbGFIN$uM7YW5-Vu-6TTvJZxE33J7tyVwlG3C3Cb((B7?5w-= zxyEFv-4Q)M8tz&V>U92lisPrmR)mM*PZF+ih#}Soh?>M=&N!8~8ek0y=ujpO- zZIAMMJUg~6e*HoryJbzyJD(p{K`&Vn?-Z%sUsiR#8SkvT_eih#r)T!-R{Yu2vz`Ng zs+UR%dh8cAXvd(4?V~ytYwzPZD$eitz9~z$t#mEmtwo#{5Lkd){I{Wz;hw-+3 z=9aYbh^&!s-{7aq{07XCK3AS5wR<(J*Y@G?%-G~F~;xB z*A?&f44qfVPhGpQ&etn9A2l&;8~h>gfUn&yr>1w?CJybxFyGA7{_fPflSvowTXd%l-+j}n=u;hM%`XlSv)3&x8v2xND z3)cwOcjbHewvyPLF12fM&d<V>9ddEuS@eZ(S_RFTka%y;F&Y8o##JzHR7g^Y~%3 z)`t(>W=(S(IN_`B4c`f^zvaJ^KE>VolVPI6#rGN#yECMAP5Z{0kNjFbp~LZC#czL2 zZ?&tp`PY193a433KYb|p`}fGC8eyLKryLJx-+5El>+L2SF4ROXcG;u}UqUPR*P0uC zL;4(Mrqpg#-?+XzYah3nJ8MYQl@GUE4nDS0-8<+RQrO;9 zt^sw30NuV_Rcp$D)j}ie2F+0Iman$g!81QndI~z?lhVcCY+&f4dl{ed{=U2%ZHC(xCt$$*+i-B2aX-id+(^*3-|%kqWZw#V?0vZ!w3>OXEVw zbR^xa`=&n^Ji=Z{tT?|JLf}%Drz4-zm>@Dta_1>UJPo+fpqtN^%`2OA%R*ht!IBp( zSovnDx#V(rRrjB9!D1Os7?Fs@0#rW;PF!&5RoX|4gE&jr}h{?{Tx4VEF z1GJD_S*TO_>S~#3 zfQF_b!F6f=qWpKOLni7I@*GOkw@s8Us6WWo(vVRDZXD?Dd{RC#N$kTXa{v*COi@aN|K2 zh4yGCY`tWN`H)A})bX^)ySX$~dy7gZy*>)9CKD4UTHlQH6|N8!`nXB!-=5pAmz?3l zq^N5@SZr90^X3Hq?{|Rz-#9e^bRo+P@G0r+-9pMEre&5MK`DVo|HK8kU;VcQ)i#ny zDRZu$L(%E&_hlMbY){QNUA!-@zw8~Xjk{3S1&Ov}Jsg016G1mO=q!FHAt+|Ff+5|= zv^`&7;x6^27VDDUWh-(i82r+8-C2m) z|MAc(R@)b8zwVHaav2*5xXGYqBMMd)vMN=*_I`myesL?2HX_TwNg?ZNfh`Tdif5XY$WbO zJL;!gcoDO3IqBN?7iJd2um{A5xSGr4=H-kPQ=I?o%4yl*eG&!nJOb9bnpkXFz;EF&HdiO4XX=*Jx;zDiJ?&c=dD2LPw6EX`%!`Xz^=75p|dMb^|OY+ zn5A!)>fUNOrc!Veztn(y(?FM{z_cDW5iX{El*|(Q%)zk~Wmr8X;di^4v)C`eWt(pK z9M-I1Pf?!36ee0xle%JL+$N}AJ{(_$vITrq;&XTnpB)pCA?XmPPHrVLL~_qMrf>N z3nGKk&<$J^AT!mO2i#21jeAE@;_>=5qvt7|%SUO*OYP>z!GcuJ7oa zNOys?;5WTOd|_yPmppSN=@b-mW@A@7TG+tHj*QXp&B)_Zi&);5v9|(8Q{cIdY|zau zSq#>Tqx4k&esC9#O*bgnl+|=i@%vRXzDN(7nQ6z2`V~9Hu?B2KtMD;q?9s!7-9PC% zMK5L{q(rWL?WR;9-yF~_jrDIM^r=~lCcFAn<2#VmtyC4KAwBv}ypg`Szu_5O(z;O2rZ_De*ib8bei8K;F0{{9p`)OB@V z?aZau{f94(WD}ZAX?Ng{m&CD>wggI&IP)C(s465nOQ8uI8w$BIP(WF4zrP? z8imA2+w3^FAN(um%EMcU2@Y^AZmDbi{72j%_{v&^po+1NtykxQQ`+Y@hPM@&sV7g_ z)ZnzX9VrB@HHs7AY8;_`b{Q(#jh+J@T<j8`AX4Ht)E=yGjGI)Yw& zBXuiZ5s-?2=>N1esCKy`CY~GgVPoKXfRsEtr{~f495$L+s(zt}s zP)Skx8x3~UM5-p&am+MPhVQKTqtHtFu42De@s_Vq(yl92Bc;fbVB;%TzxSR0K7)+( zYevN*MqCSUi$Rx>Mv{`+2#OPOZ&1g2!b*iwN2R;1 zH$_bv9TzGaJl+Ic2Xq%Z^lLRc;vbF1s~>+t&_g(zM{X^8$FK~Z$0-HfWu7F3T($+s z20Q6Zq@xKza-83bE0LFvF&-VZCv1eraPUs) z&&PxgJ|Dh;Zj6Q1+ET2MofZepwPOp{9HL-&5@{bcmtM5;2=0;D!SL%K3*Eilm7$at z@9&+wh!q(QUm4c)ya(Ulxa6B}f&0(OK=%*ikH4fyO@6b##t2m}D!HM#PCJ>+$p~z4 z7W2b$^#=q!*RRAC#llDrbegsACtuAxjeZe55P#J_<0mV<6x=v;mBk;6V0 z9A>Ft8gpQ@wDbsu>f2j|FIL`RjR-UR-b^q3O*#>yCbMan zW9bb5w*qwY2&Q@-y*{uj{KQ-|qPN9Y!|=T=llE8U6eq+&+1mfyd^R5LUmllDQJUR;am(b%D5x$rsYP2~ z?>|s9Xuj1^vq^XKQ1r-5bC&7JP$W%}$Och0e@KfocsCkn5e#5f;)c(Q+JnVSE3QIZd_1F$;`-V*@ zc%M~+ZmVkGTmXx>tMOOiyD-g{XDBD-k1(8@oD5z4v?*PUuXT9oG4Wgv$P|OO1f}EO zF#Aupr2V>rGV&TQLz$mz0@vSaK$l)bXKX=iwNU|ieR|G`=Y&{D%+ncJq~>7>UI4+V zELh)e>rEeXInBh@zQ_VpiSFAdm}53}+Ii@XYDc5@R1-iQYC$(%ojCIZD%=8Y@H5XX z-!2^1->7zx7ghR`-pO$jb+r%GIN$M&(b4jVCgTe;<+Sv*@E@54qfr7g-XyLuz(0ch zvpUc*kER{89kd*P}JteYG+EJx2eeJ{e*lCr_q2eJ^{ zZv)I{DRGPr4;5|=%7~lbe#Cmv9VEYXBWQUAIV8ftz2d8 z7*J1yxeP61vUE&>_p0G!$PV-(!KjEKnqlKr|aAj<^a}SrjQ;m5aYEPlzEBpc0JjBngG-rGlYi5dO%Rc6Sd%GHO-##oqFk=?=)2Hy`YsQxP^yoA z|DfZQrzfu=oh0s4j0ml8R}*NyILRq1Az3(?2Dq)DtNP8m?Bwk!9oO4RM0gcW^$o&R z>(Y^~6E}>aT|VQ`VoOB-Mh%h7^oUaCH_<<*Y2+ zod=nO%Tno#gY%(w&~@K0qWf0IWcYD8kAtbKwW#Re6CNbzMEg4$#RRh`47A>Q$2{{2 zOhvEGb_SEeLUDNO^c-n+D_i;(agM@j&Nv|74$!S9=5`^^J&80sw%U^ZoK|jEX@N>m zRwFn=gQfU}j=y9NvB3JVi)LL9&tb*h0xDIfNrWab^o0hIkrA3m+a5gNc7kqY@4~PW zJe}(~zQ8-Pl^xBzOvm@^SG|vuZV`ppZPO)m0s^_yB@8}EnCKxy=ow)rNSQc|%Yw4o zFTz|}+WblZw+nPhstpjsInNfqESh?Vqb|2vA9O?qoR}OllyZ;eHSyAQo+<=|ziI55 zw<1DqYrHjN!TLa79NX{eu(sQEFpL8BAG$%8>02D%y&U>DD=Jb1lAP!!^T@AID5e4< z-)^psn}i_hVcot9BqtZW^Pmvz?C6$y!d^2Li#tiZKBGh{Ldk_@Am1L))#qUidTrPJ zwV?Y4jFt$-mmmLbM1scC5-_mxc*a+%OtujsBwb0`(JJn^36_uE2~>89pC-!l*L;mV zG*%N=>;&9i(7jyK?>KSC+&*Z6dH8Bo@!#7~&PeyV)e!f$5X!PUsUk6N|GG6+R($F% ze9^(xo@$i8-L=L9Nknka;3FHVFxZ#t1KqotQ7yW%N$pLT1%mK@so@>CI^NSN)9V%H zeE)pvP%|E^*S<=IRjLW{(c=nJ?s(jf3k)w{!x>6WYk%^d)K3TU?FU_Cl9!EUIZ9lI z`U7Jr9KjyPXgA|gY0@vs<^mi&j@}W6(6}{Q$DJLOQFa|E27F1S7DsFs-_!9CmA22M z*@c7y?f~ebS!xH)*1nQ*F=6L$Q6JX}8DHs!854rooHiahWcu^ErUX&x}pU(oU*+7N8vJXg8Q@WXqfG5R2`fBVaAg>L@LS}uea^4Upkak7xD32oaPHO zb

{<<7}kpe&Ld`P1ZG1&&KbKv$y14VM^SA+oNDMAroup&Wlq=AN}~_(zVug z7TZ3ZNa_dHaAJmNHi`FeArC1U-%>pISICFU{EC9J@Y{eojDqfQ?PS;95@He$?ijP- z3K{;8pa`+SPAofH%phWXUsU{_C$c~+lYdQV!DAb$s6j$2zY!iEt1Z+=T-!ABS$lE7 z{Qm!(y&9}8aQm2;;=1MWEJQh#a_Q<4{dV8A%Iu7e(` zTe@&Yj_mgdS;Z$=p!LvMh!jqukMSW=J+PfI;xOiD&pU=O>+`!UonB|9cq_OEu6Iv> zZlOZJ^sn?pL)%;$yFG-iA7pK{l%^sAhKF=%kLED!aS`2PI^$`Tcv1uR_>%lA zfnq+5#p&!h>H0lc=0LtbL6;lx7RrS_;arvZz#6W)hGu+01HB|#SPJPy89qK2)8D*Y z$m*L10a#kv*?68o+?SsS{#cEt->8c57iE^IJTw9BB$&v7sV+-cB_a>Ve*?F<+X4GZTg`q=Gxjftpk1|K4JEWe%${rWG8foz+x z&zmyNlLp;DBlY&)Vf4q)ZEcL1KTEUi_tP5cfcpz{X{HoXtTxx%rIFJ7ohp-Us_&M) z*rP5t$%Ai)PiwuQ1BFSgdk!?XTgJ%cf@}f zr{UvB?x}*&wF7V6Apxz{IAQot(j@%;hQd6b8fxEB?##}Zff#kq2L#w_%^WXSCJK7# zI|gGWD9l-^3?ScG&^6G(Yx_&LOIW5mB{Q&JT9-e0x))-POYt*v#GsJNG4Iu-!Ft8k z9aU;jwg9r#Kj^^RK&dvh64O?WuX7dee`vYD5!6eP|9zHDg-#>ekdt)`a_YJ}phPVhiY>t?)HV^S((UmLJFYV$+66?FQFo|`+kX)8m zwV3)7RvbOwCp&^4MK}=O5EE2Mhai;lfa|7%B5j#i*k`%9oPL8R5{!CGA#mg9 ztnBPP>`yxhFe1;g(zIZ&6Y%$MFkGbWvT0 zy2zzNl+^N1x5{n#LND|GGByeahv2(F8)f$l{fv2oUvZ4hVXmEOm;$<$9HhEN?)g<4{3Ip^0z1+ky(J8Q_+@&5?U z2=TF%@34hnNjW7d?qI$rw0CkW_+kpwVI6eO=fpk2_pT0)`r&PhY>{QDwCK)UaM#MY ztYrE(;Ve}vm-`aA+k^PA98|Axkza*MRb=)=Y<7<2mBsJ*9}qhO?gr?VFujhr<77xo zT3yWK5nyxvnnX61amd13weyj$tM5W=RsCPGHq3O@FWfPlfbd9DiF9OgvTe%JU(xwV z&3%MmKWYeLK;Hd?StSKzGm4rJooY4z zwi-7{m@gev{rX8h|5Ag#TKw4o+-=Zx@1MthubxAysU>Tnf~S4qi7zZc5S_yJ$Ko8R z$=226aI_a4@3x~n4VxuSt$HR&tTLf8EE#6D)KPxN8mR+(AMb!}PTZYn)zD@gqYbs? z7E?$R&6~1~UQ223R_Jb~M7i@80sTrS(S{CF43Z1!zS00#&KSBDWHBNEdD9f8iN8I_ zK)$=6JDv8^m#752tN+VxY>^=sUW`s-r8Cb&`=z>XobV6zHom%FgOR^sPMA24v^HFZ zahXr9@SMw?tXvSpEPLf8F#vZDaQ~nG3b_0K&lmsz?g8*^h|;GG_m6?o5=)pYNCO1d zwC{;jpnDSbs!03M5L8wpVQP=2k_4Mu$oSh_erO^LIwcoCydTy%dcu*2cN*vn`~mk6 zbiMg(sBhq~$<|meR~&zcDe4|i>^@IA1U}b~KzC7<0M>=i5&rya#^{;@ z!@6z*;*a~B5uA4Z>m1wRU)#PZU-;Li1jaI7VUhs(9)s>&jq0^`-aQmy?V!aO7je1^b=~fd$z11>J0n04>i7EcmkT4@(DyVxY-Vo&_m3{yaQ zTR}onT!X0k4}L^F?J8#YbBuYM8)Zec&KY5%V8Fcq-2{CnOFW~0tGT)-@2E!crWg^E zk4Z?@T0RmNbsp?!`~A@~GBKrbH;&GO67N`&U|yFM`>RlCyl`0%v{zlxHOGvVgHVqhD+H=4z0` z5%kRPYjYm~%zGClq<`6asTh8eSO{=>XmDV^MMyVfnLG7 zF-mPrkoF+v@40}gWIa2LG2P0IS&Za0j}wwd%_R z0fetcQZ)n#0`>W3ifH-V<#!VnTWpu>lgZMpOpFM3{Ex8K>^T&REXp~VrJC*Ut)XbU z{Tr+V3JuGEeD6UQ-~29U>cX%kP$&Uvsn75V9=lZUb5RW?d3p@OXR0y0Xv&a(y1#aYdHLqr_B?CNGQ_mC(Y%KZTid6va)0)F`K#-WT1u)g_lAUc*#5 z4biX=usr1$IH&o|r;rMgF?tD%l%_u%sHh-MW;ccg)cXuxd3zTbuqhZF(Q9u!lmPD2 z8q{+@)cZ&Ks#ZKPIKJ#_(t7Bru)h6EyS|I~`I->ZP{m(@@k%_c!eOE$`H?zl@)Q@u{AoyP89EBx(vxuCEz z{9B+7XrPOB`f5AL4TbC|-sSymcr>A~p~yR0sZor4T>W_WT(h&6uSRqk67j+iQXx#$ z&7x7!QorYww&aNJ|2n>XBFrdF<#37=qT_b!v__FBcKRZd?1L7%=Sf3~Q^{xl>ZPR; zF$5wyzV>E;x(e-nm%_g4MyyF3 z#V5y;NtbwUBC~L@T%zHsB{YLAGFxy8xKDf0o&#dT+MC=c^FD3d2KHfEmc`^>T6Nos zlYv8Iu3==ZjDi$u0g|WF?aLtP*)bP2hSz`Y6gxjci)pN(tM}+JSi`de?$h3*=YS}t zdrmxrE5}YX?R9MBkbE5Cq}y5TE*evmJ)uUprNqK2^gzrKjvvfMN4V*K6<~@ys~=M0 z@lutb4%z33+2uFjKE0Ek12Q0C`FB|Q7CB=2DE@dJXO2!T7-&&7i;;XKB8jMTmB zSkZ;=HlqDL$6L^)5uoo6WgbgkVm2n=5;N7li1h?qT+n?Vc!N*&#~My|Re>nQ$Pz=5 zisv79@!M0@+QEm%t+^4-8 z&jERlhB7kOx2{2?U|)# z&2FNYMYOY$5heIjTml@QJ)Hr24oIP3gKfBK&Gw0|YL(FV*X16s|7wz0Q86w_O7rHc zD9_d&zle$2#)ie66&#H^8#I2sH_yS!;F*=A9MlTQ;Y%Q20?^HRz30;@fyF56>QK4v zKcP+k$Du(srcnRIv! zxP+klrC+Tz0{ho$0*-YLe<>;7kmFCdFYyS?3JXMkp;~=T{b9=Pi#Vsujb7Qdz>@{Q zJ_^V;$USO?Vw=+Bsrqq)^A;k|HGfTDREwq`WA#$$=0KU@#4rrjQqr(tk8tdw5#uMa z?&SKvWt?c0gE{jiZ>gOh1XL5~lU-dKd;Wa=NWDiDPyhGlb85t(+u@9#6-(0YT@}X- zv4{wV9x?Z-)6(D0;v>E2LG;qpE7m*0h@AP>Mqk7YSLCI>B!wW(rgFmkx!y)Lt58G) z9H&0b!Jh+SoX*SiBOblZWS9jq{T4m{)!C7(L7_`5_2es|>VY7QS^fRRtx4&l1t(r3 z*j`Hv8^@Nm(Ks>%5__af@utKEAYW3@tqoD-d#K@+J+{S@>>o$Vh)s_9MwYe7&g2Pe zAEAljgCmTaIRKm7lT(^tN8Dd2P|JNWv~V)4idJMDIukzq1#q8wY0m+jlD!cT3mnagMVGe4pcc5C&-RK8YeI`={hGsv`W_(#O z*M4Gf-zz!jD!!GiT*Ohrgg+TDY@&%d)UKsx{>e4CIhU1HU}C*gR=B;2sPU7g=3rd( z11)Kgu^N^I9**DpXqMG04$Ulef`;wFl` zxK51wnTAX;~UI$V8+ zsy@NtuBXyWi?3za@3}dmm;Ok*(~q6AH5F!5_E59iaMjI@j^e<2r)_l%zsNs5DRui! zynKw4y$t00v?uR5Am)BPUf)!@_HYco_^J~fB;)IDs~P|9o#>AI-rx!w(Bi}?B^LPp zE!wY8k-K+{zIi2QKgo8cc~Nfs*iLMlEWvR#HRx)ecaWVfSjYV1zhFBp92K z93LiUY`HORd)g6sAi0MWHwG~o*COy2DZG~r-r62sDx?&R($AeZ%P)RChJ;BjVQ?WE#&5<}0Qcz`{~Qpz-;zK7iT!t4S)STo<|q%{ z&bv-7120(4K2!m=z>!1cN6&jSXXu?Plyp12(a|-&@g>poHd!7%5uTMOrI}Q4Jjn>U z5ksP+n^rt_t)uTOEv4G0+iH}<>_-=fn!di)#^BXFeQZ57aW~lWA#_kl5=KE+x~QF{ zWOHfOd#~yrw&;Zm_6e9kSID0wgr_0HT(*CI65U}O`LyOnsq8hX9L(>#beXv3J7F%U z_zzpXZ#JbIRlLeJ&G(9k`t+y2?^anO3LpQDU<2yF47%46%*Cc7RpSMZyy79L2U)(Z zK_UAjYT<_P+lXrYNr)l|sZ>@{NHquId{rtfxsw?SFMH0KYcw)w=O{(Th@a+G&)1Cw zbcdzC8#ql=1zpI`4DH6{pIhi3n#}YiEG9)*o6p}4z4pjI*S%jV?m4l7 zZjc#d`|hI@{sXo)6{gmt5ECl6SQ1~k(kQoEmMJ$&85FLXiAAR+2Wg)6>lH%}MSeUBXOH#Rsp0FJAl z#(>WO`G}Qsr7(SWPH0-V!?h?%_$z~WOcT0k>QPTSFCOMVnP7@G{mYuNW}h{hf%m(y zj{8H6FFj)Qxb7TZS6xQq!TtjW==#@pznpS?5Eg);+~5~i*q@V0>+hF$;-WJ7V;eXy zEN$ezOs#H3YrT{drOk;bLtCAQ@-F-R&94?pudBDTJ){3w&)4l0=vv^B*_ZtM;E)sQ zvFxin{5PN99DUBwLY$IDRNFuK;v*x6Jhj=l&V;~T;+{VB-u`EM+ z{Wst~_5Pj%lIkjW?wEJ<*wkX3;pAmU!vTg>qT4p zb5;x$Uf?ddvpyQFK3nxmC5u#`4PpRc6eX`q%*)b{MC4(VuHXOyI`Uf5s?A1>0H|CJ zbq#s#d;veor?JQr_vG?`uD;;USv!ZV1m;Oqy*@(K>GJU{ytE6##Hw5Unf3B(sh*)A z*7dP?OzhNJlJxq9qeuI%LPw*5&e4yObpthzLH~0h|8sdk_t(d60g=Dy1eY5sx|Cj; zImnN@>r#6BnlwU^a{}C_ zG3#?czCrP?tU{d?Zub-W-`SwWmT$Ioq$s>dh)_eGJi*KLE;bL||g8zRYALv>Rj#rIk`6YS7tL!5FNo`!n7 zpQ{iLcUA7~_EmXV8r@6v=4~47<^ZDoOTDt>nKf@6TLFW=0u}!^zkot`sxLq24oDoE zTT0nUlLl@hR+D@v_q#5Lgm|p%6)bd%qT2=1v=uAFw%%h>QL+Zk7<*S=Ia3Ko1xwJl zy5k)@Ok)l_eHQ-v`kyNRx^P>a=~%fl5?9KML)D?nV$16kodb6jVVRG+#3o0SJSia# zCfsv=_uLv9$^kZ+zr?O{U^{(W)Ljvn#!S@`b@;mLif^>aY*O5@dpkru zd=3bjTCL|Yyg+SmwmBVq86H9U{>RI|G)0Hhn(MEaWDgEMpW5a+w|kAyLE8j5o%=8N zIN)9(eyUvb>hE3P`XagYzkL7i+^s0+DpN(FhAT9g24Jt=8;=wZlO2l`?|Sh2{Tmpi zGuURidTcEEP`i`vu0R<)kHkAZVCIH+q?{!{aY{O|(;r;v3bit zDIHx_(q)?U1G;&%XCG`z5W0Q~vixYpBocHxXYAxlKihwOjiD_- z95i&B-|+G34c7~!j%bL^#uefYS7#{yflN4QwSC`pmm&mkpT?}u0YM>Q!8HBom^X2C zT^K$a44YXtosLk5&vzBMxwF`*5|!p12`E3^(XjQ@CiIij4pVz#M)hg}^n zO&M^X_Fz2+1YX#pIkQ1VbDZ?8*j1mXGkQ818JmQGwBVdHi)fhumqj&S{2PN!s=eYb z@J01jWTA47gsTP*c!LI&-c$F=VBbg*bf;h({V*@OVH=4WjzqTA6cu-hjv_bJVf3rR zxnzR=d3O+B1s2mAzaNwS~o_)SiE95VU)nnx^GT77dfDn$w9tJhWdYMz*kW}9|H#2-Z}#`O?|xjho# z2850Ug&I|q!Ty;v=)QAs+_N;3;3!Xw$Kt;!ux;E$^Wav zQ!n^AAQ<@~oOh+dZZA}%-8V_jMR4+69jzbt&cC3Y|AQe26?pJm`P(~Qwm2iKZuC3< z{Jjr+;eQ9IRj;mZBK+NG^qYWuY*8T=cYXMP@n7YG>3T($PXg*a6!^X zLVhUz7Yf4`j+r>1Jd2c+qvO++(2rZk+DiM>|aOzk4#X}XVP%Zfy2sAPQy zrnE5mpT;83t^(+071J)`G1)Bsi$f%%`DD8@sWUR-z)XJGzVvT!RcGT|mSjalEM6M3 zxi}bRG6*IsTaMM#gAaQ4!yj$IYF%7Mz*PiYhre6@3O~q<=a+A>HEwX0RKx!28i?h` zH5%rfs@uQp3fEdbRp1Q}&9f_0dhsJtVcepJ29f6rUx z1O>k{Xl-Oq?vKq9SPHW%zr4+_e;wpv4Y(?xD>-kvU%5EppN-Fh-LyD+C+7MI^3KjN zzEwWqc#0%1xdU}QkCWp2SCeS0e%b6a#(MhVwiOAs%S}?FMub4Nr?rsh>!u32_9n4B zL%9udBtC0vaX}>7AMV@Yg-k-$&lHkSn6@nr>>tLV+i4<}ycWH8sDjpgUEz#^fUTE)evpDSZ0)) zV4W~cn@LeVW~wHBA?fdy+Udz9L@nTu#jX>Rmr*F~HsqDCvBO=IQP1DbM8MSsUDTsX z!fC?M>1hZ?UbR=Yn9Mi>AH`!V-&po8jzBDousU7k9xm|pXTt-bCZ3=2ldcJHkH_6}`=|%Jn&jYOL+L1`DZfG zyPH^2=w1sOE0P9-WYm;imSwQf04;nXzJZIHvp{_&f?Cw9+Fw%PbWQuIr}KQ>3_#b2 zlHs6uG^y5n(B1i%osf%P`s<73Ti9TdWU{e)dXC`jP0|bZ5R^qmIH$_|d zVNz>o<{V|m1l26SH3VG^HWZ!AM@NzPVvG`vGlfll-0>uvIMN@R``Bp`f4s5{F1}5W zd41?ku$p4n&hN%DC_`L=;6`f>t_jw5JPy?Xt`X?EVeQyAH*dM~pxv^Vy!{XtX~Ae) zCYbXck7zx8TkY43J(r4Fax+n+1Di{yGi_z;0VuKWgbMNUpz{A{Yb*9P}J|#iS$hkKqko*&YsBlOMzP9t`@0-p)d;Q;}7l*O=7=u0xC-Q4F zV-?^Fp?CfDy;*x2Gd$PV1at%Q)CgpmU)FvxGMvE^YL4m}qfQ80;EkCc3Vh@l-of-# zk2U;T1G7Eu?Q%8wBaT=amEE@9qegSP-dykZ-$)$5H3eP0%YZmD#E%14Uuq(>7Tk+h zCvR>V_(h;7{&B-`QwF7T#NV{t(7q+mG9Em*t>;x&xIKME!Mri-dH+XoPF@)7E1QAt zq14YBs^Z@kYEY2V46E29{z4V!b99`}N&)jEUII5}egoF`O2N8$-bI=dLF@97OsR;0 zk}}Rn^!W_?Apx@Bd(#|rgSc59zIo5M9^jaS<90Thxb?!4Da7w~`#Nm3uc=C_*UdNL zw*>z2D2KucVYjKT*1mIdTkw`kWU$&9c9`Y>#}5{u%b8=bwKS6JoTM}Ldit32g1JVH z7dGefDcL|Yx!6Lx0J(VY&5m&(axkZw=0av_maXiHFv$+)bkoB6+Y_z)v;VB;>t+eM zT{c^jZ+B5r2{an?t+-ZigT$o2{h|K&lX|!r!%tje1HN!vL+2e%t9-^$^E+oaIi1K_ zw5dxe88xM^*^p`Y3&4F3x=n-B1%mN%{aNP8WWveGwF4aRtH0g&N({f`(&kjz3(0Q% zq1l2ZKvmT>D|Q?VnEvQ76nE|=qm9)7eakAAI1IQSK=(T>?2J_k?_9mKS?!<5tGM4f zhir1I_J5$E>(1cVEhwpe>%P+xZ-pIl9h0nu3N<+obY@jw_>QfyNhHu*jj$ynfG+9p zd#MgrQiQGdS*iM>{L7MAIGnR=p9@?G@v&vg{t}R{4d^~nN-;@>MyXJsr1mo0ztm&9s|xORjh0Dp$ThH#rE48){Aw zU}b^klVug_lGAvX^CCWi*x(B?IX(R>#nBr?Wi)UeU=O;XZ?#SpG^675Pg-Eo`^Y^dGoP}aa7&lzY|-nu?cq0Vnh^D%`%_(>xJ?*4|59Yr z*GQ>FCJHl}opJ*11aO}|)6W4(LlK_8!LWfjdsFYi@fo3HewJ%Hq3(g{zn@t+UIk?h zl@eH#eps~;X$xgi16`)&M^1_|x6QfB;yO(i5+_Cc6L6hCH*84x?@Xq7#Lty8WkrOH zn0-YQC%(sBmmTB=q2Y~=(?ZW>GAm*1F5~N&p0;kso(N<}jG@)fg)>)611K*CPr!Y; zH=Y9$d7onEQu}bAf~eTe{Y%FGYmodH&+#Us@pp_-q04E3K+z;d{ta0QR0K}@(O91#BNzFT2eHcz&R z1AjFsyRm-O)OU`UZ<8}*ScZD17_+{E zQ2;-0A3@hA<6Y?D;CZxQFIP?1>OsD#Re;#mTw7+%d63H(lR9N<2i&K7`8goY78BmJ?>JwL zXK=CdcaV=rF^`PlWgzxS{m?w?JX6dOH<}vSXC8|&CWImXF!JJMvByD(>VRkt-k6r? z(4{an;Cg`WXe^P)(y7A86e*#>=WmT>e_m_V#T8OG`S~pmkX8(qIp(+dG^CYinPFDH z%8wgj4=MOlX{k{}B461wh8XhU58yuCbI$=mCtp3Z& zi6!QsbQa!B8q?=L7`ogV>^EAjG=TYxeyBFEx%RDtTDhx`sJ;rp$}F5$le6En5lx)X zkjoU8`QoXk^L+n4y*r)*GKOOyHGa!*oc@tvbA^;p>`i{N&mVoc+bbRj)VJP=<8LC> zl!23#+6iesB+KU1_7k`DW#5cA+e!nM$QFLuj{vR@=>ChKhyN*6mc8??ibp4zC~BK+ zO$%1aKPT77#pTSfuc?XPkWYfJFMZ{`we7Lq5$zHx7a?y!1z8uF|0#$&*J8lyZ1 zWCN?~-;(2;#+fW&$GPX#@~9@?Dw5`X7=nd!`nrV=!G?A z4Zg>ewQMGXAK8S}el5k_YI6u7bz?EQ&vUYub_f7n$U1nLUyY&6t1K8s_;O0Io&1o7 zr8H1TxY&`lP8bCa%2>>@g>+0RUrQrceI)*7&W2a_yP6I?c>RG(@GpaWUSqzvfuKuY zP^z75QnUE^>mSJuM7l@1&4o9fUNpT+Xeq6%KU3RBJ`3Ro)ae`BEzg=6pt>sUvMcS? zG9r8NG{%!=v48jqxIv)1cMbcxsPcQW(dI41U&0Voa_mBtdr5ResJ5?jw2xDYlO!DbN8cnGo)Mop7f2i#!L)yZ5&USp77m0j((vuQ^tmf)!# zx@xC%mn?xG=YY{NmdcVE!lz@_R_p7k6!+v6Sgh#F$BeM6CQp##(Btxd?rUD!Ap~^a zDkg3ocl!9&GLeWG?x`%%4lm=YA2JM~j}q-Q{SYcfLEW0b>MP$3ybAM4^T;Ci7%t3U zDxEj4ZnCC3L+HQ<+)&VUW`Y0oez^QT|IQ$G>9;jn^A7($p5_Utl6>C`_h^qW#dn@Uj6n0(8;s<{!sY>qD6xl3FT6f)MElmL8iZB2|fZ7vM~lgb(&ls5Z`P)C+dr9MM>EjvR;2=NBM1k&q zzp`mGt6Ed>+eCu;jaMH^0{js?0~99t1B)!vPrTDdBUbyKx4!Ss*ej~5DUU`d8^US6 zYE;omNWwyO%u?_F1M-aq-I3BMlFx1ayl^aJLTqkpJ5&NnmDW>kgP-phIriPotH%G? zp{eD){gbwF=O}n*HuHPZKYYAzdnXf0=jSk*!f(Kh0o^21F~m-B-C6&8NgTFMcokb; z=X5GQ~x#3GcP#eR;rNm;K!B7c^FdixAJ+;@bWyw zg6>2&Wt18&I$qx!Xwo%$=|NTNlIYjktbRgcUUhmOZ+zl@#jC>^n{O#9u9ii)@yr*H zNUweuUf4FJEUxyWr(_1)IM8*k?aLN_6|FRSyD?PwEw{?Puy9SPxJXZKl;zdMV=Cw;;?M`;;K2Q% z=UU}Uz~JMSOKjJ5Ph^??HfxqjmG4U^weP@$_rytHLcBJn>bA;#uU6iqh0Isd&C6He zCLEMMfEOl(lH6YOsAd1||M@+@M9@_Wwbkr{MbwJq#z(*niG9cOAW(LIvvuNd30L@F zI+Jw6-|0eSSm;tbapI@p*zc;}WL@A3&sy%GW{;DEb*i%dP=0!ibzewKEc&WB1Df57 z-WcqEKY}h2aw`UA6iWtMhh*0AjPKV=zj?oJZ$;!!t)QVWH2M@!_r}@tvyy4iwRg0N z>4t8-7KBPlxZb|PwvijLZj{Re^8Ez5PkV#vd_kmYxjnHdi8#}kK1z45QYSmhHa9u( zQY%CwrgAUzs8Ph+!qU=^*5!!SI_TB3Yf^&VCT{Zc?^_ju>y~8D#Yl#yH4lc-vkpov zOEvQlt144KHjDml^EI9(Jal6u%oaI5Xtyzq(`7&r-B_?4=iH8X6!}Ye*?2QjDWccP z^IGtweN#YpUx9FjKzs6IbqFPU12kS}t!zymL9dlwkb4#)rD(2|w^lLb0No~M^G+87 z^;W*uUmx>?u{VnUU9~dCz@aIQ2Ds0C+e^T##km^&sjf=$hl`iT@b@+#fkHL(+88z4 zcFu|+^9zgJ5Pq`4LsprC%5gQ-|c4R9!YV45AS?~$c_4@x-(CyhqGH451pJlAGlKDRHRJ6g*ZP0hi> zkNK*d=yHvx^ShK$@xkv&@YJy1LcN0q1nt{eOLGMXX$E8^qLs2;yJpQWoqWlOTC&l?K z1@|o&<4w_LHNbry^IrnyjuJxbGm|)@*o?{VpUhI`@q@7Vqe_g75Vqghq%Z}&AglMVXrofD1Duc?a+TTFhi^oc+_7WS8Z=Kb!(SF zElk$r_V+u!(*^5id7w+EY zUOAT1d|h0w`3IyEF9jtRQhax|2CmJc^DQ!vZ$9XjhN{R>C}#bvofDvHkB-EM67~4w zF11AV*G_YJ+i`mby>(dqfJn+f>>|*SRwDz4Lo+R22`a^TtYPxB7wQ_UmpsqiUjha> z{U_v3k-{H&RR2ndWZB2RHK;)k{}m*^1Rsy?IN_u)o8S75A9rh?%t=GW2|+uOI^p}& zqAL@+2uGFxw>pb`Z5`A3k?oy)NwY^{i!y2iW8<3dhB8S*s4Yw2g2(8oEt;z3ca_JQ0T-Q>{UGQwX@vf4>Aw zDZdiEheuW7&i9EgAHK$_mFhi|4UYWwtJAm~dQW4n&w;&`_3l zW%J%xns(?O0{d zb$-73X>seeW`KkzGm3iHi1T`GdlAu#;%?4%aB}9gF*1Iw`0m#Le?!=RJD5*PB>$oR z>z05nMF1|-eYI0&()nQ2CWeirjuuDqJCWuY^Su%Q#L(H3bu0+x)ro~R1z4ViIJF+^ zi-wHoakY&~pXuE(1p(aW+SW_HrJx&{A7{hUw6|fYs4XQ&WuDFp;gVfxo{3Y|R`!9) ztoXnx<(wG}b)3p%Of`FZ*3qedc$Mb};XPUUX4&N@pI`^hUm4Whj;)dgn4pame^A1b?Ual#^LTK;EyI8rBy=U3<_l zC0|e}j>>hQo>`(fh#uW$2DlZV+lhRVUIsDzTPGUXzJ#+61JT!F*6%2Jy+rvqA$6!f z1MQBxxw#K@cs@ge2a#=}wq$bY=RrUiKWDa?7j^9@IIpe*U8SDem^P@^cZkPt<~*{@7FZIU=W$HOP8FN>0iNM|5CC{-_H0<)w_R_ingnt*(( zK({98a{n#+nS2%=0*e%dn<+Ma2=UhyMl-va&8MEnDEuW7aqebzsd*aW`9BoR%ZclO z4Bu-Vsa5Rn7A-UKah(9S8gymg>UBr+R2qA(hKKO6q!#nEC*mwJQY|N__zePF>?->x z=u^;&xF9*|#G{=?9E*8wA}~Jv65RQL|69~Q=rtSQeg|D5uAhXbP>B!)<*MgqihCUO znP13*J9YfC_ZbV^$Scpsnpjx*Mco&FoTtcR)}F%*Yc>|x1_<3jeW!AhWS6}I+#1lG zIu zW#_;wiEPrXRO0COpEG)9GCC(6q%jnQquPl|TN>^bhNT^}c%0Rpr4X zSYj>BQPD21V@x-RIG`+8@XLeH4icT`B{k7<(@!CFqjF8u$+o?OP7+nqwiZpyBPMHj zTs;zSM&=7d0P<}BT_LF)CFSSGzj}1$H;9q*TWlC>vAZ)u<5#rO${=x{YcJ34 z^Lg6mcjP5tKHQ`D)t>+RnCxHSK)l&Plf9%g*`~e5ZAn5i|@69Fsx`Pq6tpZe@JgRU7S(oMOmVXh3y=jdqj1_QX9J3DAx z&3bP)6?_&Z`g#fP!sbte89J@{GM@B5*&+YA+7t(ck@g&V8XXXB**~9|goOB?bK5PT z>yN@Xd?oqlE^cs1mRySF(-z3^)siTjh%DHFx+dx-HhI4F_vzWuLgSrsv7}@wulJgE zv4lx4sZJm)iZBM(^PKFzfB*N~Yb)rcFD@;@x)_%wf1!*Q>y8UIY`Twz#f$RVUmTH` zN0RvK&4Av|m11ZOITuQ6_%-mtV=%ZXR&t3;k33EYIWQ$@7Fe6PO2G^ zs9bpZyoP@nhuT56_CT=wZBYRmv$WP-xW@n9a$|9Qqg5mtK*-w?qNdu=QPLTy z8N@Ea%`PEpSL1<9D zlQ#*ca=UwS?>KYGbr9uty_F1}l4I80qQnw6L(%jx;x0O#YLrIg`5k-7w-a>L{ClXN$HV!&H5}JmRR9e4azT-RBQdRSwY8NlrU-Hr)T zL*i9VRsmBKhjospi7+MBdl#a$TttToq;%ZDcK#ujR6Os%SW`!5_dOB9gvDR6s5%o4 zX@qYX6JUGxd;s?c=&nWWOY8>8zD?pYCvTT7Iu;My(CxpQAIGVOvoN|K;Wk|&d*H>k zW@q|UxvQqTXRlvQ+J70+t9Y1aK>YMh+5m8SK{pY5U&elV}U6E(bV zO$)S=p}0-h{R(6f;u}@V;HtegMD1oQkH4YvPnE;>3(RCfLc@kr;h})r2fEapYoi7| zXa^?QbPKZ->@?X2+jko*R#cLInyuv!Kj-dCIMgn8a%aEF$INpq_`DmX^zgtKDSx6; z=x_JrlL*#5e}XQ2X7E6iB8A$Xid6m^DQcKZEQ%w_#0(yfv09&LXrXUa{*;qr$`W@= z{^R|TGfOo;q4U(vIuP$nt$t4?dP+b8`SyeEYqWw5jJKE;(gVNfyFF?~Ca;^FZn#a6 zaQzid5^{DOhC>;2d~DuJ|JlU8T6RwnBM`y8KIzkw8=eam{NjkX1h@mBt7zQ|AxsaG zqQiC!fh>AJ*HMt_OAxT|>)poLaoQH2);?d)VmO`c#F;MFoIg|+WNev@ZczZW;hrbY zTtrvQZ@?V{-Lf*3C5$~1LTgrv31%(ap0#GB;p3wH={AwNj&)x6P1BD=BEGloes4Hk zmYOm51s!Gd-@bvus(GYsD)37(;Q`#|HR4OaRF`&Kw##Qk1!SK02@)&=yl9T@*)*HM&CKI_dYB55Vj?B{7MM&PH0eiz#~ zM|Ix(Nc2&rnBG?h?AOOY*Yb49IpNLq3KcGtZfJ@Zei;8TMU|57*fFBq-WrC_7&5GP zH^D316jD~18OmWkiNk*UoAkf6u6-p%CB)b!a6mhZgYH`s3oabekf41-;j5@ie7RFX zrkfBVZalp#!Vu72wjSzPYxDk`OLyg zzyw#rwCvg5GuT3Ww=&?nwLp+)Y8N|p_;5__x`so?7bML;beOT5X~iOWI0u=ryLYE+ z%}MWYo#t~=6vY#30X`4UHSw2#5ek0=bEPDk@<~ihea)S)&1a4x@r13Axqt!I+|^j9 z0XAvI`MVXZwp}NOZUMyWF{k4qmLlvF-1=d&K8v?8Pe8s?psOlY>nY};w-n%s*Is?8 zAl8ZrcL`MzzF#gxqEPLCH__Wl4YP4s&EkR6NmQ;8&BydkDcqd7CxvJ&wsH+l0jzsY zgRbw43Px)V6$!+W8(mmMaXK^C`Dmnm1TRjwT!-dCM(=B3DyG7!;lv-313DrzE2Q%L z2axWK++`o^ryxxG0s?@1pU0$^fMNaj3EfZrF&3c>*&RM`T6lZhu#|Jk5$(^ItxV1u zg)}7HvcG%i@qaherz>-IbEPX$+UxJ39MI9QeNkj5IHCpI=i1*(!2At+xX~w%EE7#2 zE;LZv`H+sf^?AtOmY(NRpAYV*yKfJ~i@3|fyT%ZKUpw1$kX?ul%}d3n{fhwWBaGw`=bX>-DK;+$>xvJk4yNZ1%0 z!_U+>>fconmsp%?JlA|*+&`e}_I5FXDR?{*@x-iWAHRn{U0Np$zqCl4>bJMgbA}gp0dzmL9?@K`9AxEKrBmXf zK0vPLsNRw{e?(oxylJg5>fCea_QHe}zY)-nMLE?eVmL=Yox>SmKD=h6yRqi(ats07 zMbLFRRo|%n0u`7MA}i9#M^eDH_609;Yuzm3RJwIoDd9_pQd3O3;~-?%yU&V4+(c+I znV}KPx}=E81*Jvw^(cIujPQOIx@{u&?_Hp2-vSEka} zi|d)XgWFD+a#OPyYEh$}?!IQ0t!Zi`3QPRb*zM50eH_ylNtEpSq8esZCyM~M9U8Ig!{mUQ7 zcLj9C3*XAqbYZ`Hj|8MlV*-?%9gXQ~WhQJ^84VDV#-uYcKQSd3# z;)w{trHsx0T@UEfEY;urq{rWJOv)$M`f-`-8_B5MDUk0P=vq~G_BrL_+LDZyMOV8H zQDe=9f8^2}mF#L9^(whzwoAdZ$&!T7gJKJgC~LBB8gqF7zDC$5r4Ay_w zLAS-8g~?;|p#R#JU%!l4w(4E?5jPs!N7dAmxJ}4!LiuuRDZO+w%TVMCT-aI~t{i)G zj8Is#ZBP81P?s=P-tU2YH$c}VNX1X4)2$K9s$Ou$rVbjS2D7sIE zz?Q7x)yJTyn)zu$J+k1rDo@nfJ=U?`BjRyiSr5VIY!h_9=kfgWDfy{bwdl^Z^Y;uM z4sWvNhC`R*?(lJ`caq70fH1v%K#xK9Y{g&rG z{v}|3CsMBnK}eNu(DfFcMo%C~2iOk=yw1O?$5_J6Mwq5q!d}B;ZvNbhc51jDbCzJ( z{G%`Y_>J>irL&+sY2ASHri3 z%_}{ab+gSR16pSMx?CY_6ko1uENvf5%aJ;VXU8 z90B+F-Fpcbz4a&;D@&4Qr9$N=;^6kQ$wde!V!^3f*aYro)j6>|CKn;O4=7h=b{C|Y zTT0~yX4!8H!lclj>U6)fk;T_00`4y8mXSnk*lP=)H)t!LyyiOe8_|(Ui5BB!95pxY9o5fyq2*~e=NlU_Gf#bYft95p5~2~;Kval z8jH@F6FT!cG{12qL?vBrHEyAJ?sU`EKgjjZS#cxzbzNkbpHQS#eRu4pUHrAS4itg? z^IZC+efL3kEssvNI_ZA*$tS5HlWSppNr*tvR9B^{U@QmMqJ-mt>JK3g9h%7Fx3;bm7Zfl zk|Ved_y@X4uiPYX$fiu9CbyGu-pvtEGn3LmRVOY+l4Y;_`bPPg8gi%DOQZZ$FSQPj z8!8vV(1BX+W1FOgYmLb?bwUFskna)b`b!y=Z9hVM;C3o9vDCFDx{7>!&-SO()C`;I zc3FIjkHx5tj)6e~L#Y)ZaIfak+Ks}v>)~lvPKG(MjOEr{_66UAO_L1t-Y3%IJB`7*F*_LXCSBsiFyD?_b zzq8#U{!#u<{p^3{J13w!NKtxl--)ctHj<`*?BAMk*Ppj#P>8w{Wo(sJ+AN}roie^u z@e!Wk!vynXjXbv(^s-fB(*`w9$a<-o-8AoW4fQ48=RW==U|Jh5`w9b;9cdVxkLry6 z>aaU1#nWEwFvH+|>VeWIQ)+^>H$L8~o8gZ|wFn|?i{%NEG91)xS>8iKvGjzQ1K*1? z(4{ZLoF&1gbR&WEdQibxZ{5I(pu{E`UMXtMY>sMoqeP@r>WTj|-KEU(W~B2oWky{q zT&yadhde?}gy(2o7aEZ7Ip~&u#t`+w%=ELve#5F%psMEkW4W)ewG1~jhRCc>>)PC5 z@iFW`uY+RzufYu^y5=w??c$;aDxp@Bv!Y4Ds=g}VUVtvnYus0gc_x`3ny`fcB4fF<_@Z^}qq^WmlKJ(} z9Xw)6X^Bl>UppHDkna`fve@RBOgQa$5a2NfUhn$or_w@cv^;*9WaCTVVYi~Nf*buS zmlK*=4KD+$X#|57(gkkQ;((S%G)y4ihCvWV*6W z-9w?zM5Cs6b!upS#+Y&qTTw)P0jUr9D9P6qkO7|@_YOaWQ94HoE4mVWTMuxzMPTF#7&@&Gk$1_+Z{*IIA(^PZs zDs!w&$8?$`3{0!obY?E#-hwX1*7z#|bo;`5M103R#gHC&K}X`C+OmH%N&RW*H2ufA zv`wZ)yor2JO-_dm12U3DX2DR!v#pMwe7vq}E~T9u z!nqVVJ>?wEywQVsu5G=1ZV#aQQP=n_WsIJtc||;Ph-zx z<%|2gR(=VX7Io}B%Z)T7f#0XdbDwm*M`72qqQ0UPkz^!)pBWbrivMc+PSgYiE#=qY zHe<96fv?w4O8-3XL9HFi6%#Ba58(c{E%3hq!ys0mvKjB!v_y8;AO>CN!gqA9wcQ0qcj0LU>N)^2)(p`Oqjc68pV=^-0&pQgx4a4uJrAx;DSOLW9~xt)6B>D~3M*$s$^()5jj^lq59XG)2edz*-`$tz3=VXgNBKg+AJ>(BJy3tq({JKNbiTEf(=~EW z`}m9h0gl6i!7>l&(>7e-#sCSUVM!i6U6v=iyngiqB zpzSXevk}=HL>>kE=$h|;Qmy$+KQ{o*e_w&FI=VixYv33rbwSq(v<$;}?@wg`Ei10> zLBsQ!L#&C_9LAYVkl{ofbw|Mw5T zMFL!y01=6A5&A^0?ni!1+CLab>>oEO@)-~QiTuRXYR4&YKnK6`*YSQ?AdQZXf`%&}Wx5-7}AjGX%^2Fw!&u0@}+7}sgNe2`HiWJr-{xYjlKh=gF*Qd|T@|Hce!dcyR zI47Y$p~+NhI8KgHqY>mFE_VCp_tE`{w4wP7%hVc<-se37&Ua8icM-dwvCP2b=U5<; z-Ulmt_H@$w)W?^l&4kLBacHCYZjqYJoi4B+`A4VL zcw|KM792^aI%y6do?6l8y7B_<8_=~!M-L<;7qSy%;@18d`W+Y^^yGW2yOgQ(86^KSHCKrYe5rSNm(+^SBkvc`llom zy&1Ia@F};43iQB2`jNv7P! z_rIHNtk)db40P4(8jUXl?*FNT3w@`fKmBLBNES#ANwprrL`5)kDwKwJ_?tXUAWsj+ zE#!;b4<&94$<7`P^tXWf7IfWu!i+q3#)qV>J=beO9evPWsf*UyRG$55knMYlmF-kZ znveL>$DLuV<I%a3Ym9_-#vHK0Q#-f7)E=;V)SK#RA>hKGNj5*0$5)bOh1aJj3K6 zimLO>MFbRwA+DSbD)nO?22Q6$VucisYyHbYCUo&rLXwE~eYRzmP8hY{l+rmszSy8k zATr|DP*%HeU5Kc;OI}Y)zUd!Y*QXZyG{csdZXd4)Z)vJqi^Fg2#b{AE$@0WRV+t9b zLNBP7C|fLp`7Rr*Kj46_k>XCnr1Ga%#I$!){EkDi&Yax+`pQ(r`#WjazEqi^XgQV% z5YAUxs0+wDhQU(al(h$j-|`AiUK1W;+&aa9>q1=6-RW%?<_(|lbw7-KBfDZmjZ+mD z<+)-B)qVWSFQ;_|^_^;iVL;73Eu07ahtV#ICd^uqLbaO}cjvQZRnOIk=Q9K^{TUwU zsu8gUT9mh1@kMuQ`ut>^iE^N_Nr}LVp6{9C`0oa`u11l|pPZlg{10(XI{&*4QH#;p z*&=2(Y-uGFO8~h!__;>%;^Kp@O6iJEzTZrz6r{vS{CT`Pd4uvRoBq_} zqfIVe-=uQ%smoD|{`IVXU=JP)?JLT%4j$o)CsGPzfFU5a=MLu|wEx}jsxbXfsG0%ZiAca zNX+--pKrG23wTkFX5zc^2p82F8+G1`f^}tL(CxoNHSKUZuRQJaDF4UHP0MkM+o4`6f4VVid}$?DPm5ZXFV6aVKFd%|=;yir%jZS{x@Ujs zc6M#}oZD85Oclt{7#C`&cc)<0Wt-j&t!rm7Uuk&Cy0+xD9c6@WP7%C+{oDA5kKqr~ zw@9(=Ww6JtPtSYuFD@zQ)=&ACKvr?`b0fI_zH!?e{|sdqpd4vXZ<}ok`%jJnRxpu2 zc+H%8W4k)TV&#*yGOMD|yFEWcMW7rYq^p}_uQ41MV(PK!p7!-)Z$s_aJ>F%QB`6Dslb4CTa^lK+1 z+X*HUTa@^sBF6(78Ad0346(ts{%HYP{H^z2f?lQnOCDMPbgu#4+$ z4!TqI2+Bkm#^G<~k-S)co z7R1L*;$FFNGUuArL*RUib2KP5k2f-Z8>jq5|KRz)iCF@_e zn7^3JEl2684Hl3u1L%r!n03z#G{*5WM+O#CUgwFH2PuRWL)O-s?S6E?6A9nQ*cR88 z!dj#5-)L@!NEq*0dXP!fNsOJ(XpLi6 z^R1-KT;=47+ex#>xXuEGbyM5q+>J)|!ymJh&WIMs&m#{1M4TUvU3$U(feCaq1aQeq za3!YKPGX~exW?K?b+&HU_;<0Or^Jt6J=9bQ`7C4gW0dfh`@JQUNF%A>Q6AxW)0RDN zgN>8qvUgJqv;#BfiX3CsuT;GqXLt(_bxcxYx@2Txr&^2MI$&)j{yv{={;33cvV zv^a|QI{bmOpE3~RZ0yh2DI>BmQuT};9^kTo?vd4`x2OCMlX(^nDNhms8rl-n@H1Ts z`q-5q!Y)0zh5cDu``c49fq8lo4E4{sSSKv%$fvSfl$c8h;^!0CZvdASbcw@=MX^5E zh>|09AY3e6`&vTxD9jbSyEsG;_YmhIpV^xx#UP4@|FFk@XqQTq2s`sFCbrIKTlvA< z;ckk@4Ad@wB9!D@sD7!xR`t9_|jtN$?G_KHF0p=|jtmru%+Z4i*i z`ex_oYA)I$WS8~_eKOG+)&9L$24@VOQ{V#KcHI;U%Y@QaW^Mc`HK)&3d8)%>}`F)L? z%}6nVf6DBBO3YU_aC6`IB5PYF`oa7jPb=zOI3oFar511q z36nr}v_<^(zZIHl$&HSe_uIK+Y zbNEC@D&U$7ev1_~`MK4_zIh?FJo+o7DRr@`=~;k3)Wj z(xmc|Gv_5ra{B7uv;G~OqVmPE)OU-lHPH&6>r1&pwI7T*1MMIPy2-Oqfe8&_DQLpD z1Wuw63eXAG9_l~cb8wv_g(Cs^3WIJrx*>UD8kA1WY>NNB;Vk^5_mX0ob9q03LC*Z_ zUGV)}v;<y4+Qk+mjP}LST{E?iOS{4V^ zHAF%8u8Klvv9>n&S5dt}!~o&1-UM^i>(!p0rKGbR3)+-NEu}swRY4S2FhQa*%Owf> z*KOpl`ZzDeG(J*0MLT{o2J#gH-OVSaOrlba0Q*KY;-(GzS1fp_W}SRtmFUz;1c9#- zi0D5~^uNPsEZ5t?kZoh~qt^a3RWTGU+`67$ox+G&^2;(No|fE$+C8xcMZMQK8je< zZ}}QarH&)YX&QrY0B~hM7oUH|YyG{Wmr(_+7%eiVJ-Tl>_U&g$Je`DGJy9!pmH~DY z`ajSU>oU#aHRN;H>E_#P8|+TkkVK|X6UBsahJY&zx)<|O%t&5OR+1aendebSCarX551xKh7v_#MALHXnx zv58)w4<9wT z!f3=OXDX7DYMR64#PBHG$<6SKFt)+2Jms9CJGf7#0J{B+yFW0#IiQKYPaHhGyzs^1 zLYe-u`bt`%{E^@Tl5pk{|6o6=_K6UzdW

X(K`}3p@W@=Op7wr8~cghYz`V%p zo8>ny<`kJA83q_|Us?%tL$@gYA_rmFq*Oj`ZW%M*x7dxn)l2vd#}%xS7^R% z4qYK@XeriFAfB~y?x^L6gVucr!l9Fm+J&?+(=udt{ zDc`0*SQdue+-&9xe8n)F>m(_S+* z8HcfrQXxyGp13>ft03U2g6>IhURrlVdBis zgHw&_R*IuzxfavtKqditw8f9H)4>6)vC1Qj*zW*W4RnpjO=hcIWkue3_-Hx1kllFH z`(Fzti4x?Y!?dtnP$AvDE@-HlH(o?=* zj<4jboSi~=_n?Eqbr0x&qcbW5~ReytmXS+C8iQem)+I|(j zfZu<@S}r7(9w5R8-MX0WBp$7=neSmzmK$rAX zM>ze?t>j7+JxtAJ}e~$&nde4?Mq( z)4piOMmx1naws`8O+&B|PQPW2J7u@}QIG<-I-tv;lvwN2D!N>;R3qVT{naC}yaS5U z?(B@uPd4g|6GO=Rkq_GxkH>BMP~p}37tI@X#C$^bf}h+0*u9D$GAz9SR~K}l-utBE zL62lcQAgyIMkJK{!R6!Dtu&8sn027w(ZI;8nW}z|F(9{_Y;Bu1V(N#4Sn~8Pto(Sb zi^I-@h9$2ZaP>g<>ecnxgtVx`_JnZAwWoOl$M?NE3M;PkH-DgAtOYDDyGLe@1+(oV zd6QvsvPBa=Kr@H<&jnJ$Sp89l!jSlX?t#+>-6pi@#rDO~9#)eNX=nXQh695$r}3YS!D6+vEX>FCzpaKj3G7w8)gp|$ZFv)$dnQvM5zmWH&HFC|g?8f{oS zW~|uGp3i5_UiuwF&~=?Yy}5^#3GI5G zfVig}^AZJ(`Zi7~2UcbsBQ*YQQ27>M0}=uO~B8nacS;ms3qNAhurn4HRyEXuY@=X>k!TdDz(=H=+B zzh-ZB%Zk8xlnLne&|t6Yu59Ub*uGUGJF{!*_*`N5dJ}eQdwWp@Jr=c_N6{@Pe~WaS zWJ(Xq9WQ+%M~46rk}vH?^Nr@r1&FncWVnQJV?Xktx{p4u zvn2VSh>w7L%|W-FhbSNCl{)zh(Leo#lv!)@*H$r)uSJTH;yM)=inCS{AW^@|XROL= zprCwV8hrB)@-@tdFQs3hYTWuQ#fw)D0M`O^1!D5iLj^H^rkhWc$TCy(iUVd+7LtGjlHsUoe6%+!+A~bt_b)vYS-k-?XyeuQhVCR z#gE-+*??;Wy4GV`u)Pat7M<#*rU}Ava&L|WehJu97$XoukPzG>ohg!v9XBF<^h-Fo0+%;je)9%OO@phgpNZi0x0@ z(fiqsxu5g(>GtiXV8WcVNLrVmmK1Pb#1?e9B-SkWm<H zD+m>hH1eW*;R!?qyg!c168@`HWB=ytV|1e<#waCMm;J5pp==2O$kz^ZyO>np4(6?i z*5#JPP(m@}!Mn)arthe{@`h?bH^xdOjxYS9{OB!?u<0S12jwvk{@>5NP~I1Z~@W-#%@U*tQqi1ZZJ#Z_H2F9$&0!<4ZE9I3Ew>T@*b#%8N1QFmmf-Yn2?0n|? zXh_pt#V?v73J;gtTyi#yRsS7nkNu!xfIORk0GCUGlV!sF651=biWYBSj zS62~3;T=Z34Y6iduD&c?UnRbh`nMq;rzV+OQCv8gCewp8K3>1-NmF-=;1j3+Qq0pb zngOFc{PHs3x_~Z4IHkjK?kS@g?Wsq<;6AqK+?R(>iTolAGGwsZK6c2ScwQr{oh(>M zMSQroc$mG!gp+Z2^XOrM35v88e&)}2D7>_~&78(COXB z&;lgx(5m%M?FN5a#(2HWzZt7cA)l0Xw1rrA(i4XFX`)sJk~63NAFA%TyRNQ#9DZ!u zYNIxG(x9XLcwr%HkegC+hv7Yk+K4Xr#*V$_>Ze_I*t#yoC zghK9SxPl&rQ4>=|aGuK*biGYCS5eg8YT2odojW2D+Zm13|8lYA8$ONX;mMW4Y-A z>pNIgsB+;*-s*3orni;54d&VsznDHWf4in4C@0*m2s7cWz1#Wxnt{oz?8F7Q|98j4 z|9&t!ygC8>@JUowrJVdWKfZ02+L+A<#1rb7$`7^C<{qvx)*n^QKJXsz)Ugn49pZN2 zlkai;Xkod+{?@7mU87_NxE`R(d6E=L8Gg}FniM0}z!}RB=eFqXOFemWf1UH~HzQ{Y z9$xapwQ=*SX4jF%OdSu?SnVA@vDc=zRom71ZVImi;Ch1Y_T|v9d;FK1pK-DalrB9@ zX%%&RIxeku70yukGQnggBe`yLcso&?7reEfm1yfs>T9VF@?@!uh(**ICqZkMkMA#s7I*oqgdv?ACmv2s7<0i! zCB(%BOzLsAe3HclJF&UP&??Px^PO3v@XOt}SHS%ay7T?{y<-U+j2!ZW2C3ne62r`0 z-(9w{bEHe46q~pW7_(TVsCDBYJ&TpB5`!vJrTZ3kSDCyRX2wdfBdorv8UwBm=;~o2 z{Rs^t{I(c0H9}oa8bikzDBL6mSs5pEOs=2m-qYRha2X1}Y`fGKXncuk3EjVGv4KJ* zEb;4%wj$7d1)SIL1>MS<<^ZZwzKzEHsl6yi3pez5l^dU7QmiUykX$5S*exNH~+E+PP z?a-bb+rz@9>1@hjZ#|bD%b7{uNoBS1)0aL%DCzGnilQ+gdy>uT47vBm&T?_u?ZG7~ zi+t0`45?uM_7iknKa%>_!#A)j{EJL>l@7~0&pUb6mN{96ql9bx@lXG^{Y}T8m5j7} z9ttGb#_Z_`o?o58Jg0>Fvky5kh>-_iz2gtMf7I!n#I09nI-^*V)Qy78I1DqMnwbK+ ztd5>qnkgqkVp>$Ac@|%eL@~4{OWw0YyZg~72#i6s-hFZ{>JuCl1lmIY=%Vvv*wB7i zPmzd|32?T=PvJ|$`)Pb1T@f#Sj`fL<0GR|5ZMa|Pi9xYf?cMF|1x9z_CkT{xiVj>u zkOxcn`(R!23v|~brrhMM8|)_vg2*|`emSd~&gNC*kis0NEQzIirhVrm!}=vUhQL*+ z;&!ldW^*X{KEHC@90i>1^iajmfbSaDza1WB%v0Yb^F= zG(=A}8c{FL=Pd0sOV2Bk9bQx3nh%^GaaGGBO*j``-eE`b2SO;j7#~q|TVQFk;=>U+ zBRpeF18y+r{>b0jhB~4*MgHU05}`JcOn&h}_YbLI@(m;lM=+H4h;I}0Fw*gihPy{9 z%*y?dpV=@LMekvCmxhF`8Fspo72t+|Zk@~(T;-=!w;9K!AXH(a4>r|?X9l_XQQ@g; zd&)%5BN%7fcV|DXX7Z^9q@4-Mtj@+(BMkl-fw$;j5gIh9FZ&;*X3%Rmxb4 z(g55r&~?^?h=?1Xj%GU~Xihc!zfU;jt`HCc9P7=qgi>J;9iI_x)| z7&J_+cjJ9#5BIar65@*?;6{S3%voriRd-rvrescKE=u)|7``r+SH7E3X=%fA(`94ZiQsmnA zRBny6k>b~)+QFouF2IceT?6;J?a7)5=#L#omsQT4P))LEv1bEk?3yny>vBn%;bUj7 zhb<`RLE{opZdEoz`5Iojp@?aUjVp!@^0~{HG=Limx(XIY6p<{`*M!nZ==s7}B`iL_ znSQs#XgfEFy-8_5eAxSdTh|w#|D|b4KSfV_YaULvsY1UhQ%$?6G4@HD^DW5K~rK zj@@B^t1QrQeonF z{d?UKf_bCqW`$(E(Kxe@!66FPA!x05F@FI!0d#HSdK6QR_)8UO37+YxopnSnxe2`% zugMBZ;+0@)A#v%IDP4=5AP>1rPH`Jv6*^~|tVRpEo_`Y4Ld~hL1c7--1l_GKk=Wyu z)_BTQT{iK{rrHPjE=zKhXu0{BnO>_;=b2C~IEq&`h5$W&Jmrv2P3a-tf zs-%GXeW3`%n*_SEL}`iq1f3kBIQ7f;*uVcf=@n)BF;DfNQcae>gNbl>U$z$F5^7_p zJ3&9-GxW{5xA1{a_;Oc_L})_$xE(;7zn z(G(A>^J2v@A`GauJW%!Lp3=*Ovx|n+ejqx~%{n{2R1_CK5H!Wi1M#MSZaGni|7(_8 z`m>tX#PW5i3x@8S`nQFkE3&dPJIr8_s0q5jdOTR)y}$=iJuO-6i1yMgL-?4bY!1XZIz4(u`FY2^VnFLHDgp2-#LKRq2ye zQh8j2eAr9KzOoW`|39SXyQu#bapBJIyxzEU2VGQ4#;Shm3f+ai4HT%UU`Tkcd_&_l zuxta|4A2!pIlYwZXpKyRj`UpQ9h)x3+UKL+o^JI2>%pLbSQ+@N+~&@IjjtjL)irfy z5R@o@qwj((vdt(hEaocJQJx04nV?I+;}BJM*3H zuV;fU1Dlh8G7QGG&rl@$odXBv3Y&f#Jp@UhPUQAZAgM8u*3wHr)zSN^l*3cipx)+E zwSyZ^*2XL(Z)@UFN{DB0-82VucPE>$78l0XA{bN|0~aGAgZk$aQ?J_V5#SV?>|{~Z zDfH4ImQ#87J4!0PBdV(ZWh3>q7$zL?zbKZObI02U_jBcfuAEjq304f@B~n#|7LrJc zrE+bme>Xa{vAGdT_RFwbFng%cP;Ep(L-tI5<4*V_Gu0pMVVSnVkVWskFvp-QaGom< zbjwRJU$v?fQw7sEFq_Kpq}T zWGCPqjU0)^OjDUa`&WsNiQVWa(KTOAJd|>IeEx#_X$wFXmTab(C7$H0WC=q|XMj~U zYXDm(I=!{4kMm;=+|x95k@S5UJRUqV|ga54m&F>U}E(022B%+0KgQN!1-z-cw8pFq+EBl(nE0|_d3mQHKRSNy^%habMB!Q&fpV}rClV0$PAU9RQwbtwFSoc{Wbo_+r! z`C`cB%4l5@#wsV}UTv`~v`Qi9m)uCcL$o9QGXo)3^93JF05sbT;!Ph?XX4l))iLfDM0p0LRFWRvK z7${RC`L8<@j+~=;m!eaO$odJO zY!ZdyBrWp`TEF5Wjj%{Rh>*rXd^hl@l%s&(Ov7B4mZx&faK(g7j(QG$ACCpN<)ABF z@UQ#)n>=5w-`p>=pF_FZ;@Cd&q{$F=1qNDkZg6P_`8&o{NX2N}^cTyShnvh;Im&Jk zxt>l7GK2kUbGNos z!hEUt9R?EL;wTKmq{*gc&O^b%gUcXeAJDA^T_T%CJUnW|h*KVEZDpE^Tr(&XU%GZ_ zfxDvjc8xYazJ7gQ!%bV?+iNK0^p~Ymkg9ou7t&lqtS=39!YeR47d#(Z1G;SSFx)0Z zt~2btmr;o=X-WnYqR~`j9hEXY5|cD7PI0Am{qkBoF>nVG*)%)-&EHU>@ZTOiG)&|b;MRifh0|Fc1b-8q z;lHEiys+`!80`}p0@rw|mK2GhQrIfuQ1Qs8a>$gHJp=gO(1&EU($ZoUb=kLZyu+)c zk?U_vfLjN;G2Rl36*$OV&DGNq{jkyqdyaTtA5fE`9T%i5VeldUX42BM@)6NJ zS@4-%6TZY5ke~D)$S`SYKKb$7>a%7GqrT6lG!nf1qAk7v?%Qqv-P3Rf4AkiUt|zL~ zUe4NAkiH@C_aGwNU}L33N}?ZdM+0b0&+4K8WZ}ihV{d!?+N{Vx~>3TwhoE zoD}kxU@MGmw}pdc|CzIRB8nBMWm&L7JCCS&DG>gptW7|nSarUo(Ww3r*BrA%8^%CYX3`QFiLf8)vI4!`WxYzLYI9#i=^Y(azKR~mVNsMOF~GjBh~R~IIkKz8eg>O|x)ZRpHZ zLgxr}ly`vJ4!RJV6w(kG1yow?FYOYJf1ctk6i$L*gPd$k?sqoNXCLo|NzY8{sy$Y0 zkmoIIyVCBiOWEJ?id}z>qxnLRlAVKltjAqr_XrGwP!puP-p~{hIurq!O z-win4>;heM?aJ2i-tkt$y8B)okpp7Gf{ATb-dn#Gb}^>fgh<;eX>}A`Jhhf!M5E5^ zL)Jhl5%B;Y1k-Cu$$-K9F&c1Pq#Ja-ZN%QSRaMzLR@|9XH<&ZqMzC^hl9E8MHBw=2 zQIz(xXH~TcAU#QRi%PRi``<1=riwpsN=3Qxy#+{pXv%p2^4kNt=#+}f*g`9QQ=ix4 zn4dX#qbDYHWZbPUa^~Q*2g5NJc51U7^ffmya0E6s>DGRbi==RrSy62a2ZuaqO%=I< z=aPCsx4kS%9La=M7NM{_pqxgZsDGIHD^XzzCKsJ#;A!A-yu#ajKYTu$=jH1^uZWU{ z^-H1U?!4InGnSV3N1-%M;Cf3R=#J4B>>agMeZ;_n05oc740`>uS z0CcsbZcFrZM5gNfa}Re$S_rxE2>8=4KgwQl?1U!4APWq5wo?Uf7X4d8R4rkIcWOt1 zZ0r?L8_?3t>Tb2;ZuNb^jwC}rrMWDA)MuG&=uwSVGcL;Qil!GI!h?4%s_MwIUN!o|U zpX?mC9_TZuw%{q;=9(FG65MquFbwy_)$e}NCwmB2+vd}!fm?@V99-)OtGYP=++on2 zOzauiCqp%seE)++?yurJKYaLvM@{|y?NZIZX;vsKRK%spCy!o=#Yi`KhytPz$rt1R zXf@f&*At4=yIwSJz#ReI%6=;>o+!)^@da28mzNdUgNq)jj~>ogvw21=u^ghYqAsM* z`%GK*f6hCDyzvk!yvXy$jZFNWT&_M|q{jdM#<8QI+d2pB{e6m${aN{dt@fdhT!&N0 zPfvNt-2+wY9&WKv*YtVamDQBl38ofFDShr!@UM{px?|5m4?4FV!@-g6dm!F1(8Yfd zO&5;LiH$aAqzzlIETe-LjsAuKIl)Ll-|*{qO6_E)zbl*XQ|w0mT0des*=0YM>4EWF zCuNbFih|boATi*MgRZ^p*uU*UBj*T?j1Xbx&k2`CP3TB`3m?9Y&Tc`RG!LG-oljA( zYThp@@I*$uaXDyIR8FY0TW0>l;54R_4Zj843D6~vi9#Fv7Cmt~IyvRPn@g}lxS0RW zLGsS1S?>_*WK!X6_t4$!CpZIKM*s3y-*4uCI|;hCa1@{O zFP^l=E=``0S-)9*#tcO3TK%q%e_?_3ub^qcljfqBQ`GgW-`R@hRfLaD$*I&FI5 zcZ;z{G1!rUylrT<#hQgE87d6^=y|X|0e2d7DfZ6WF+DR;O>;-H#>M6!z7mh)NK?tc>YI9OuH`OSY}{+$_k{9xu~uNk z@gr(QoJxcnJfAfSxBO0ZKc| z@{z{}TD>fS0i2XX9&qr8;cy(L4dGWT|Er_^?>#&Ry7#jT3-G^nnFF;{15%eQGP66; z(y31%L{F`}hyT&gp1Fy}ijOanU^Sda^Wv+i8XNkqQ_8Y45GrXR#W6~nB@efcdD9}f5+Xkn&`f#iV0Flb-}OUwmZ}H& z7JCRYioSH{EP(BI0dyHTgrqD4Ys8nwbsMyE3MD0|2H{Lo=R)zGV;-(;RNEG`l)VRq z<@WCcEU69Wj&-WGlJibFAhmGIN{@@OXTbf4i=Zp(!ou#IyZcp5N^)#VoiJtXTIvI? zktEJ+1Ag1O(snR^`s97pBO(VbA|_s@^X)?f>j2Rf#o#npi)^elL1xsz}4h`pXmy85r)?a z)jvARP;=J>+SxMbI*{z8qs#nGi94$DSit`8`0sD)>e?fDJUrKJ$D%5o@{6HYBTE&t zY6989GB@5EPC4S5`#;C`4D&<)23NeCWHPhWIdQsv{8DhaUT7x8PJ zStbmv`BXM*=8NQ=O`m4Y8-7ngjoSUYwBlTln40K%Xpi8%c9Km&+NpxdHk}?roP$%I|IMAkVa0z^&j>E2M^~}e|p7CW{#CVM$kux zu)ld~zROD?^2nO9-$NySoUQMaGy%`+t%GjuP%|D?2$Ou|D8|ms%@Uz_Y>c?3F|jK2 zb^(SqlFwQT913#Jd33&_=bx`n6co*)48oi%1IoCTA*3tH?&#;hbK3yjrT%Zh3Vj+q z6?R2dYX8j59QD@&R>_$CR8Dwv=gWMB9W8a=H^n! z(7s;WdodHh{YYy0xVk!8p*u3z1s#jxnFDHyc!R;|TL=;%MWf zgX~{?_619qEL4b-vsJcFM;IJMkmQcL|B>CIC~3a?m1EXL-v+qbp!+5=)JrlpIkzd9 zq$j+4(lGUK2+LG4@{>t8rNSWx{;C9<8dfx)J3o)=bso7*N|-v#wZij-WzlggXft%5 zp%!p=K)18=yWe%q+!K#^r~H)mw;XS#ZdBV8gTy%s(ey{TpL)d(IO1l>Of_}^&e!?H zOcK<$q%ImdOV(~`vv*_34OD=;3%aF!?hU5{1XA%%A56kD+8Oy6o@6xYDDy+l@%o=) zqr6Y$sI1E>ZFKQ4%w!t5%9ooy-r3pRtp`gsdr1(Ase$$69_Z>kDTMBGs_As!zK9Gg z)7)#%x%pOIn`fxYGVItfzffJSi2t3udOdt6zCdf?Lt)9xM68gnAN?dx$VtYdZUa8I zebCjnq2-tmY21#Qv^`p8LdJHa;w7{tU6Y$ivEEnBSKluxAepck-*t!)SL@PBj6|NFtb(7%|-ASKF{h#alsDPD=dczs3vvR0D#%0DTZ ztkS9amxvC1(2B?1l-zx~Ys#C``KrWM2=}b2ddt0UuS5r&H#!7e>>d-G03pTq6ouOh z-`n(plc1uBYf`4B=f!gN8vHXhnzl^4I0H;vF=3@W1R3U zn1@8_JL`}lRa@CmqAogaqw=D*&%Jn5S@5{6$i&lL6X0_@0bLSR{t5}7Fz+MHQ)Cf- zj0yXUu{C9Q4`NQaW)tD3}xT_FRli(ezD-S9+jt5#j{SbW*Z)~4e6sL;T3 zI|bdMXz{lpjW;$Md)kfH_iv`7N*s>dh~Bmg2@6$iKSw5I;kvp`Xw#`vaG-;{gW*x< zLs1IPFRo-MdG=iURujST+ZpKoym5N3tvJw`wlgcg^=?~e_!H{L6Wr9zz;Ji^R_f+q z-Ddp4x5pE4-UQ8_Ruzj@Jq8)S`r${n%2-N8cA6FN9P2sgl4I!`S^r~Y!>~!;>yrFX z-LWq>!*x`hU-l``LOm%FWAdM@j0$!Njit++{gk=UMUUhuP41l3LDOIUlp4_(a6i`t z=u$6nsRcq;=y)_Tom>?3ahq>Jog!;K)^i)@G^-vEe5bCE_zN@Gw&p;CL5&}myG%y+ zp0gxV9}^YtQ)`7L8#oTQ1YL9*c<(?Kh~!)-ju`$d)b2=P+(@mzI_pvYP5u+T6YWKm zJBny1ecYVFp?US*pv2lD^jd$YusZ4=$my1HQ~j@){Qv67E6}~;?ZB7qaLfx|vCTb$ zs&p1p?9986i7I)deLxm3l4FR!{a#GRXbe$mvG*_EZ$7s5eNWsC&&=+U3nJQ@=n>`t=uk z;`;V7pMf?77j*qIWuR2sPS5a-9+lgX6k0X;@#Q@pZUGSQ z9q8u9Sq_!T69{Cj9zfPm@Z$2EfK`W>?-EHSsF3Q>!W zkm%RCA28{h#Pwef>p%ZZLaQe#b@AmXjVI;}`F8=X<2-<_``2IiXw&(#t^T1tpS|{U z#lFe=PO5JTql~R1O+kpAkT7lEl6D}av!4ZWdRkhPlu`Kpsj(~+DI2wY_a{GY9f(C zm#1M?*%`r~(K6Z%xUZngTQcS=K#fC}uyu|*fBa7()4EBj;tyNNpd5B}^iT7tizGu% zYBH3hpwwo4@w*+g5A&|(yF;SCdI|Fdf6>2O1MVB>4iYrT9)!ysMYmDc`&oV2vDNMG zjUqIQ`Qmb1ui-^N^r<#2qLVSejUD|3_D|5fLzFPTd z5D+j3_}YtsZ7}XCTLceiS|(Z(%ho<#ZwX8-ce1_)n;ORSZj;fe>pe_g8q=^%p7M!~ zOWhPqa?#?jXY%HGku8;gcp*Vo*64iVlYCUC5oJL~d+0m5HZ77<)kz-%uKbYW#vMFzc$WMQIJ-=k2q_aWG#+I^4qT$XnIsgy5%xXJ4rqqNb>S^_r;?2n;A zcYLdU$TEVA!Bw|3mx5-HG8@C-LWyjzarXvpHQ@nMhGzIuU`oiS3RS)8Y{lj$J#zZM zC5qe)8d_lZyRvse{Xo1hpleDWLA^Ap#iB){*Pf*f^?)j9D;L1aXjY5l!eYj;@)$(C zryI5;j4L1QHjNa_B@P+7AxIjc{CZ@D#YBo#&Ih=#po>ZAx?+GuXP2)|ne69pW!Ikq zC8=Xy@Z}SJ!(ztk2U<5>uR41iclA5pTwDF5)h(G7gibj3wpbiDyI)u{-FJWs2f9mX zoZda-WfqntJB89c3xoq`Z95q?o1z(8zE5?3R%j}4aheue@^QG+#zi9Q%%SIC5uZcX zFpquiKDht7jsWjlfd}1m>Mz+1JQc71B&VjOK55l8M5>V%C1NY@;D$IL!ymP_dAzvT zN;tHhzKWTDG%AgEW?%l4{=Kb|MFMxcju;n=7Xft7J$rUi@nfSulh1vrA?=8lEIsq+ z58QvfJ{)hC7?Qj48@588)rCbQ<+Qf1e3Gt3GC!Vmx>>~PN{s$|EXz&@&ZEy zFm+$&R*rgS;x}3pqXVlPxG6(7LO!YtXyQ$o z^4$x)AFYhoPA%l%Ycgvx*yjC0*O*HCGYa$Z%)vk$jhR*j!lt6sxst{R!BuA(zqV+YF+7~QVTG58?#}dk@VTTvp z4bw!ykO5p&&?T|?leImsO7Z(}NX;u7@u!(YAH8*1c@m}))T;tGCFBac0K#~S1MO_iC9XV%-~ak5jm+=1^ibkH3&+5GpH|EX-G zanZrAn~8Ab8A`;;J1}6O zPkSaxgJaiGrZjf-17W!2KF)*d-I$;BX#3dZy5U{R?9+Cf)zzqDy1W#69b2h5ZOG9|xUX z-xrrpo+&cs0>gs^Of2}1;QtK=bS0z|1=DLPvf4kR-~OJr7@b3h(tX@;Gos2^{O_DF zbPDskD!W($#^au+hGmE*@AYYJdI9;5V=n45v?(RGJm5G07j$B-HhPxI0$9opBP`1&vRCmug(vY>K_U%V}EC{j>7=$ z7Y}r~cEhDBGUM_dsPmFU*(_rf5J%W<5YSSHh#$%?XP56kKyPs&5owD!KwXkkZA6>G zGUM+M<)L7B&45u=E9%RVZ$$&55r>irfE-+U=L4C#E4$gBCgD!{pT2hqN9XUcDm5Q6{YtAgv zQ!49fA@oxxsbwgk$E@MefgM?aWaxX(FmN7`1a!Yb z6s5(*BmDPGa=|~V3%@N3G1_2<0=Z37{`(M@ePDKJ&V~QFG3vmagq_9V1Gddy3~f3jj*mwoDIRoSwdxTDnr;O0(%J&2q-SXVj zLd+K732O=41m%EB0lI^PN4%)f(mpOn#lY@ z-jkeVzfHl}`GjhB@a%Lf{5VI=jhVy$!>m1hJs=S9b36W%c9)-m-qo&x5Rz+im(Gcw z4GpdyD!Ga)5brzCZSC=t{TWYo-P`krBvkOf7mNLPm`{~ag4!0}$uz0gBd-DP(S31P zByLD3V+F=;f5nQ3!LeJoI{&xZs7kX;#K;Q{WI z>`200WqNr*=hT;92i&!Dhg?2l|49;Ici@BTRhAXW%-lYw@E#6p`V6?#pgU#a{_sKQ zd&(8<7)e+LTq*45m6Ww{X8p$POQIDhTrA3GTKSHKsh{H8;*almIy*#9%O91bV&IPX z7JoM{Q$+zT4d{M9$Zq|Cat3ux*vX&EvC{M8_ZL(8wv>$mnTB3#M+Qy@5dDIMgeyDz;w{w#Tzb$=f>ZrFp5Zz9oBU8EqV{Qj9Oc4LXDUX(5>J8rlg7}^2ZuzZFH7WmOGje) zg*hzPH<5uhVf%6zt@rQxN}@Wz{gWR+w>)-)KX24XRSY9rr&Re+0lLamsQ$%oa`ymv z1fse?>XlD|_4MO)61q!VvK9ZWcXMyW@=v(PIO@)3pG&%!6d>M@pbJYm`-9_0a4GL( zc(m7`RcrdOhw_{>HqS<%${!(d?+F~`m{CGAk!tD`v76sB$$O91$f z8)AUV0J?Vh*ZQoUJ}#5O9fn_y?QekX8E{J94s7XivwjnKC0{d>`plRE;H; z6>8I?ssZN3pHUH(JBh>^2yDYD!Zk0QfZMB~oFCt1RyBcmnLzhh5}F-KJILb)On7*J zMIVnz25$^@@dM1KP~Yy#{N=@O>7DS(5SDD`G5EI+M5Tju?|&{14m}$Mu5B+3VC_o17%wa6ZqC9E(k|j&q%dVXK7`Jd3M}H@-xguhL;}60Gj0*Bczvs8thLN{gq5#*w%+TSIK53gnj! zbR!BCY`0x2@w9EO1DQ`|z6lQ-FSYuvz0o_^Xm~eLQ@`bxKjSl}5`7B1*l8or$Kr&| zW@1Kdv~P8kujYB@1kTH`gKn*?LXl+D?h_5pHP-?Bw_-FO24pR!J*P#=T2Tss+ zcjR$|-j6I^@5YmB(R?IF8x9H{*8L@r5M3Y}?Z;29Y(gmRzaC_z>V;LKwPCO6T@90I zOT3{pZyCB&DpL=>cep^8wtvcC*GWQm`q-@i4RUiex-jT*J15VVH!k-Vf3^9a_t62w zv9)f?um@`mc>-4l-=``f|FACmPQ4#-+8T-!1>)rf-M)Cl4_ag@?^G|ni=N?W+Zz@d zV)bM=swQP9#K;qVtr$kITCbBD4Ny8tsVB(z&`^-9uXf8Tv1&O5^ZsPt2gg}Fpz9K) zvVS-nF^?M)Dm-mfw1ESKQj}a>NDql*s(G6dxgk+U+i$OSS04w0n#GW+XD(yhXL4Ff5 zPybSykCOrWgRY6-0@wDr&|lG&DCaiTdKX;J;sf2m>hU*fHCzvN|3ABKhS~ivrnMgaEOrA z$jN)|X|Evi2?OFr#vrE;HUIbTd!nQ`w7&g+;+t530?ruHH2w=Am8dFmF$y?nQSg*I zoWpi*R7GdtJ#hS>%gnKcsWkK1LD`2rjtyEEddCy>D^^BO=*TMSZu{LfdHJ;j+W`h87R?9+&_(v_u%=r)#l-8SBXsU?eD03khpk1a&)PN>iMK(I<{1G@I;fYz9)^sbmIcd1Q^y z{MeSkd|U1F_uLREgLut^JX>W+PXW(@0W|CB?{*6<-|KL3ej zm;#)C5C`4Pjm@^zj!KpSZ;41-VJkLXb^lA~=(vr-Y2&MQt8hXC|KJS%gxm${W{BSb z7d?AB`nL6OzaxvCT026b%*tYbJV=19GkaXQ=S#ccJf7|sIXtY%$+EZ$q{=L^7(Rbp z3*AhWn_kOa$uo)I(t2xt%T~`Wdz8=g6I;6dBTn#F=jZHT|0W5#8`b~R3<9ov@18^c zViN8t??jk5-M}X2Z$#a7bUYi62)Svw^kmx}BnqODJL$ivT1S`Wirsf!HO+{17W$rM z0r5(K?!w%Q?Y~XOG=>G52ia`wt(8++3Ga2Sqt&ST+Oxw1S1}2i1;icP#zNb=)2X&) z$6s=iSwVReXp61Yaax|Mqkt<7y8OY|HSE-=gy9|b7QdKsN@fgQSdensKP713a~VZ; z1wy=2o$epHy;|dMhr6GvX9 zgnbBQ_B-jx)#%C#DaMCkn#)jLs^1fGkNZo(q{QBh-?y!3QT3sp3^n1u6!wP1%D{R@ z7IZH(*0e8%Y@3-cs!od?`EC#|%0r#Abu+g7^GwaXw`2{f36Yg3yswshz)cAW!!+} z`*r7o0@-`NBq15)%J0oxWJ#D!RS=&K3W_lYG6|GTe}v+Sz05Su1WeiPwg1*uRII`~ zTR!hJ6JF9J_7DDE@E3?z1$0jkxM=E%XP93_9Z5WCY=zs$bO}B;lL%ts-^`U)ZuaNV zH0}TH=qdK{{`|}6YY#Q~;=1Z*1Fh$Bi?ykd(0s72Rt4R(!=Sx61Efk7F%QR5C6=og zi@M)@A1()r&5UD9Aa0VW^=hQ}bh6g6ij(4F;$=iB{4EPhjD3|V}#&(+J-Vw&aTmM zzfEaBYHl_&A8Wc->UL05vtsI}pu-X^d=QlZ>oX0|y+4!ww#MRnmTyQR?i8$d-t^Au z!(S4;E9N@f8gzOwHgs1u|Hc2lc|5)l*AxSrLBdcVt`|B?aN1=HQU2d`Cm(@$H9_}a zvXC_S$p?M&Gt3M&U$xS4K*;RgR7%qq)B@3Yk?}74KwP)yl;d6_6{9GU%KDoD(Wfbq zpvr7I}J5dGayviDOKxM_&%hM-_@-doowL zIs3=O!v>Pl-&9u*an|bSc)9Dz64Ov2Y%~V|R~vL$=5^L_qxKWd1GG%0T#@$DGf#T& zp!r}f7*-Q_paL&%T=o0E-Bal6-JsDs4bYe(akV0PCELz4^}{UxvU+|2TpiF=)niJq zDCefn`7LE7CH4tvZR|Ns;N^5;R#20&W@2C-cb;cRZ3u^fS3YL2P8_l4M+tI#;`1fl z{68anhugo$fU66-cLlB#FT2J@E(WM+X!hi@uz|i8)9QOl%c@l04c-%9jc-w+@9ByD z!+`O@m9I;DYvPlSjy~5$j{A1%zh4;uwqHHaWmRg%fT2Gg>i%YXO>cyX$Afu4K;yf9 zb2T%dAS{)LM5&sj2itICE>d!wuNr2w>*X{|p#L(?6}D%-s!>e^&co<~ZgvoL**vD@ zm`W8cq|P^Y77nHDosQWMIcf z=D$u2X99UJ0Nvl6PcIxc7&-%~=`XySv*&sVKO6E?oh0={KO{hb% zU(M6NvS`h`8@4Xt{kQI3KQZQVqyolk2)ZpNp+bdkG_GSXdPO!yr=C?U{>oZJzCD-U zWwrTHyD8b-a>$GMafG`xf5@6Aqxr`ZbWc*8{Q|ngs||Ps`BlrM zf<-U{TV83uUA(U1F{ZPEMcDh9>VD;;G+tS>2P6C*;$0+EMJO_b^KODRiRRLrze#P4 zFvee%183M4=WW{?G}Fycia!$5=Y#X(<28Xb^oXtp0tB*Ae~OLQ^^2ASGP5_~ z45HGai`4lG9+n_$kKdfv#hzOUfq0EUm*NcSWx3lvw+?^p6GPtL6%QY z0^d8Ppc{cq#JN=S=w?q$X}h{zp;LOfsZ>ajRMfi2^m$d<)F~8^F{%-h)V3QQ57)Ft zAbdg5NH2vyd!h-GKOs)C0v(9g40JDVMq4*HkE+TkM@IX@^m1!_UE^$FYtgEn@R0@Q zp08-*Ea$^1D@>D6W+HZzk3Yc_zQC0Z8Gg0k)%yp7%g_V3=Aa8XoS%a(l(5auT%Z34 zUnEN)7F~80Gw|j3I-G9j;nuw4rmNEZRi|{`Ya?P_b=W^IjjWCXqx_QP-z#3>&p~j$ z!~%4Kv*}O+qmx(6yT_crngo2eG^u7k`0^C>s7g@%TX@c{wXW~{?0vweNZKSGUWDzf zZZ^KXTP|K}0}Kyt)4gV}PPGJGX*p8D$8@@5R)o8FV}7gwBI%RN%)m4RsD+=(vr^ib z^FndowUF5w=;#@hHgD=@vsS|NoNQ|DOji%*{yV@$1mwXAbkQVnrB*cl^X7kKjK<zMMub|ugoFprt$MP^BLgPlG(EsD? zucESi-aqh{?(S~sZlpmFB&4OgTSB_KyF)?&X{1A?ySuwvy4n7|pB?i*-7XG1dad^w zp8ICznrr6yeHhKqKbM!EoHjc-kvSehg6H$3mO1q)Z`Gm#RW&gKZZ_7uWThBpwt(cG zR6)6tARYXi*?}$>lS+D`#RIY+XX!!X9bN)^?6>W=rhF3>I5&Z_a+8g{UcpSN(LQD~ z^*euc)W+r%s+zGn3;28SLogsCYV~u0y!N1rzws^kj2hO;)=J&?CSXy7OySL(XE{{N z=E57o3pxWe!7%xc0V-o_lV&UHmC5HGKaOS2G^EJkcH+ngb?5fMx|{>(hV=89Tl|po z5k1BU`9Zv2=s3!O+)DMfMlhojZLOATW;W*6tv1?a`1Fg!Lss+1OMtbrph84*y;G7= zllcRW0Fc)abRVitj%C@V#pW0FLtQJQSl?W4)(b1>)oE4i`)t#;|JAbHqQBxfVyP{} zEy_-n8q}tfv5s_v*d0eJ$E!1=E(P4rpc|O=o(F-FVqy8^s+URui(ff}$6N4?_KuXC zM1hlX>P_{&VA>RP^P2OQ8L>;P)^|$vi;!TbuR^JHJ z$90w!O_{mxpu(IymY4;g-|)n;<$XAVE2v)7I4?1(ngUu9|2i|4y1Jj0rsV z^#ydxG;aBlX{4l*)0%z`YGlTFpnVIz;}n)}Y~ZY} znlcsK*kc#YPo1yZp?Q7Hf=z;`pw3&+l1xvs>tD9P_qsdiRwv&SO(}Qgxh6+pR3J*^ zTM3lwvqZc)qLH@_>i84U4_F&gmVZwFrsQXiy76X@EI<24)Nk^74@$6T=FQRZY%4Q4=2w?~VQ|zZ z@D;BS>F4|61PmVMw0sqlHs89)`+Ge8M4o$+U(x&%+2a#Ss!{0uo&f zMXm$*$#Q=7T$D;-TO0h+?-VHz#qS>}i+Q*9w*l7|bYqvyrB0Wm`NjRYwOW^JIpH>$!|GuDV_~2 z_}dIavOX{#cJlyv{Xy5FRlZBNLcz-;wvdGXHCAFSc}6FOX_kBOD5CBg&xe;^F)m1q zXu1(U&j~WwFPRra_xzm=VA5;ito4YCeapZ)OaSQC5Z5QBq1{rQm|%SPT|DJU{$V76 zUCNpmqrtA)|UJ?kp++(7m z3%B|_8$xWuXc~J5@nBwlUA^MQeR~BzyIesHml*Z#<1vO>haLAD=r^d3B@s&Er zp{2HF3bL%U0OJq@x_ZxaTBiv$$D24qzoEYBM7|-;%&$ERK^GmekjKF?(>J*N<;u#7?pO`6F9U7P z=F>!jsTKdFtFrvj%U&=V%eXjderIT3-VJQOkB~y-@Eh_SIx^U~f>^)}0o^ncg*e64 z>*BFo49efIHVC5oLxxmybVEgld|2tRvmC0`WX$*?C6wpnvf1$?+NNgcpXGX0c2P|b z2pHGB>A`cBp`gn-q>t+6qFjQKI9PO5wv1z+$6bVK^Es58xpkH1t*vx976R{|ZtAq} z?YjiW7qM#S@qBYR9S3#+lq%kGcsSs590t0@HH*qhOROTB@tRfQszy1N@Ja+!q(SWB zHoafRnIh>b3ld^6elm3mN5)a}+LS*|@fPd^#x7Ojc8NABsb~oU;}8zIG6Ej)rQ=Y0 zQn2rv`ICepM^n>>(=%LO54(3+a@M@u3I{(h$Y6vSN}wn8y@wer%0^mSt%bL2XWh>Cum-XJ*<(Sn_dB(afmh( ziYVt8d6~Hf(Qmj7{ODiI>_+}Hf%{pJpxZTe*QXXr%qLQJ<|Pjk6;qkWva0g5%G$QzD#+X4>nY5UMwK$02r&m))QX2TeOc@MqMjybIXd|7ixI!63HrJX zuKPWM@AYWVeXI`C&#(NMLifzzVR_nZBdhX@uOB3U69Y5SM(m< z6}xA#Xsdw02zB_f?-#^~EySDqU?6V{=srJ(76$JJetu;<50`lvRq5EfOjo^erRl>E zhLNhl^NWpJ6f&LMeT|{~qKU=E6dP&7BwsMi{((vS*y_1(+#PUZL3i($?S#mlnQ==S zSu07b-hjAQhkMNDn>eAXog-c-ZX_{YPBz2j^;1H7x7TdiG_erYl}~S@SuHlaUEIpy z(P98M4s@GI5KAr7GRb}Kzg5ntzWeGP-eZ#Q)()>bos&|q<^n+~%PSlcqEBdb>B+_S zJe(c|%x{1*Dv>{cdpIrLr00U*LT!_QQ37ya}MYpLW)HH~rQR_JxNY zHYR@dMZ+Xz@}cSJ2VLEtUVbl*J1VDj`S-E>SIp8{J_7o@SC9Mq7-58E{rzc2E9{j2 zcQ@Jp=iY-v(DfvR3;0V@ z;*}6pidCNegos_6YS?_@LA13t2}5=Ftpgm}F(hqw*(3d*y6;a#%8CIqr0tqhm>*B`m~;wXL2S74hr*T7ASuleBl?L5akh^yo?t z$U{L!^kBsro)3j1L{AkJWcV}6ZGf8!y5g=_x-sMGW9u{>+%80)DoS_~+D1$0I}OH` z_99OB-n9G_v@9b^NOGFW@Lr@1_nPBkMxh^mjNOu}-)vud@d4a4(3NxyeePvLIC1g{ zMoQdx#PqgZQTkIJQ4!S4}1Jl@ty;qbJ=BuqeI!Y{(;Ru<*USh`Q+@@kg>(AHtKZ&3kg~l8kVR1;c zd}-_ISRpW*hTeJ|WKK?*QGxZd4A3RG6Xz-3m^m+26V*J%W6Nt^O7&WEs@VGLza*#$ z=k;vCuU<=J=H;)`j3y7OYY_fD3hQCbvv4u{#pHBFZ^jSEn+dv09}yk-Qm71CwNHkF z)o~gqgyeIN76@;(|9qDt|LEI3#VCCY)e~n@=-Gir+sJ-4^&o!ZL`+Lao#$4M)sG79 z4`qSwx3_$$XNVzphpD5X@%;?e#IQGFKW*p@2W2jpyQJj5mwo>vCNawiA5jU>Q!rA2W=P1>mLB&ia|7I5 z&~@z7cshg}MrhqWxnm(jKA31#^gr(wF%ot?Jpsp=dA=Iy5 z9&p*pQOY{EyUwy^;|jQ60r&rRV(tIW{{e0u;KIZRRmZfTUg!VCQ``UX3uz)tShm_y zCwf9fxt7{SlMh$ZQRWZDgT=jj)4-{TeCymoSX2w0DAkif!CL$*7rh|h=7a9()V1)8 zdz-;`!~1OxQfiJ^zm$qfhXmc%9;M29krWRquDm8i9s^>uO@^oZ9B#B~(H6S*5nFhqCr{kcpQRt#6r+bmAWQLIq&ads6xLtlGa@u?W&BYA|b7R zHVB@rnXXW^OqA<5Xo(&X#`V$vb6KQd)#{q0Prx6Vbn18};L{J*OTK}w5!qP%2Ty_? z;b{UaS}SdXhsj0dAX`W;^qq>bCS}1bs#GrX{8_fr0cQlwbTtILdn6)j+CSnF=$p!E z&37wcKkawWjS-@!vMqat8`V^{E&M{S>i%t#T^uDhLVlZS=;DhBuB>Z(_G4D-PZ@V#!Agh5Dab;-W8mMjNi6CLA531EDSK$j@RG<}Q>-)3Az=7#mg9Nky8XH$`x8S%P@ zrUm8OqF28C^GkZx0ZS;$O&I(qaq6a zq;gE{Nm3%sd97pGrtltmeF)3Vt7Wc=Am1g+5wLTm)|XcT+zQY=eayd1@%TKx@BLKs z^($TZT}R@q<>cAtS#-PxZu+$S1=M^IUu<8;sHr$T>6~#3PVcW3lA*J`O5JoOjO0OJ z-&G~(TD88G?6C^p^C@Gmp$lZFstjfx3nhrwWe1!w{>;N`qwAmVIg6G-p4O_}mA`=ENzrV!2ha0XgD$0Y+yX^h*c&N%Vr3_2 zcsBuqn}aXg%S8BO>;bpFaRa8>Lf=utx*P^o4!}N} z8qn>dbQ~nwe@dYD%g^_+tev03FAy$I4YJk#_r=ifB$*zlgyDW9h1;McIPR3k6 z#YVbkD_M#En36fVEd^q!i9XYnsuS+>4T1(^3zLTfFut{*ySA{$a63CTtT2r$x-k0u zb)nL-9P#T=Iu;1EsMQc!(qSTds=ioV?M$k27 z6?c(8cY0J*R|b7XI@^IOwF^(JvM8RF{ZvyEe3ufW zf%h4Lc@Q6wC_+4tw+VDixa9vu=_x>b`lpR2mnE#X$jfU~!60;)}@-4(J4Q)tKHS#Fa z=X}&>m<5Rm@kUaqsah(cfwS{DAke|G7I51@H#s_Qa(KcgbaSY3>#ES3nl9+Ha>L2G znC_FFwu#-`BnwfJ!cjzVs#cBCgp9yc(LvjhDu=(hjJ zsygoq54ptHPp#mdb`)sXe8<~nu^@5D>xaPm%QInjr^Tw&=6H9kLD(+LC+p_S<>~eg zBFe#)-+kfSTpe(KgDy?A*corDk+_Yx5$6EH06(PK>6IK;BN!U2jz!CG(bhF*69nW+H57GQ(<`VEaC! zeuZdA2=`PT-)Gqv=EMxQB_LfT^C~m*y{gTv?Zga4j@A9~#F0xP32?hW7uAoB5hSSeaciXR!2=7fbgJ*jN*S#i%SEQEVZ_rEi zvDyV?sSK?QSA--#ZSq&Z96bkp0^d75psSi2$`S3fkql+atGAz3)i&d&srlVy|Jcg# z_M^~Q7W%IB$g%;qtWf{hrIR&QKb8aIuBBy%x1joQ-rT1dE?i(7dO90?=G)#S;jtWRBef1GjYEdkLt~=9Wz4@i~)o6MWT^(+J3$-yF_$Y*-#j;v7w+sbn z`8zZNZXf94d?Z3LZI&#KH|lZokGU5N^txPrBZl5e+mfW1X#F*<2s(r}^a(NZuQIau zC@Nc{(P?U=|8^?8XHBQu-NhaT;P!*=VaSF2@e&he*yfNv%g>Rwr`K;q1J9fIHhlws z5Fh%m#GWaAHpz4HZl4GysTh^rx}{7OR&gx}%$HVT7gVAL>o5bL`)*Q=67rR<-~UzB zIav|)xXj6PVsi~`v9U=q_DUfub6NRI-ITDyd*StzOdOUAkIbz3;I^!cPwY+{Wyspf z;NPJ^(2c)J)Kv`fQXhRkQir^PNflEPcq4s3G8pcCs1o!C-$n+(O14*0rZ)uV%5?G|-MxsL>1g=HBk)Q*lt}pps3Cg+EXFveQHUyI<2qY$X}& zGamunILgP)Ir#80X0(Zq@5l?pm(5ULJ+s95ZfUQQvLZAvrBimL@|Jm=Lvty6)P!#4 zlvRATQ0Um#8I`Z#hCcXr8%nFLv zx4q6w(w$Y|x!4+1p4v{k=J<72LTnD6K6ox#h#0R@A|z?Kw$f)?@~FZG6Whu{7z267 zK^NEi%eN8)x9gwAF@*+bjfsk{_q>9w)m-5cpJ@;$@i}&Wuw$)6EFUnf8$$af#f?d1 z>}eeDbM9EcQ$;S8x>y751nBaHx>ttB95*j9`YDwtXlIN`zIi$`^OoAeSp3zM+Nks~ zVc9q9go1W!_@0Fg@$^zYi9qQY^CGE1cksnz5Sa>aCqegDSvv>rs6Va({*Ma`*{Egq z4|DSg-}vaMVSm@ch#=M!v^JZxmif}kicNQ%dxlh4&9kfrr>OJ{^}lW0nA2?s+$qr2 zH%aws{7D*cz0tX%_P`mm5liklZ*Ue_{PrR_8%t-6WqCnFwP!S~LxX;wy^&AnLcQ1T z-&~Q0%iS5z53hU>aHl~xoB66-o;6o(A&Rw3SIJ3S!Bkyaf(n+w`N0;CDy2f6DT>d6 zvQDaXSkQq$4PWYE&T+m&1b?*Q{de7HuixGwfI9=aX^zGT@(x0KblZw|uIZ)QnB@w; zov;zK6_}SlD^_f_kCJz3&@i#kpDKMctg6#S+Sg;Y{C#kX*sA8=wPno z-)Zn^cZ@^%!Fk^t=;GVwMYC{fuCYR(neQ+OnZe&@bIcN{`t_L0gmpK|;vHk;S^j}D z>bCG?&d@Q77Wbz`YiLYVrF{xbxgcOwTnF;bgYMfg`}nAKRKNC{&Xa>IvbBRnAqp)IY zMdzHenh?V-<=|NfQ}hwwE`n~ow(T4Ht}lGqP?T1-{;po0HI&FO`-|w#Usn|tmu&r; z!X##DEG_aY)*tM`oRnl*I4*1P+|^RV?#x)79fsfmcL{W1>0-Vzm7m2oyNKmLE%{1(=rQ{p2&>|4pcJ2(a{>?9HUK&>YDU4zt z3=3Yolr?Y8&OQo*=Q>tEx3o|D&W~E*I}zWL#~+@CDn60FB>eI)qU$9cTLtV)Devzh z)IIhJz5ddh5gF@WFh*-4T?Ui;7GBmF^QmF=P6Okx3c5id--bAp)QwJB%Swq%G1qB0 z#?HgmC?-=$<~VFeqJ_M-+zDdvGqSt2bGaqTQWo&GnFxdol}pk!KSD}f>w@#0HPE%8 zi2Utv5KLL~RvJ@=T4<5t+-Xe|D`FB0BC*F-^7OVP+MS|W%iSkM3Fb;600}8_$1i_g zs@!&5FPk{xybWBptb^_ugHy^8q2%Sv()jOswUvX@Yq&{-+oR&b?~Ia+k%-)%Tx95z7r=QpBs#EH2OL!@6~M+Ok99c6>? z3``r{b_eZG?!i#9I32w*6yzrX)?xU#d4d!hn~v@@G{%`^&#q*e9b@vSfV&C0W5RFc zhFl8YLhE+?Zf%Uu|D^j*FPnw2J-EB8u^#JQhf7Uat0xSEI-3!Jr13QqNNYpAfVh$Z+ zFq3*Q0nG`uciwv_rSL&r&Y_)3$Yo^z2atCgbY)y3alYilC<)|~p^KE*L4MMOwZ%00 zv4#slGfyhixv_X33#aGiS~ZgJ+arA5+|bLtsv>0j z36u9;M`IDly9>J7)~FXn;ZU)&3L#mLS)u1QFrmH%Ng^xeElIGsD-CO}$-hE7ZFndL z#`h=>qxt5}bv)uixll$L{YEcg&sV{|wmr}lj@Dl4`%E`4c-A7F^)gn`JnW8&Sk=Nz z@~R`(7%?<{3dKd?V)HrRnU#LHgsOWMN`hF~-bjW|cJ**Kz|p!F$h!}^5Bg=?s|JS7 zMrPSfGq}gbSrXBx;epmo81~zyaIj)A?`G8ItXm#TuRDT@OHX2RnF8L0#QM|fR^o)d z{<*3H*Rcnnn_!kUy0oxEq4a4l!9QO=Y_PeyHN(WAO-q6+4L3y*y@VK!XS4i!pGp=J z$IAIjhOrpM6iGPhM_G1vCz@W@I3VvK=%Vga+aSKJ%1*f9FwEvmZ;V2glh`FmG+s$6 zcKABr+Q1&?F?*-0l_*_|b0$79R3o%_r?Gs-s zi@-jcW6+)ctz8nqE__$wT1X*ru#K-f5xiL7?Py-#u+%g7FrfPx&cnDXxJ$r3rZ=e# zC2^fjKlbA;|LCl>XsI9G%pO=@KLOpl6JsBO?O%a3aCuk^mdL#=??NCTu$wf`s*zdb zzJ5^jn)~@xfZlLF^pMrUmbq(1h0+1q3cL25mr?fbGzl(nJ%0+i#Rj43eq*%XPMscU zF|mjJsn5hRr5eMfY{ydgJf7qS`A_DuIo>1MuayM}F=1KMalk@6lh?bRWcEC&l1XHP z^Yt^(T_Y~Td$GepC|LVqe4b^smkmP^IB~u2wyuOXCAr|YY4M?Z_tRa87fhanfftR} zdTg+C`&E98)o;qhzwo|#Q^4op9CUY#SU$28>i%{5Ui^VKbtED8rf65f<~#L=KaXGd zavfb`Tbt5D-b`k@WPcon9CNWamtEXhRW`zB?k^xKv6BJsUHl8WaAe~#qM{!*lPNE= zWS!shP_<}!zNOQ7k5pjWoG&Tbgg$Z4C42Rkdbn*n^Wb|9<%J%tWjM*=+^HGbpT^G> zIY8bE&=p%u8@N_kLi`m5pJ*r?d#ndHRaRLkYHG2XBn2s8GOu=aWayfWkWh`}oRmGJ z{1-FkTN5|YK{t;Uv8Z5T4|w0;CFo*bn?cA=RCfOR{+FCT!#`G9_-h8qR}C!QN7$sS zg%2e;X_Vj^Nm!sDR_4ll1g2`9@%+y%aQk_fU zBQ9Gshsxc*O6NkKd}_IGMSc~hdOjHOL`vSoNS!~3@CrYFQV4)vAl%$}^~g;nYlVgu z1KexSeG_F?>uw#TZ{SQOZAC42LXkvgf|~huo79~jmr)V=j;Xr}sf*Ubez&ihu?^Sp zTXSVi=x!z)lkdv!7xiQVN5H)SUE{lfLUgH~CMle}$tJBC#FNw>51tVV-i5#V!m97A zjNi3(GMQ=V*%Z1od2^Z9qs%gRakI&%=Au}p5*w|_g8j6&p!-o(g7({M+*PN0w?}Gj{K{+fGa^ZWP=ytvN$W%x;~%c^FSW7NUfP9 zl<6VbRuzM)M^t7E>RkL;h|8c^^Rcs0AMfj%lHN2vs>sj{^dZ zPy9`8PPwd_OzbRU?iFu~6D1Si;k;eKv)}VNn2c;Nshh?(0q@y zl)n3WcdZyTCmWg++!uKQ-F4?piC_3<$3&!0X~LNr!q-txxhsw<=6&fxK(6Uc{;>)b7r9F=Yt0Z}#~%i`FQ8l6 z8}c|!l4Z*Fmqvzthy?0ylc0y}xSn*=pa3a(N3lXwL6Tukyu_0%vFG0&cN_lHv3*fd zhdW~0k!E7A6H-;ceFa@=igjFlX?Gr6gHTfZ=T2dX6E)K`-Oi0UT$zCJyly1Zh9Bdf zK0Lm5SvL@f{0;22MAqw%uv{!4HE-zr6W7`WxDfyMC42wxe=uzDT4c%DT)|v_y?MjG z)ynOW2WmLe*zEg2K@HWn{s|+hJcY4D{He0l0%N^2fLdgv=c*$m6qgYYvf}Q#(lHLW zkf2*KpweA*Ag#m{G2Y$#@krin#%B-x_f(2q!Z&I%5H3ow5hAgK9|iB2 zpE6ttRu_7!G;ccXtQx_3Dir9xbn&^Igb4C%F(Amc#9++*I`=bN9p&N1sQ}V>V`PjtLLxdZtXQk$7s&hq_L;+g zE_0my>w&hRJ#?*F7Xy{XLeLS_CtSm0s)cK)BMkRdom?b-j!zK=-s>4iv#{a5N!&Xx z^-yVjt5fTNVfG|pm_S}w&}DpZ-@i!7^uE%A zW?mkJIsMy#d$js2dDD7ZmPh4Dqvrwh?%moi3E=w-4s^TM9XhN2U4bEfVg{{n@%7`i zeJ|NMmYRs{qwzd*OMgg=j^f9QH_XX9x)yQA3^gJz+(a$!AlyXP{d{jWrAfpN|i#WSHEs}8r19_-gswtu-y>%vZh|#XjOR`KDN>-vRs;I$ruuX+K z=t?>SWqMXj1oQtm|Aqj%VdTGC63=!NYy!g0y>!LJWt1}%dAQ{cR2~j41ej##90(bP z_a1WI4LK#}#t|ol#N&k})U`7RtgPK|V$!_F2l6632#Ur~|q zjC>4cAXDQRaaDl4$e_y@_zSD%nw?NW6xT%!+EmZ(j~g0WN=;C?CfDEQ1af(QR{jO{@&0**NSd!i>senr$J2Q;?95`ZTR~7n4iK3 zF=#qPXZNr(o5fp8KLTRdja~Hp&Kpgkwd~IleT4eB!szUg6Kmgxcz|)h0A06Xq7Q^t zIQ+$uNi1z!})h-8&U;sKNlK8sDhYobMomo52jtbG=}%hFUvo@h)5B0@x*q` zH7rif)kOj>Cg`Tbesi(bAiLZ5vf19SZnsWgg(driF|3ugZAnOAgJYtpRz=Hyj`#P| z(#IRaa*erUF5`%DrEFwFHCoTu=PL}r#R6U9;@x}4zf)UBVXi9f@1TS~^7OMsXyyDs z`Kuxqs`vfIs5poQr#A>$ow4SS4Wk@OC8MA1PZiVp_u_`NFqxoJz{LjLSgOuR^I!V! zuva)EZg$yHe$XBjE@m;)Ka?Xs1U``@RXKl~bxoP^C5otO4;-lrRf6jh6p$u~uU9>q z@UDaY1GqS#>#)lyV*QY^9Fsj-{v#|}^JA8O8sfLppK`&_XACv|K6eDzBPe52Bm~}( z2N!JxgroD-%)U@>axi-Yggq@8z;!Gx==$1Iec}9WBTW<{X^1n~3IE}z>=L~Q?Z;Ib znAK*^Nkg@|-Y;tu1J_h~LB*dGDE3-ZQ%Wh_$dI0M>d*AJ2@Qd~c%a+qvWKVq+XRPp z_5ANQBZ1?)tDkjhn;qRRhTDzWRSSW#vO5qSBSkhLQ7W$J?j;u$_a~p=|L_${=%SDkBCwsN)lRK$3r6C?K^LD2P%23$hWy@%x;S&fw!#n%j! zu)AH1fDgM?ye)~$^o{v^pl6%?CY>Pd;j=QgBey&Hu<}R;op($4S8sjS+BwAU z_kc?Tx(-4aGiO3wQ}yAKI*iWWe+3_Dp6_fG*4x@auQ<{DIkSs@_*=e4t^95iPiZ^R zI5p5mexI%%T5qz+I@V^gqzZ6}L091^v2yG_*MVFtei=qEITv+CK%(5O?)PZfk^q0G zuG?ROXrwibGPiw8-lOe^F42Vm=hXOh2<+UpZ{_d-e{cYo1axa4M5Ae+yLf@m=<|xJJ~FZxd_z%;m%LXLWZXlXx~}`wzniw8LcX8g@`!u%`+NwL&in z{z{b^m|0xKRes(>D*73KO9r~M)`7od%o}5Ntro2CIhtTmdKYqb50}PKCUcN9ECgM3 zsP<%yZEZh_E70^6z&k`JFsO=iXQ_6RdiI#Nr_r(kE;;C~JhSqPVYEkvHk&nY=*|cA z%{)U}IA1U{B}rfU9T6;ESi`FxD=pU zoZ~r7l+{F=m`zSi*)~pcU=`T4%al2w#@9uE<_b+Lz|CUc`guaazPfRa^!7Eh9tJ@$ zXTZg5uJGSwK*$u}b4&@k0Vt~6AA2D$5Gsv^loa;q7(H-K!`|U<{M$c&g{FnBSRmlE z&?L+=xpxvHvOtxEOGnU=J$Y^<&3U02g}i&y0pz6uUBL|JTU`}_LwwP^(=^JpRBh`! z8Se3(g8D?_y4!sjxkCy!vt9UQlM>Bgp5nLJy6C;0 z5)RZz*PrTwP2oIaNPW2Ie2>ICWN*&!1XwE)g36^PI>s0!e$LitGc}t=SW7HzN`kDij?{s#u$9DRd!3d!pu~?~Ho-#`Ao`-_C#gso$@g?O;T8 zM`HGEE)oLyi(h?zWw6B=<{KfRnj>e7dvG7;4d|M=Xl`;jXuzaMwht}WEn7?b*L!2D z%fGwSv`rljnn$+Ob2!%sy&m^Kqf>wVhNw$j{jv~A$cUy_*zu?9o2EZ74z!@FF;8>+ zXJS6#qTj6UbkGt{$@@jyBz$u!y3f2e50$|{$_|R@Hu7x-5=q?^v_K$ zBGw62vRjQVR$83nYgrpt)0dMYHxzr(WRBKyRLF5QZS5{1^@w8D*y+A5x_6~-&w z3ZiW_!F_Z_&@B==Wt@GxZceVvJOYtJUNvLgFl)+7)eynTH{L2k&fkIcJIkP*c1fVA z#vZdUn_A0W7fMZTHV;LiXDNCd4ea-10$q`$YRG9(WA*XHyC)lWZz@K~=3wJBcrtYu zI3rsHiaC<97>KWE9jP7o2)!pWS-$+$Z}F;Zn<8a2h0%UGVWk1%%M7}WO^!E-BHEAD z+$rZt*)wF>`BdfWi{Ew3`1ztc495h zsA_!yxGbRi{*RW$Gdna^Xsagyr|wf6+qOM1Y6a^gL+)6&c!z(kFTPa;uH9EA3$!`{ zSH~|j61|tW`u%qwFd0tM8$Tc&11>A*zP<{jt0&Ttzv*T^cY%PEPrTuJ6ENqHOBp+i z@++~V**{@3`KDa?mrddT|L(Fn?Ke!6rccZ9P>h)0rImzqz~_w(bl*peL8`T@ius`X z`VlFdzIlDr3mtc6q?9RkfX2dVC_2av(Add5dTqHf>^f*iJ zK~Ftknm~p1RB2RnB}kadIS1FV9H2Y#{WF)#`+eR5mj12hUr6QtS|M+)*M7}8vA$X9 zY3_Z4Cp@IJw>*Bze^*)j?SnAA>gJ92A9Pa|I@4HMdpmVKe6EU-O$ z0>*(0bUPtws}w^II~hv<5THZwy3(j(e;K&fL-5UBlZ_ejh4(Tt$%I^RO1vT8;|n)jeztZ7C5u1rZHlK2T_+n@bLPWF3)a3H>kNzVAc z^Mw!)|F`eY3%a|fmce4uNlp8WZVVEyBT2$K@6zR6Eq1dp$)5Nry*3UP=o5i8a;m0$YlJs|%MZFY(~ClhlM(w1 zOymKX;rz`^S@nlWZQ3&x?;I12HoJ+qiKEES<)?eUdSfeHDq($QK^+l=JtD~4)DYr$ zdi(Jw;0l0l#=ZdqHC`;2W!h--^;e{BNhVh+Nwg>rS!c$n_wwi1?uF}7JTBbbJ}JlV zDY;$UrOg*ut>Rpy)67QS&#UjE0q$GSg}Qnc)BemPt#_V7U67W;>rnk_(Leh5k^b&* z2;HRfTw7{;s^r}C%Du)$WYC_!NOT)@tU}<~V+*&voz2=B4sZoQS2G6M^(zN1?K&s7 zYqbs%1ePCiQn7T?)KtMIyTsgom)oOlO^u{U8vQl<2@j>q{PkfdbO)B#>#1HlCgo}O z2h0ClnE#a~g+SN;T5LvUqE$nbs@=~OlDXK-waA`d;N>@q%@WI)3YvoMe2Eb%Mu*Bf zC?oaUgXfl})LZY(wwmwJfiq83wKS{$b0Pj$G7<(|N8Pd0`bakqElVcokrP329~ET# zH-ZCkjcg7suj%R)!-O-2B1XDJ_*X|2 z0o{0s{lB{%8ne&UXh$3;5=CSfWQ_rXcp3lxaG|a#3L6m-*b9h!KOJA3 z9XIQ5{StbL3;gTYxb7Gwm?j^^=oa+N6DZCRg^TcV?02qU&}jZDS~px`i9?2F6j=Y) zuk8Q7yyBpX-lOgH8)EC`cSgb$ZtXXm#Aj5hhWFokgxKUC*i(&Z|CCu2WHV(M=rMQ< zN=68Ld!r8j$cD6xCy_=6ec_n+-??$9|G5&N>lmb+A5(i=FH!M#n{uEku7z3t$oxQE zb*|_>A6{jnvB1tJ(U63~u(>ptpnZ1L6|r>Ek~nQA$X2uI_{ViK^8d!+KUWfTTUUyH zeZxIsc!cb5aagZr~~{iZii!4Y(~ zvFtkC^Zv#m|IMrad#Swx-J-+^704M&Qw>#8%n3P{{r>$M2yHkSzCW)Jy+?4Y#0Ukm z9jx1?d)n=z1)Ud2Equ)W1swQ+swN{Z3Ab_3|E;@W{x=R%p!=R0q3=8Sp1aZ8NlD5d ziFSfC&}+6rF29aY)Uj^{>bC}H7xn1PM(5y!Cxi9$chLy8PfNLlh*z> z4*$8*pt}~%etg$OKrS1wHGpOLu7p6NjlMvWDXsdCk#V{tej}4kJq5L*VLt}deuu}! zMmGC?><_9h12tqwf0xU|B>tOE{saH{??E@2*;Hfpt~1Bs?gQ$bdq43U0yWpRK~e>m z!hv`M+`XdWE7bjRb(8o{G8=v>#vk^CJMY{HwX880lW7BfDQN%KuK|I8@b9^h0bSoR z>3|=6BfiiGWN~;|@Ozs@jjvEttdLc#Ob(is`^Yz9E)y7IO=m1^3m*zvzbNA;VnhZi z?S4=ARI<{9UO@ccbAj-G&zmghR_GCYh|XuSTG;%{+#x#NS$-()EkK=Dm|uh<;DcR4 zs1X`I?br3ZY14n|6``;jnE2jy1(N@fyNxj})YU7a4sbt!F7lUuXH}2_qh@xZ+Bt`f z%4Asdk6~mbvbX!+HLzQ;28^);i9{Y_#d#Pc>mn_4?H-M`Og4BCx63=jlod8f?)}e2 zfbjp9R}OShC=m`%a0+bjcn~L`2kkIY8YG zO&BtrI=-Z`9R4rwe|>|Bpey7g;HO%L@$#?L1|wZLTCRZ5sop{H?WZ`A5t|r8dBs(1 z%MWu}hEx8*2(&O*e7bWrxa(ZMeZ_+tR;Rx6CPe`5N6>wAw(5YSlMaMzBqJZh+Y#eh zr-^}|4nRoooeZw07BUo6oWX93u?#P1lqI8wC8dFC*MH^zMghM#r&Xb*OrDYa>RJ=)Eh_*v3}PxiEykN~Sn10xcTcjc*M9zA%N!?~==4JbnF9bPnXz09}3(NWO98 zjm08N0V_G%#ai+zg`Mma+im+#3rRndpwn+-wqp52Pu?*s6qs?g%?qtT-J8Fv)aDPr zain1D{sQ)yfBJv8R$3C-Hv>2M&{ujhaZqm4;aG!J`Vuqw%%V;xl)0GlsI3^dyPA24 zUbdm)a^t$zW_Y(nDj2 z0l`N<>0XY$+^>ON0vVD1QmUXdNVsdY>}b8&_Hu?-WkGQk3x%AK@Wh%C&=KNnxPg2&^hc125PLq{R?f-C36}@Bt47i6|y@-Wu2q8_`28Ylj&;$bEs*9)|gfBA^P806uX_a zuhVni&PRVtMD7+NtOj2Ze49OjXvOGHDFMbo2Xv{&u#Hl(uiev0arj@|1Seb9$vUI-s+rD5V6*qLER5)s>QEDKbwQWS0NOGO zUsjg)G3LjgfvDQ_fsdBfc;fFih3nf7^6WnR`=(a8GZR~7#iw0#Wql;RT4{v8Ii|W`=RR}pzZ+mc$@EnFg+HpEiQqCK=&u>xMpmv z(qQvJ4Hn)_UW4thi%CTx{=_|9?VKvT-K}7QLrTJXnxxs;h4){5I8u~rzts{Zc8NhO zA`1omQa}V;L(pC4f8cUJgg=BJAAn8ZoG#pLh=UGEJj_~S%2pNg=jm2fZc~})y2?p~ zBH|-i#{SfS#jLCqM1-=~Y0)}*@%}g98iDRc&6J!u>xkS*Uen6ZnfIXd2z>hF)QKS0 zUj@CxLo+DvEB!9&eC*?G`X?uQoq{?m9VF;^liMqG2P+JMLV_d-3X%jQCsC3a5l{&RL@*E}M@a@06eTD@ zl%R+KP?Dm6fEfhEL@=R zvudtdUlpr;54z-Cb3F3aUi63Jd6x&*8>KCyeWLVhKkk=aReWB|+nx8>#D?sqeIMRD zpS3k?YlrNTR6n`Vca!o4d_rh(H`C*;Z7NuBVdMGleczs)8oAiGPn65baM$*vi~VQj z4km;?(XC!;y`0mx+M&&P_1EL;O!vFFwKtx)DREX?XifLeIj`vFn!aXwF z)_!KIxdbosPRM=55imu4{LlL@e?|>SuJ0RE9Pz*5xH_t}M8@KP%-6u;iyPV;;wldH zPkXpdL86P+UnhE8(U|uJSDsXiFRxl++ShP4rJ%9FerjKf&EC((@iRnqO`pHm#O=w( z(Z_Q&sq@Z{6p4=5LH9Ror9#u+cXrR;ljcB+>r9W^n%BOf;Oo_l3nCW0_f<}~*Qw#B zqAU_W%)2&U$iB6pHdnq3vK zxII+#%-jO2ou|!9{6y65oX*_1n=?UwQJs^<^egXl>_o@UR{VHwSC7WmhgL%Y3zM7t z^BZG?>ar&^-EVy%Wtl;X>q?LNWccUNJzoM>mEJ3Q?NeRqvHRW35w)Ks%4_8!Y;Nj> z?voC8JLdS_|N58@v0as4^Oo&Rvk#9kF;A_3WEd2GMQ4;2*Nq-mGrMw(eqr>MB9kJC zTf!pKRPCnZHeGERGdrsO=aWZLaOuIJsvqRg~^@m@`Jx=`6s2dZQ5iwzLa0FY{ zah|oM8qE!#^9kxxc9EU5~<6t0um=LL?c^1W;p&64e{#zGT%D;rAo%q^Guk;^Vwn0KxwDfRZYtn<6qxow>; zs`J=WU87p-7$2)j+NYj9qV(q~w$S4yC1%L3(({lJuXFCYcBbs}o39Dad2L?AxPHF) z?WNq<8m*|fxb3m4#cf{3j{Q+v;>?+J{MkdHf*X+?2e@?V9qIG0FFo!S4b~3ndey#j zw--)brpEV>J7t2ZZMK4ViNnrxgLc+X^_fYFhPxdN*uy<)gp}XD;z`KuZ!DwFE{HfE6!GY&iT};rV(;JXwtr;UdpPC#Jo%RX_*-EeTN3&NJJ_EccDm%=B7D{JYzs#o z{rX`WJ#KJQdyQoDO20xMndY~4&0`%ju5%W@cI|$ubkWK_b*x5TNNaB=i`V(o!)K;^ zz2Ygol3Ou5xi9~+&Tu&E+2}R&=MlHl3l$-045N*KY5V-F%j1cUOEsx`dXrf?AmFiy6MvG#_@*<6iCC@N!#8 zecP0|Q5u7zav#6w1?7nciOu8vC}HGnvgvYm?ZYwFGqekuHedSY_@waQwZ!+U8TY+ixJ|f8sZCV3fqT^9L2Ui27i}j* z3ffXi-=tWa%m3~XX?9`#ffYsex_)@jQ0?zvS>_oKLb`sF?yn|ppY{d?9f zdfal~)Kx>9`}&V)e0<%xL*n`LVvkaVPTLb^r}vjU9`|U~=%Q;bg0G(S+{;#Yy}n(r z$F$aYdFhe~GcEnEaL-k+8>00$m>&0~^y_Q8jLpAfYo6OGwAAPEx-mk7bq)`di|=ZO zoZ2N^^fXp1c2ZATfDZeja#3eBH_t%BnYS+KW)!ETNEiQXTR@8&LXWF^$$FE+wBd`3 z&V&q4N;rGDX^CZg@Q9e!M!&%QA8p@^hO`Q0D6tEzGiS?a`Xb@;bLQHLO_I86m&|(B zImi6{IX+t4-SoI(JfA(&Pjj?!uUpf{YS!1iJ67bC>X)w3H}Y)8lekP#D?Tn8u~JmR`}L3W{vx!vd+2d%1FlI;ON%}8I!ikwUGMy8TzP%r zlSbIRwf4tT$Fm9y9-Aj+F`oQAZOm{>76T3R{OmB#2tgBmFepBhndT_R-_^cjh=A6J6g~6uc^7tH{HrUvO{f^+-J#Z&btYsEB5CM7j@46bhUb7+o6P|GVklY zNz%W+h0)`VzvjL3@z~}Us^_jcwodU%(XNb1&?$=X;9WE+FJR{38ljaNbxfM?B%WK7 z)BPj!s&)*|=P<7%r^%PS%(hmYT^3FAA)Fp}!k#70XK$Lhw1+Q~I8-3maogsh z$4LVTcMkveDi2#O$p_r|x$+wT%78<{3h?xDoWY%MJ?G zBwqh`qkYza?hl-%3HxHkWS4AK{jgx&lYq;S(*^A&awnWk<~FPNGA-YGSN-HRlkdAX zDp_1Q{8Z)fjfh(|w78MK07XGJSMwY9%R31qD{)6St%+^~T z_lx$dlUy$*W^qB~lJXI)hW?(q@!w)MzAB$+dn;}l{rKHak9+B1Qq=p?EwiN0stnwY zlbKU?=cGYCM~6ZRucrS3jtOo@9K*J5`uc@^PMdzg{#o~S+X$KMG8?D2F1P8qxQow0 zdLHHgJ?=hhDcKpXd$xBEFH;t^^$Z$!SizqoOZH3m;fSy{ts@~`rL`p|>}O_KZ@t=Z zaLdw=I|Tu&3%OqfKa@TjwB%|V{k~olJ?^1v*2a?iS2!~la?*BGB;|&~5|>q}U9V57T9-`R`(uT|>qGLR9j`Nwn$Y}>rpMLId>DUh z?7}vYKF7KTFTDnQ9UeVT^k1av<}hZ<_6s?N(x%4uMk{lz2hCds)n=}?c(%jg#$%Jk z!QCE5g{$4deQ9xH=yAD3liprRnwK8!{`Q@O`~4zxWuUOa6D{kfon z^thr|7 z^>ak<=;Vv#8Ch>PPmD<&ciXgN|AT8HtGEtx6wT4lj{Lg%_xnS?=g$t&Yf08@t@ISrAEfSbV`&j6aM*xgZp7ts`rk&YWMcQ^{p@M+V`ZPRYe)G~2h7EBwrczWDQt`mdCR}_?9awNa97MLov zKQ$yVLpAE5?(FRqwwXc|S^8#OT#iRV2Mq4Kke@VhS3;46`=(ao1A&#UDRS0E^y|q4 zdfcaiJbe<|xJvy>;pHR1S>0ig^e$yfRSEOJ6EYKQ8m+RXoQoW;;~X1# zSN4dz_#A_!9CtfU9CvtmnbzM#dfXMAPZy^R*#^DMS3h>`hD+14&F}X+t+MChnlxUmG*FOl$)Ye8#V=P{%V=?v=y5M!8J(k(dV;f- zHLNK=kRwz+qv&;j`j+4x3$n7o_g=ZgYxUu)58nbXwe_^th>cg415uFY|dF_I!rVy1`3}jUvO# z@4YmtmtXQJFQswl2EXE9Z_%;aQ#2jN#>ksI_qNZ?>AcN;zl?QNy{pvo<+QlT^th8t zFRUv0kSNnLd5w@z=)RYl>TA|ZUi3-b$r-=*rT+Z%a3`I$3WZTY5ylJB=S&d3dTUOu z)1I|5b~0MF4s+wDh1235qsN`_VPbrd>7JG67Tu{`yT~WYy>xCMhl%xh&WTnhjoC(Y zzEw_E`l(%3e=po!`i(<>=}z@_{#NUU8nWl| z`HjR5M@{9Z^y}}5jVL=VVtVPtklQTpvojX-aZEpPd1hLb$=jCr!pyUdJ`08dI~D5f z>3O;1^tkr&6GrkAmiL%-gs(bbWYHTj+kEUE{dbwJBD{(MHdSo3L5W+0iY(Y4XuJOO zxmKV2V@!0H-`D}+lP~+M=g%{wKgV=}9(VnRCN^Q`70Leg6BXWRrp8J~gk2HU+v_Hn z%a=UKK{0T6`9j^5^E-CQ>)xKNvBPESV2sjqg-YWdhsEqeTauOOpYtc_anJi7d~$iT zYZp&?(6k|$H9KG2zbGHuwnh1vue^Ss{^B)bs&mY9HN^wNd-{D%bt`PGl%fr@4v*vP zTDMr?qu%oaG=ERg<0|RzNZnC6IOwO8zWVFDl^?&(iGI{&9(4QroXF>!Wo3h}Hb~!k z9m_vKt>nlDQ?=Kx@&9!ml20@rDiRx~c4nUOIa=IQdR#NJ6t`l&g#ynOj7{si;s5ew zFgNe^Hg_Ygn5_=mOVT!XCS*1?yZ`vO|D@rOcNd=#opWe%W60cD%E@!N#N?9Jy>ob%Q1s|? z(1;nUsQKeHCauYzdAA&&ra_CFPLJCw=o;Kp<>q};R5j+V-2JG!(bsD_MtfFs-hOsA z|G^I4B+J*2ii%2Pb6mV#_p4l-pUHLRxhk7_|K1x5cJ{G3xYFXDrpIkRQ{J0?Pr*_3 zu%<)brhS3iFRant$D#90vG=~`G`nl=_pZMg>=66Zv(q)WhF#UqP+I-S*?oGf8+X0n zeK@q^p&2di8G79CdqRh{aFVV3W^J?$yIH^NsUu3R zF|$PuJKIh;_)$M{W3tFXzR(`=;xTo>4fMZ<%%I0zCh%ry;dcjD%VR$~&9s(r*n|jc z%(il=E~{UrWad^B!t=tX)W!IM;riPbTLiMAX03aqB;+tp?&PZpTRBy--qSyaGU;*G z@;_>8NLi^pte(p4`sL)xUB@@rH%)r!aCnWfDU*JknoW;ec}(rTzUvxU`9nK? zSdDzuAHS%mKId80ki1rrk>a_HKYv8NTb~Kl_uI~T|8l+`HH&+ik|R^g4=xFOH5^kd z-kG}L+RU%Vc28(-`Z>7A*se)Gw=0rGv0XjtnZ`r&@ArP_JGFe0$YS%M_4gb-Zm*li zkAREG7du~$saM?Vcjopvdre9I=(Sg(`d_kmD4Ax&z7tdUw%PhoQuQov8Md-3Ri$4?ou|i@NoH41W)Ze9oA0EsA@PyN zgXQBn)T_-VsyviY3;Wp+!|`Q-&%np}me_ou$*;bIHe}pkx0#d@wOy=YZ!^dFcnO*h z7wB;t^VYT2^7V`}zEml2WCKUfk`ssd*7)~bYUiHrsQ&HbmK{kcPfd6ywT_kM3Nc<{ zD=_bKd#`l%mEqL`2j00J@-C*u&7;R1!+&+*QtAG6?jD|V_q&*_vJI>a4Y=#qqWXX* z*;>)0y3|Db%SAH@>6tsWn21ib8&qAQvTuyM3+QpDv`DZBjy@>gee|qKUx#>+VvdQzP@p5llS!QZ1t?rnQH#u7wpklbJ}d2>Rejfi}bkuJ%P_Yyk35PvF7U^N2ib9)b{dx z$|Cdls-NuZO>=$orW@UOKhgdvM_|Kakx9Y*!7HC~@>x2Z8hEA{eLHp6ctg(hG{otdyM%>wRC{b=_z0$b!8hYg2=|K)gh1Ralju_=f1>pa=3Z62j7&Vm4iJZa*-% zQ24!X&ivztI>cj|)kMYSsC+x$Ep;G3ZY+AoF_O5Xd4hu54XvFgz5J{ybXlWrDED>Noj0jmFP-ROU2<=o zgc~jHC3@Tks&QS)?c+x8j$gWMruWqMZ7Z}K43%f^yFFfT<;?rG4?kb9WYb)*Wc{{| zxvrMZt8L#Ko(MP+$?Z}Sz2V-m>^ORU=Q2HR@%1Tnn%zNhXQr^E>I<>yHV;TW3353m zqS_iHBN?Q@8<*W3-%?e#B-;M$+OpSE#1i~=2&(RruItOW?8|ECU`Olk6?)uvJB&>Y z*X#9O8Z{YxWVF6*Cs**bN3RxJMVxGjzY#jyx;$pHmc!!1AGDKAjZ}_Z@7#2#lPBYj zld+h<%c(XVvh?SbuhQerNZHKQSfHY6bKn!}&|U7;RW^sS%yb2VH^(mHh^>~KdV6iS zT*JZS6Q2IFjn6e!TVyC~kUNvvVb>AjeTX-#>oKjr*XVKU7CJdwKTJ82bG>#QZ*uXW z2V*#0hRhF%_x{+NBsr*b?xx{#`GVoIQ=MjOcMBA5k}+A$Iy1k1Y z>-4x$Tcf9yK3iTk5O&mdiOP=Wg@TaJIEG`AzM`*By+R|MeIxZV5eZET51|Z-3q0 z@6rmQZr77ccCCtaEw_BcQYobIc}G{p)1BwslV(atH_1P6c$Fg}bL(o`WIv;#t|i{9 z&zaS=u56*jEv3iR8}m%k$v97SmR_r0X~uIt1&xzZ%iX&Jr(Vmk&`s|i8Jc|T;e}(y ztN9yhr9!>dO6^vj@48#_-qg5f;(M2Ewz^1*dy^jbv}$me<}Gt;=g@^B7D|mFwd&Fr zd_2-z7Dh?Teaf-o>$Aj$?de}sG6mNJMP7dLHeujV=lss$HtnJmk)QyjIcl`HW%Rh` z6DEFSZFM`SpuX$L)}3zK_eD=Ed73^WPKk%#M82bBbB)X_hnE&kimWy!}Ta{)A>e#L@Z4EhnrkbncSm8RS zgIq^BB(G^TG>lhw?F#>tvo&bqU6aMP1M;4UHQQghy^z-5TlBbsF6_Y{qjf6gd^Fhm zq-TWZAb)~{xO~{W3Hz^_?L6XVo^H^(ZSO$xyv8wyP5s|yuw7auHzlPZUw?wwQW0~* zqgQBgZ`0$7tv}Ph?Q6=LrYZc^k904t&Q1=}Pvbm$*PN>(VX4Gu;0}#PXT>LpdY-rX zK0eW1=fQHexp$8&F%i!xE_C15p0}A6w}KwG&*R0p^ZV9Y8NcV4(9}I`R4VR=eu?9n zthKuQ@{c^LBrOa!G<@9G+1ObnI6h2>Yq-s%Wq605Xd3&w@t0IJIOxyW+@Z(K&~lJ2 z`E=mr=s;*!>JjVcElCYJd@jB1k(T403vK0{ye(cnDqGwvdcKhfcb&_aTOYd@iOn4+ z@^MxDRb`dDZ}jWQyY#qWANPvBKD6CaE|fp8ZH48^)3dhsUx_>DVw&3ZcKd<8_?DOT zFTX8Vsr4jFS|X}i`qRf@m)%2#-Ws#ZwuB#3;imun+dX>RO2<0O{8t>c z-c|8&>F$w+3m@lLrUu0xbw7P5$}eQkW1*Im{+$z4vb{p0&ultxB*MqqS{B+fGBKIv z?|ph)2g4bUa_Z(szP-yTV4ug8X1S4_?alM#<{6h8&cs~#%H<$B(|gHR3%&lQEe#hM zGbLD6U%SM(-D_2{^%#)Mv7mpSe?X5bta4K0Y({vn{^q^x7s^8T481TAXQ9qr2+}h8_XTfut9>%mT6|tm ze_i)kcl!KLMUN}`(RyCb9FGYnSX58To3r%KYId6^UKl?&SibGm#EA2Er!+Ke98kPf zx509ZKF=4PcAl+Xp|iEC+SjptnQwpkWiHL%YI@xEj}muM&-7|9yt788%Av!yRGq`+ z6zAH4NoR{kKk#2ttPBtWITaL~)V-y{lr5`EPkWKZj;6U3GFMhb1j;4Lz>( zan%D-3X$ul=G8XG@8Y0bFpnBhoqZTy#3ssr_~EAz7A~eRn=b+|3g%j+pRm5 zS7_N#e%L9o=p2jJ-#;C99n-L(c_Mh-@+zo%6jW+8CS4! z*F|G<_vz(vB?}jEIaX#I{p?aQImf$TC;$0NA>(I1KQP5DD@a=8V9au>O(sXO4_e)j z(5A(GOpkkK$)`eohw@qaid(YG4lI)OE;#4EdhYnHL!qnYCxuCVHY&L+`g5SdaG9gw%VcFVPivOz@y1siokWZKgdUfLtJZRU5u3{eseLo77Tvs*<}m*J>594hm>i-nsnDck^|xCWHN(J;pW65#JMV z$A0jtg`nfwn)V&;7Z;Ts^SymU+q;Wz_5L`id{=rN<{3S1eb9ZLGcGwQmqOde45vC| z4tRM!|M6l;sK%>R&adWH4j)+M{pDq6RQJK9njF@ir8BP`acH2s@ok8u_#RY)){lnaMjip zHmi+6{829HonDFg1zU`E7-WpqVYgcD>-=zW^#jF6TA7EHUQ{{L;=Z8AJ<`Ls{rkPl zd2R<>mKd2@_XnMF+|AiiwsLjZmq8){{_1q)lI7$X} zBejz^7|)xqdq`#bh2|S)PQSJiYWlI^Rq+k_b3rfZaktqVQ;EL0R50VFtKzVAbfR$& zmt%0tJozNeNZB#>_r>UZ+9z&x^5aI)eG);X(;r`NeIO$|roQ6UUOmId^Mh>Z_x&5_ zab;LvzGM@8x1m9NaJWJt&Qx&zK>Oh2pN@sWqM=JzBbR1x5qMS`wRGp{@`6Rh^D-A% zu<1>em?aVRz~uEk=?jy*X#O_R<39J)^Lb>uEVW7H$T`Qpl?S`(RO$|jNJm)nznZ4i zRkG5?;IiRo_X*!~zVkgVw#-OmJINydBdyDHp_lKpvJLI@5W~V(Z zde`aSyPN58#f&EO9KN_i_nE-RJ%O+9bYc|qt#X>C>Xettg?_VtX0pi6k%v=d%}{KY zGsis6tBP%pe%6d}aSJLo`gx;Q?@JoZhZcHVkKFlr!46Be+`SxMG0)R6wt{Dx#JQza z&V=(fr*!YV8}?c0O~d_LO`cn6aa-we=WYv8<8&6S#2v%Ds@-;9o3Up!&FLTgiE+^F5{r>#;l)}0SD?D#nDp1dLH zWOe-NEwypG8)E4Gw$bDMe1F%Vw3(B2-_D2e1)Vc~m}N$7;$P*UG!XMF;qqz?(XV0G z?`mnBIN0PIHLi7Kw(!247Wd3{jbCaje9lW z$BT}N_SSH>v_5&U#C?m~7Ixceqnx7QD5Oqj)a6C@KDCz>l)5r~O}NC=m0hPqr4ngz zU(w@g)!a8b9#J#2YS)#v9Op6fj_GlwUu;|Vc7kz8wS?f4IeG_qq^_MQ5IZMVBzF7b zBRyq>vTxhjZjzjiNt~*g=n5Sb217OJnGylZu5oEfRxYc154Dv1}_|p~NX9 zxU_L8Uo?NZuvziIv5r-8-f=q*N@f&p`Kl;*_+p*ZsnpI@Y4ki|Cq3@U2+5lFhx(6X z&sp;>apuij#~ECcEYdla2}Vr*)^YcGo@TuHVwQ~7fVLA4EM52L=&!vKwq{&2|2+Jk z>`t#QES^g9;Wa((nbv-7jwX%|?u(Nv4BYcCXuP)Xul1Oja^i$huh=p-3C#h4g$ZVc z8m#koWNdvr+8{GdymyX$it3YsOWfbxp3~!Y(c^ZVOj_Q|7NDNE$TTsgT>APZqdjRK z0&>>x%Dnw?=3lk(!4qf4&j5P8N;c$=z%CwrjhA!&t-6cUil=rfM%$-g96uYiPqd zp3>BnM>%gEcZ_LCZR4TEeM66%Hl-}{!ZzMn4(%OMLh4y!b{9uA#yPp^>?pu0X9yhg8V+oIY6DJ8* zFMlxB$h^_9GwrirP~5Yyr#wbPYEbCpR!u7^powdL-wAX-#K2H&uG``JnAejpQc@4 z(G@dGRF=JGfTgTXjs4Zo&k1)*jOh2BdgyTv-Htwc>Y(VDGdY4M-X95?d(BO5(L3eS z>jGke<1b_=yPn~hsu`N6+BP<8H09vBp9@bfd^<_1lwYIuiA6=g*Md-dr4We_Z^eLWQ)}$i|l+xeJSi9lgsh?=YV7c-2;W zpD{ixyyJq-OMBCwpL|b`dm|>lLnq{@j@R^7E8fXN9RaI2*eb0hKP$W}@vljI{9=i3 z+Vl!FY4e>A>vrot_Fv&@bxI_ly6&09Y@4Xnfkg^5e?QRU?yJyd-{o4T)OF>OhEsaA z-f;LFF8^}H9}CnDhG@0kw|?j{<8YeLJN}iY>K8s-N=%^4-Yv;vX0dDM_O1Ie zStrly!%3r<*^@6GEbgdg>*gqz=;J_Wg&rBkYSrPmJWv z+MUrqZG^|q_=Stgx$%o1hDg@?SpFCm+ML7A`{lB8+zA%-qnm?Frsoew>b(sUI2GwH zq<5@p8$G|?Pmi0IW9GwK;JDq$Pk!I^i*gm3k^!ERCQn@!x@Va$$FV}5V{!wrlE)`% zoiiE8oL~Gi`NH~q?TlIG+TU2Uo{jr%yq?zI&-A$6F@ojh4>fso{accPHW_T0@8P#? z^ZM^PDYI4x*W5W&8&djY?kt;*E{g^FO#xOSyWgUWK2-X0@SiY!vSCDR_AMT--zTP)3kL@F|Cq~mXK~dG zzC`zRiB(pDvN?CNqy1Jq-TzTs`{cW8*Lm&FVH?HDLx0YEh#og8Wyf3I zKJG6oIu^EaHJjxdvB7GB0*zIEIImYBW&}!|HJ>M;s-tMtXG+zg*R7E{46BS+AwO$;y-%*n8m`H1orcZ z=j!WKe|$OZA@$W`A=}0Kf;GKs6IXH^^m}(ma#x{%%0QaJ+-p{}{*Kb)YOc93#%Uxo z#Ls`V=feH7-^RH(n9eb|S5$7^9KYK&^X7h?opBDb&6oO1k2DGFzv3BF|M5~}OjXt9 zK_eyGFa`R&{*xZ}WMG}u+nF{pN~Rj;!dV6as=qckZ#LOsl~W)s<(U;R(d+K&Gg(UP zN2lsX7`n;4l>fLr<(oln{&ucc*Lhud#93(lWf_M*#-^6Bm%cb#{?PKir)8M0%Xjj@ zAw`GJhc4Xws;FMAV8{L`wv6v(Mc2{3J>%7+&&XUiEXwwOmd)?|Zg1@s&wDW?%l7V} z#bu?(6`Gn8_xaOxi;gR;TXmhgUWuzn=DbMzQnYl6fz5UugWTYwhpkNN{bo>iR91OtT%evr|m+)kgf{< zgp7dJvBkB{m&7WYrQ59q7L8sIuA3I%eP%2z?l^kf-f7E2B zN{P;sVy~V|sU7dO(8={FJ3oBNG?RLDFHbS`&M8&9Uc+gcA-&USamUl* z{yHxHk4wb;M=$tQ4HiEaI~6xS78ZL~uiwgl^fs7yj021Vf7}6buCBz7sZ3&F*}Wbm zH_AUAm5K0wg9E=VXMUArpUCmz=;z_;<&OhJn1zLlIbQy680x>|K9FP0%};r|ou>!O z80mlAxrywDorAZp7s_NA78Z8qocT*0Z+}mx$XK3N{QdLtGD>`8?*4n$W7;qd{Fx4r zT z=AN#ej--44NJ)lhQ83+DC4lti(f1$x( zy23c{Pj-OJ2ak9Dosl^`2RUT=09H#Tqt9iQOVp>`ppRDKYuv~$Z`7jJR?WGL*QET zAC_Ap@k9YB{}Bt>4<`>?Y+zxY7x+gw%Eb6v4*Yg)``eQ#zx{2WstZ;BTkZdBo%HWl zj{9-z@6WydcAk5CIFP?b^h5baAE@~)9`$UkVEaEe7exB<>$4VrYpMFH{%8CCx3>42 zS1!c)-;WnRs{Xgy({-}0tDnD}mwkXo*6Y9RGikTg#nr(DrEb?BzuqA6yu5vWn@{Dt z|Ms)fq}~5%9+S-d5`g|0K;jKj`&szr|NAZ(;Oyb*wB5~b^4s6?Si8~e?^;Og8GybG zQlI&sG`wUM#(_V@0dkD<_y2w_i&5pDvSDT;j021Vj021Vj021V|MCuy>xf_9b^eOq zd;aAO{u6hAjOA8GdmlRocNS0l0Pg?9Gl66q{*JzW+0!i=fwPGI;>z8#sS8Gzrz7C zZ+KC;&9Qq~|8l?IMEX}6_WL|~ALSqY&4Itel7ERNv)9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^ z9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^9AF$^ z9AF&ya~=3^Kgs;xUg6K(A7*Qe1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV z1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV1B?TV z1B?TV1B?TV1B?TV1B?TV1B?Uz9u6>n?)L97&dgr^%R0cEqW`i($8?-=fN_9vfN_9v zfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9v zfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN_9v zfN_9vfN_9vfN_9vfN_9vfN_9vfN_9vfN|h2>j3i$Pk-5=VLHY*z&OA-z&OA-z&OA- zz&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA- zz&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA-z&OA- zz&OA-z&OA-z&OA-@K<$!HGgpIZ+)xa9QRu}N#E7W&)?3&L&d|}!QIK#!%=0mucPBU z2@N#~Ki3_O-cCvqvn1?1T%EnVohH$CYxL*u3z3!}CjAFde!U)p_kQVyR2w#EL?_Eq zN+Vq&I$4Y;jdYLbWHCmC)W-u3B4AlTwVQzY9P%G5rj#}j^@WsX290cw9W0_W3ut6} zWPc1OZ8fEl_=c3WmRgq+nh~X~qckpPjR=C5EH?NL*-vh;kJ{n&(8xYa2H})uN44XD zwjUaK-=5NVQIDlG2WVt-eBdCZxk1A}7Jd*%X2~CF5!l9Ag+nNTRf8s+|m8r&3xBrOD#8C#A(wnjBsakOLFTK}ws6dJQx(hH=oyHsrx0s$D$Q zP666YN=tx7`m6{}P+AhzP6^s^Xymv)LTSpVd!tU4qm-tCx(B5tQ<^F?Pf9yRX=>2O z@lKW$N>fLj96Mw=j*|3Q1302i&Ye>zN&hr~57jP>(q=)kqO{W}N%ytDN=nP2+RcWx zh0@NUB*Qfaw2~76OD;6BU2QNQb#i{@QJN0wizw|PO41iyuo!i+6rm*X^Z=QE$Wlyc z`lv6bv`Z*S|KKmzcZz;_Rnk}WhqqKFh~$F zm(pyYGdBnXzTR6JYMSz)9k z%0a4~9qKZuleuSz((F-}rLyIQ$(H2N96j3*yatCD2SUQrXAAs70MDf>gUe)XOPNh|;z~J4k85D9O6p zKs@SX-kOGz?8kO+l+wgd5}$W~U8s|}Y&xX{p&m?W;waHomYrY+>SU3o+U-JpC#B7x zv|wl=WCbiT&`4iGzzLj#3sDl!$aZ&wH0r#Rr?frLK0sTHQUMzNv4n!fq=H42YPT14 z1Jn&rs!`fL)L&rTB`DRQk^Kz=O_ZidwF`%)gUQ(t4&w%TVeoC}TgIToyj zM&`l!)Vc>zUrT8VC@l_JDm(szWg!*s5bEiaM*JZ@9|q?rZ3#58jd+ktX-lbg3D62C z&4_B32<;-JnNS+J#wnz<<BXg)Z zrKO-A2#qWjly)3-CrVpMX(yn$P}(X=I|)q=J4xoy)s%J$^>;9X%%N*2Efw_wAQl^H-7~0vAuC{6PiYyb_fXmfO3Q?{mC`m+ zS{Ae|)OI&fS~fHRXtpSADJ=(e@_9xUJ4!o?`WVUsdrCV8O@1uepmdDi6hF* zly)BV50vIeX&0z=WS(}Sv^=UE(VQtQA9XVSkcG^(r27Sc9Cu_6b)~e6sK<}T{-Jb( zMs~drs6r!)2i2|!bwx_^q_kpa{FLTJX_ugVM4c?&ly({QK1%aJNrvVMARdtU*N=3`{3MuN?c<76y%M;||Efx@3u@+TBH+%q3(#+D~csD2>cV2Po}6>dz66%rjAx_5k&I zY8%m%Rtc?v(qbsB3R(-bZY-r$Lu;qn9i+4xXeE>uM`;hCeT4^P-a15SkI1?cf1kGw zQ`%!_63`M*lFvEf^AoTT8d(x3?J4TU(8yetNNKgGuc6u{QQ9+TC(su%mmQ(B=csQ- zUs6z#&rPz8I^YJ4EXkDi0(CJAU@FRElva;A7qm2#DU|jS^>Q-MSdLR#1L`5rGEts@ zM&51&Yd{V-1&xel6PQA6H=SCy8CoLF4|0y3rnDB+zoAafi8GYeiuw@hWXYhkHq^=a zLC%RxN^3{`F6!4&W>MNJ)X6zRj^S)d>p-2HGepawv`*9|p^@b*rM*UdEc#IJl zm+R2TSbheq(8#!yQtbv%C-XfSgPWB01$8n;WDLqE?JMfvunp38avex~`38n4?G`k0 z3=IMs%9jeN-4L`NXh-@<<~OqLFd+RSeIjE|`Zq#AJF=|@RJ-q}%TVzuDeVU|SxT#- zv{7hslvYh?KcSKBlDIXLMmDZMwR=cupEyy$qBP_8a*}?4rp7$v4*y0Lk@TPJE9o;C zJF*sb<+q#(Huqc3flPlKfD>>5ZZH|}0A9ccG;vmtAb5Cx(^3^)W1gLpvlZ6v>z1df2CfaKOlF6}rV z`7@F)Bl$6s4OW-oN0J?1xU_J5){Epa;-q-qceb9hnxplpcv$XY>)_& zKpH3j8Q=mS*No(PFa_j*TyPwugVTUq?_C0!;3P-|p1>RUfGxlm_yKWWWrd3`p*+7CZyh;3;?vNUrS(C=w0ym%z6oD$321wpV4on3+KmtgD31A{1IiQE&5g@rAHfUCe zy$&2g-w%U+%u$~}A1FbaQg9QLfpSm*?tsgH3zz~k zU=A$6Hk=RJ!49B-*Ry~YPy^~f6{vt2KnBQxnLr*W07ak#NNy<-><0%x6o>{fAQl`1 zao`X*4B|loNCZjX2sjFo!7-2mj)N26Bsc|9K^pJ|K41&*1%ALEcmWUK2~5EXP=Rs0 z15AM#Fb5W3B`^WYz;ZAFj0dIg;R$#KIso~6ZUf|V>m4B16>mW&cn!$4+kG$q$Y=E% zK(2|%^#Zw$=mX?BAp%5#10V`)1%Y4+5ClR%7<|QC@eK@v1RQ&bAPJCs{ZWt%Nd7$q zki7IOv}*t)@AeW*$GLtBQQ!bL2*^E!Xb=NpK@ivh$bFREfZU5A z_g;bl$<2{m94q4gL`gnqM^KJINpgMP0LdYe?|hEH36Sr4@Oc^LcJD{ zYognr43KLka(z_-VgUJmLcWiX?;qs*0r@^auHngd9`ao%1ndChyWBSL5y$&1^j#fj zk$nIp-!&C9qdzY|9U!@_6wn8Zu-;;@5Ez1`fQJL^@m?c%37!ExXxd;7&-04mE?Sdz5~nw%mhLQ`K z>qMM)nD0&jl4D8(B(IbW&H|E8BKe~WAP?jNk~<=~B9a>_2A9BkY;ObD1W0~}6^M_>;&0aYLa@EHsMlC$~>NS-PX1OSqsvH<453|N6R zz!IzlE5RzT8tlS;xPvWV1$coz)q!?Ez8{e94dlBQ`My#K9)Pc)9F&1*5Cg=3Jy;1Q zV$3FiQJll0cNP1gH?d! z1x4r zeF7vu^$gSj^4;qxxCgY+|2-(fz$f&x4=6!X1}Z=ikUSA9&i4TLYm9a~P;LX=I9J~T zEu1^LfaHJX0Fv`zL;H&;7oZ*ae)RqERB!ANg+5pMXJiz&14IYB$ z-~}Lgnw#JgeD4Q?U z7{$6j24fcRgK=K{Cz*|7_9Phy`w7&<+!Ci1445I&`DE9$R;03&a57-8r zKsVNX4W^J0KX1@-`NEheC82eHQqEU|laUcZ@f` zf;g}ryn)sQW}t2Zlo97Pws{xKKz%7#4r0-U#_nCa0SI9@EAM=B+o^1T;X5{ z`%ZG2azGZ4d)aru1CR>RKri%RFa(@&&h16H2ZRD0pa;4Ec?Lic@5=yLpae948rTB7 z!E3Z>N7(_o0Dapp@wySb03;W92*d-Dzdiy;-Z>fU0>R+dwp*}|_23yG_g2%vDR2^` zf@2^Vko&1iu$}>UfqFe4_e7rqavzl3<5ULZ9wxbGc@?@N*a~(6a({9?umR-0B)NC6 z23P^2EdtuW5M<$aY{Yo^qfa5E1diYZ#%3dqTXJ7+2I$56tSH~1{0Uxzi)dp6$i22w zAOMZzK4%i|FdmKIBkG^Pd+-7L=hyt$M{Y14@PhRq0`0=UFAwHJTM6P3?^k^Kcs$2@ zB zcsB|DPXtAHP5dMJI`GT)U!^Uyjo>lXA@^unKo#bJ0kS>NjykzFA_d63k5#}KoItzd zq&;ba{*ikdyMPA}h35ovAA{Vt-~=~88IZ=f4554v$h`_*jLj6V2IrC>)>Xj%4uF1I z$wBR761GF`QOpCLKmh#2djsGb7zAYfUt@6>uP=dOPymX+uh{f)lE6CRfb0kHjQBYh z`$q09=z#*tBjS@9UVp*<_o9?X*@3bG5S_dx7*VfNQ75@?64#sN%Ps78DA)_Eu;12T zJ!n85j-V~cp|b+AFZ5$q8m|{2wgE5%(PGnKeZ+6DngeBGpYBLP+HAEC$MB&{9gW7dG=EndvZRJ<6;u% z!FumNBDf96JWKMug}@A$f)zj$r~_4?0?=g^gknL6-#+UUQAz?SAP%rQzr7}P(klr- z>e$`i^0wS4VFwF#>9_9+B9zXDk`v$%V8O1DOMu_<`&=l=Iy_WK-Y2hl0m%guo#bDL zE)2+fBo0}hv?1%0ybQ_DkhVl4C3#KOn+in1ub97LO@l_-5XgHZKDkDe24sH;Gr+I? zRG_q(DCL11kOeY;Xym$ptfK^oSH!1Zu}BQ^-mh3{sA~X2K(1-X^^Gpj0dv4?pao_D zvW_-b0?4({TwnkefrWs0G9N4eWIxFM5r2uk7?5j|WxxcG?JNbPZ^pm~kiJ|3)rM_ycW$Hb5(&CC~!k>GReIsTbpI4+H>A zyA#j_=mvBJbU-k`=RyFz681pY6EFb10OlNpjc0#H}#J{gz^%m8Kqvw=AP z<68tQ02Ts^fh9lyunAZXtN~U7D}a^2a$p(I35!i~TV zfbp^1wgW7iZ2;rm3b0HlOaBP~)O5)$1yo+W&u3Kq7+=a~Snerhcj4ZC;1F;C*sc6_ zN4OW*1MCC%TfKKsxjw9frw|?mP5{S&W57w^1@H`b0$c;G0;hp<0OOhuoCVGRw9OTO zaa;y20(|B?z~?RimjH6Sp9rY&FwO_c@B0Y(Jmb6tP_LW7b>IeY8%P4~0C$0Vz+>PM z@DQNBlz$3P_Bo*5<8NL+N(;S#GXU*(1mN1qY5YD390iU52Y?;GN?--B6yP{;F+%FR z2w`W)ab5cw?k577@cR-%mit14?0eLH#~vKlR?{Nn`YOkd>`XX**N0Jxu771x^(a*vdIrQA1N1n7VOfO`YnC#V5<0vdH+H1 z8{qRylkqZ6#-+nORUeLhR9zf#t)`tkO{S3vpo|M-nFgQB0%Qj$p9@H?JLRdbn)iaZ zR-a=!%xeLF`_yXQm?!R6^I68Ha@CP$Vf-!vIN-WC!V*9+peW#sd%T}R;dnpgJyotW zxKaS)EQipY*MJvL4e$f10^Gagz9siDeSwOA58w^(*;+tNK!4$pA;JbgeV`st z7pMc&1{wn_3xeyeO_blw5wbiPS2v&y&>Cn3=L$S%{2M|aX=`*HSHK63J3$j z0V7Z!`R|P|5{Lk3e-pw62%{0k0u0qO7;kdDnJ(AN<85J)O46G^*9JHeWrUDVE;^a0xgEoCSFQ6mSwaqx`;zP~|S*`aD3M&oZQ}dd)c1xZmLVHShu`54-|i z0?F(4b^P`Kt^xM}+Tb2QndiVmAo=qZ@LQEh{``$(&oMqecNe$?+yQO^wApRtUJ^pq z3$>m+z%|Dj&k#NW9s^AGDZ(epHGea1rXPW4|5C20`#XU4{tYk>9{~1^c@dJQ%rD>v z@CEn;{0$TWJ_4VC?|=(rz9IaoTt^@*fqOp@x&f47T+Nh_akl`NUt5enYAN^A;F{&0 z9$`Ab4xk*LbHn`%_)R@|k8x}QlKov3&|52X0a2+Qr-~ccVuJ3TqlY1v40G=o52bch+&od%nKq$cVRmKs7Fc9bn z)PX$Dfz(DwJqrO$i({jLxUK~R;JP|OuEYBRv_nOp2;c$~1}H#Bo*CeEHJ~csg0wmV+!x^f0Pp)L zsELqc<{C=a6(P^OP#>;+xd4TMLO?zsGmr^j-qr#cah(CM2j1fMCdBm$;eCKMy9e9= zt^=2W0Px(0y$Dc#4X_$m0Wi+xz*1lduo#$*=NBTJ5Ab{p?OOo;GYjENU^?&!&v1@5 z8rM9FGYp6a`T}tP^ThEs_iUR1O@X?A>@k1-G{JRapb^jz;9gpNpdP@z-sJni-2ZI> zs3G@=I{_Vm4uC(ved2Zi_l;T4x*#+Ffj}^z1G)ntKmeczx&bQ3d+M{i4gwewe8v~( z1u)JYfcmVp_)>B`@jT;TT%pNi`I~yE&+~VzaxWZV7{IhtSykth`AV(>(~3wT!@L-Q zNPvFX8(|C(t=x-BcHgAj<1@UbPJMs@K!2d00?r+V;(8!31Q-kq0umIkta!~(y*~oi z!+}x2WMCRF6_^N20VV*GfN{VWAOLBMRYE?`=hSD$<2w00UaOpXot$U9l$im{1Lgp8 zfd#-KU>UFqSP8Iw9)|D&po0$Q5uO96&k=;IAME$`;CdIZ6JVU%fo;H6U<^({lGq8FK_@L&$%_h`)7gE zz$xH3Ks}BDM*-&bBya*aqx|MGyuS$YysidR1zhl(d8z_j0;n5xz6M+cD4z&i0Vt>9 z4z6zltS3ppE#M|l7xH%zs`dUQuIZ020NUdT!iNC;=mEg_=wpPBlzYz+J_Viuyyo+j zfH%NvU?K1cNS_92Ap8yd0=@&E0nra5Wd1$^?}2x~U%*79^#LK}zX4x>uK@e%p9s4E zeC`L3+&*mAE8|`|q&XMYOw$(E5?}+^0aNjF3Xm4pX@JSN=6(KV$T;jE$GmXOBnrre z`*{FIzyZhtuusg2a6Lk2giZkcfzNWyB^Sc%Kn{R>P9Qgs7vOoEf&lYd0AX2#>^o{A zRQn&E-{D>+&-;`B>VRvHuqxtig|H>i4EJgv{tojluF1okeA&=pXhBhT}o>X@k*;^3GmH^Mpq=f9i_ z)dFe)v=dPgGCWJcb4uzti>}a>?P3_fKA;}BhCnc`TOjO#us*^7gmn?t0h$8_{O$&@ zO>TzYfe3X#Q(T82Y=n?|hUaaWt^%W%&&T1wTT+9HCgIH`_aDY^QunFGvi}^)$(CF97ngt zJ^C-twzUD;0sepva0efNuq(iGJDq_}O4tpdnxCGyHUK?S!ddt|5QxR^rU+vYMgx5S zK0g#-z2>t6aJ?MYOM(8lW?9hx80R4T9tg0_KMus>dJ$w25T3yAzPOGDhT!*LU>Fbt zsQJl+XVg4|;y&vd$LzInpJRCDy*Mx%;23`vFaj6}F#VYb+3uHx+-O{nQhu+%y&1Tk z4$#M^AY?t51n^k|qMu-0pNJn5fU&?BfI5sv=!%ffj>EMJLOxqg3Hgi>@lFP}65&*Y ze3s8l!!<)Sog&J8ED=j~0A=Un8J0cI^vng4+k|-yz%z3Ys&=An=qG%RHsCX~!*GCh zF#-R^+~)$~NkH1|f#bM71?&en@7jlO2e2L325bd31HIw%OAwyHGn)`@1ghhjecftY zZvd78i-AP|pX2i@fpq|%Sq3ZwRsc+EIl|76Uxkp*WyQ6F0{*7otp(Nq)RjKQdj##f z9wEm{!*RU@*G!Xo>;?7!yMbN6PT&-tdjy_&W7^F3G2ke07&r(V01g31fD-^Y{^oNh z0m_^Mc>g?b7B~aYcBcXId|rKyJURYOnU4Al@AJ8fKmzn4nAa=#&9TH~gd9h)EZApn z0N4?qIcy+XcIpxWyro?&^N0%$Al$*FsZjPEG033!j^ zJ^;BOn-j(Y0ggaczyaXdzRW--AR}N8P^SRIMPFxsl^*w~*B|^&hcFHB z6W7$6Wo?JwX@T$f{RyDVSA=W_z5t(rZvbU}01qLjPRpK+`4{sL!<-zulJ zVf<|aFdmho9?5yelL25l|Lu@z(x=$I7KIKhH`<782+NLsL4RPmu|DyP7=0`c!Vw7h z?uc4P4#Sp(@tbn04C?^pc)n~ec%BF6*(VpE2*CXEoLq6B1W*j%Jce@`-lKjjOJ0`* z=rc#v}pMgM1+o~M%*c@OUMO%iD@5eL)ngUIL z#y}&WAcR@)2Otq1NI0Jhyn0mhe7R<&;!I5oZGZ6C`c z3Y-Zr0=)sX-C(<_wnuDJj{=e4>5JC^wLf7TOou#e$u_AEK;Mo9)H0_WeJc+4*k19P zU^Kd$=$eU*E>uX5CxHlyD#o&uo3s85Y7X*PBR_YfO}j! zjNKczGDW zd<6izA+rnE59|b10=&NuA;t)dS`yfJ92d2LR2*7q&&0&p21Hwby;y^8?HiW*XG>FSn;^*AqHLg{gGhf`3{EU$6A)gTb4SWPX0IDtDFyOboeFZ!=0`O zaY8AK9{sk$sYPeAOLm3#WU4I}W%bpore$<0HY)XD^=%BmsDYGms>2aIP0H~c5gtYrZcb^TP@$?r;j z0OKJDvFcnH%*nIoU*>Jm)eVfVn>S^+#}0o>2)S8(b6Z#6CuT-(3N?hIiQLsDq2C6_ zm0!Uq8gx>0TTncqT-jmzKrr5J;4o?e!~7gJE!=s%dXp>W*kZsqgDLuBTcM%D?1F7= zy1IM0c|(KIV3?mtbb*FQ&q}aI;nR*DbIUJz4aU>W9U@Y2M3g=} z1|y(NohJ|Mcl9k}^KnCb;_MUcm-cY`_mxI8ZAZqhcT>O#m5F z51m_2xY%m%vG-ej)Grn?UT(hVQLU%rr4gG4W4o+quyRAQn+bX6yg+R3ZqN>~nRG^@ zu8)-c?tlYVf+{&Fx_SRoY&lTR>G@Y)#@=|8xA_JUo3M@v483>j^i}z9U+y-{%nSfS z8x(KqvhZm2+t~#p%4awjmfY&A{;Q9V**IJLn`uO*qHqnr$Yw0 zfm4au3}cIobjW$Ps^@PdHdwTKL}V}=Mfz2}<*A)LX3P?duxJ-(z*^rr$l+Sqxm|ZC zG9L06i@uY7?xeFthdgDODh{Vd>zWzN<_+nlB)ZodV@{_x7{=yS^@#rY=+?4dvjU5i zaO)PWfo3olWL&bmU;Hgyftlvmv`axdKiV?ukPh3OIkQgZ?H#r=lSl`Cg%zjtaxKYp z^Y3Z?+cWhRj0Y>7hHjAI+lh?r^#;F1&fD6S5;DR=v~}yDGeyLPW5iK?Ooma7?q7rq z>l|X!*1C=2A(myj8H`2wh`OzvQ>*0z@5L&Rysl=@equt_1f0a)<8o>I~_1qZSCQPy1@6EvO~9bJ4Q~NW&gxi=;lF-jt0Y){A&J# zw_9&Lx>U&zWVCIqt+loWR!du0XFfE@4Gk7M%-j_{Zch!xZqQA`qW@?EZLPI6;M@P~ z+4sb~YPA(-N_<)}MJ}=U=nL0UyNX zfffm^nAINRpW1kMqGcN&&vpk|TWS!``hzaeGM#vDlI4}NwQGNM(EiU140Y3)`h*AdGDMwUr}tRmx_>m73K+tI z*$Nrf`sT4^7IyLnO0^?9)`pbO%TKhu=UO*Y`9`Gt;I2J2!Gi65CGrGSO z8FvpU%n+t`4Gxr!99#PS*YRcH9QS$)57BNDHQH+*dF7T`TaI_Mb$fy;PwP0x#pf%w z@cvw-JwSfaU|2`*UAM2>n*ntfEE9IC>Cj1CFW8?pYCwX`!3& zc!OTAujuV14Q(6!yH%k&Uj-xTsby_+cVmsim>fei_Gamu^^1)x{kE2^4W?#3tUoE| zW@d(`hzdhSozIz>mx!$xm{kStoV>cZ?q@TTaz5v1;d(rNc`<0^c=bB_RP6=q!{nWF3&$-WCZiF)$vm|^viof##^43=uN$&^~OHZHP27a zvur7)2LmT%I(k!dlp)k4#g)0Aum8cL@ZSGvLk!`;uF;W_!&8Gp-fb;SA~v~IHo0~W zjR=%thlV_LYaZ>rzrH~g4YgWe*E`2L)`+Q7}%?HYrRG4aAZTBYrWq%J0Y7e#c0>e6&=j5ae zcZO|T1BTXt4QeY)4#!P<`c4R!`%}@1wF2V^8GZbVSYw9=D};=wC4ma#5xV8$=?gtL zLq=6#nHs@3LB`aiSKENvgNK2kgP<-91%rkx;o15=liEM*&AROc4*@d+3`Y)kUGg|( z^mDKkG9DamtWlW1Zxzk4Xw@T*(ij_Ta6n(04i@f+do|A121P&k}F%>A(h|`j~KXp7zC?Hf+*K?N1S%whhJ>mNnRNYT)Er-PaZu zr69a&y2AKQcb)2T#0ljSFE>?^woHJF9NUS~-4bFSgk(i*O6$@~-$yj0zn>TR`%6>~ zt`czZ3w1jrR2LPc50)-1yqCCsd!f}}&{n!tLcJ~`w;^Gr3kI&98i)}w2Q{>g^;Vgc z?mumN86O)&9okX1{X5-id6c?L8^~&Fx60F?8{3_`+t*|bYPD>kqBWH3X>#qO!*Fc; z%`sWOEm_Oj$N?l64c|e@EkbPB5nJ6YEzOQa)e@M$n?-`2SJFaAF4Pcbm8S@4}a=os0?zsg)VPo}}e z+5afxL|ssXkxv`=Ta5s46NcWoAyTaWrwKe{L||7~P@`u~HkA7Aa+H zjy3}k3+Ia(?I`k-wuJn|(CUf#8eKeDAL%fs(7GTPwr@8_miS$*)5r{9lr|BgTUQQm zOJ+$p-ns1P;b5o%bc>7*?-LXetS?s4m&|%gZx}V zY;1RGD$ConBry%V^j7 zV7)%l)nJlt7Cl#dXoJ^WjeursmAjXd?RL=N*{b?mg6UOUZN;p>vUL$<3f;6@u}H+` zi2TIu`c%=bazpmP^bqvUOI+oaqFu`~&2)}iSqdD(BDVDkQ@?-qMS)#KAFQ-Uk*@fI zlDa7U^`ceN59>36zQYw~$bd0~8KR_5U0RI&Wjb933~LFzYKfbiPWctp4n7?gNQ*M3 zkg;0Yf*D<2mT6Z0@ZvnDk2pg{o={5Dz_5+4dn736T*;3{FqnlhHp~}X(JpqMa=XXw zEdEKSg^bXx3s~0ez~06DYGlgl3r1-V)`Fq$T=HLivEknfo`{)*7(H2S6Gg9S(uc)x z?4P6IlXh7q7keZ$sK}DD(pI^{1TaDicq7yCjN0RTDQC%VkRgFyvm+R`iRW`PsJZm- zp3jADY?P%CFc`umOiF5Kv-wiM2=kac9!w!Hwzr4(pE=4CV_0?UKMxGLlLV(LM;~_U zR0!>;%IpV&1~Z{#@SGK6dhJJFqB7d!cx@Y4>c*WRPCqO)P#NuXv>7X{rQ&av8ffRI znjf}4&~1hU8&Gc84X*F|Xyc_vO<-#uc~3 zfB(W=y{wE-s2e=q$~c6vfw9sza`c3{t?dWeV`c3*pw_6eX(aWfegReZc+*vkiaOMq#yP-WmUii-iOkv2Btv`Nh z{>DD?tPQhjPfzW1EcdF_be14C&iFq!th}<;xhiAL8mw0|=ymJkjWNHvV}(hTsew^G zWoG}CaAdx54_C4j-L%uuW-K+Rs>JpO>Cif>wm9uPbfHLySp)6Z=2n(VVO7VLqq03& z)BFF8j6N<>9~6aAbUE)dxn2%$jr=Gl6AD+6`)$Yh!={`bbUBNeiBy<*as5L42lQ`- zSq^%7wxd=?4$9clh)vok47n!c=%U-Tdv;OU%~vcryH}OZ9~7Erd*91x>oYKD``HQa z0z(^I^Q|2*w9%*pkq*WVSj7QDe@l89yxXf|ON^eNff$F}RAd%^OWZX-X)EjoM##KU z(n;{&mr#E73HYeW`~*WE{km-5m%bi#IBQd6?EGY=Z~tn(i@&!|V`dtHp&xwcUGQiB z&3RXu8SV11y8b415rPb^hVYOGyg`=fXV2H`9bf~_3Xsz_N;pjh<+|hHD#Y*?cZ6O6!?7ji!P+@(3K@>8W_UNff6_M#)`+`u?F;o(+Xho1lN~avUnH1(@0G`% zt6Jx(;eZooV!!5999XV(`LbrlQfpO4TesRZq!EyR`)vAqgA zI>-N6%QJ|LBO$h-7Ij&Kmkj56PDg4pQscb2xzyezmh%T)0Y zD=Twk;JtxHU69@+Ne7*8q}zSuSs^7h8OShVUc`xJ>y5KfiWz{vc$82F2^h%=49_vtGNFj%&oU0d#W% zL+hAEHTb=CS+V|LkP2h-1;f$$(-wWxG;KR;hltGsW1fF#ceKlANL^WjqG8{<4X@d# ztGT7nE`<}2;rhY8aZT!M%onxO?4#N(pSA|t>1fBcww_$t`&WCdZF^!vU7QNTY>I~4 z0fs)hcyaWS^rN=7GBc;ZaQ5yHw{2kh$WuXPCgu153}%!l)`}TzwL+`SWp|AuBWuuFiEX-LLQT&u>si|9&)q!SB|R9{ zteFFE$NoqPSqX-<5v_le$yKN~8*D~DP)~{4rc?WcVPLX>QO|;!nT=p*QS~gSnHi?&HahzGIK!>6 z7&*uu;w4Q{n0oQ08rDnr+>#6wKxr>hnA0<|U#m2$=QuDd9}k?|1;f7abUlq2Ra?r|Qg|ZfjbP}#cZ$1xt?(d#D?ftqlCCMt`rLzt6uJ`oKe~BK zPr>AdOzw_Vx7;&MPnOPaMW*2Gn4tc4S1~?7T@a%uhX!&De)MqR^PSs2aV5B-y!%oB z3|Da;-<&q=%KQcQ!FaHdcNcGi)1vBmShL-<&yVInt!HfNsaM7(dtw=+!<>G*v+wAe z?lbR!VXKU>Wo1Q!uOkAN{Pr921B_Tx^|F4>0ks?bPjqN#Sa0m$ZJGV4;{C;3rS^97 z;g(u`#73<%JZtwjN7$>zA~yIH-jo2tRxD)5=76V;^CJX<)pbwF%4(ice+<|O4aRz6 z)ftbUTx?J{r%1<_rQOpI7753~-xRqschKSpCot~V(}Qk3O}&j|#&_9$@@=uH*#!e1 z!G1|Zc=w11livID=N*R(MYs>hmIARw>P)7{2xHWmKRa_S9Pm67mtsS46%Xuy8^%b<)Gt2@?&*6~VvZF&B{U9>IM&efZLXv)`U(jn|1{m3|^qE0Y@5<9Vy^Y zLE8@7PwUB`fN&>5&W^O@+oEra1FB(EgTfJ~_JjbQNT0UhfSu#3!fr4$rbhBNDVbCC z%(gRZKx2DJ`=A?{9;WqwzGq!yz`B@H+9$xU9lhx7+@{0rztgKS9#*u5CknMKZ2(3X z!O{k*_x>lghK$%*wQVHV`W2(z=u7BI)wi`#Tt~_ZhFX_PsuZYyS(7_z$_elSVAyL; z$auSAmaw?;f?;`!FLu%f|EG0Wfwa$U7#qti?DfiJ%Eh0pHdCxPi`9KgnRrEOZ5c}& zKn69{n!l;BrR>er^6`@TMu_Sox%xbMRlm-_L(Vouo5*ccN)N$V5BLlJeZmuLt9}i7 zQOj>`&N-|l^3VbEdZXTCl3W`duiM)#qM)Nq+NSb6t~VVN|8m6*2??9`@f>V`)}M9@ z*30Ljy~b~>wbwTkV`ZgLmh@4&?v&ZnJx|aXn_bvn5cy&2q7N5p`<#1TdBytYzret; zX@nRZj)35wxjyP`_rjP0o5p0qkU&=Od zy-&9{W(`<pMI z820t$PG5b!?qc@3LIaL(rAUQ2RsGi4{UhgW6^xhz_EVUqv-VeflyU5Ob2`Hn#<#A1 zabTKUodkmswzZRsT#x}FO;TjqJ$UQ2uAbX8xve5I7YzH7d;uRP4egY(g`xq*d@B{E zXQ%QV_gzVgeOi>Mn6+(Hm~_uw&Nj`Md6Qs7LI)LQPXBUtPmX+fAQ-&);US#`lLhGv zZEhc4b;zua)ByiMgPUO39%PE?KJeuSU#|eE#jP3FUeX#0p zmKGKD6dAHSl`I%|h@~f@E(jxN+u&tOxn|uNdwf!+%;{YfA4PtwmA075SlO3RTg&M1 zNCSo;()bRqX2q3qMe7d@gwTK7ilwrAv`Zm1y-Z-AC@vOBD^GeKZMyqu81ln&0nkm` zN40HW>7#1-Xt(}GU94+hL~x%tug>uaJBkm61{fW%(tTLsPdM>SeljL93cl|AHJmLl77)L8h=)~2d*N838uHb{-umS>M)1C)Z7z{ zx7RTjCN65yJdrETieKjh;|Q4&UyUOhrt6SSVNiccfN=)%B1=$FnXRSR zRFpJ4#M4Wf&_S*xM!Q~5pVyf9m9hDVJ}U}urUt@O>MgjldU38jV7k();32&`DRY^X zC4*wU=O%JifQnVgN9qTLquZi4Z!a3PE}fs4Gr9Rf<|G*I2)wB>{zys3p!aDxn-a`J zFx#X682-?!8|g`}5Z3k`=C)nS7mPX6(~KT~>J)o@Hiy!4!l{hEj%x zX&3E0VrJSYOtu^`!7KX52b-BFFgzd9w*IPSwG9^t^ErCTX`yWw0s98Og=|{d5i=Hj`QW1Wj&NZ!`#SteYcOxB+ zZX;Yjj(TYkijsmIa^nM8%@o9AhD&kXr78WgLOXnP+i zOzBx0OPBYxsbbdP0~kld*2C_{0-qPrYs@mXa5ge)vWyu#;z4`P8>s>MZ6`2nDHdMZ z9eK$ie7wT=FsFzP|Js!p{j$t3-5oH>2;XuvsIGcwGe*pdIJOMWRle%Cou7PIe^5ZM z=rAz!-k9o>`&RqbA}!Jpl(kW(nogt+a}Vg2CzDSHX~#tu)&<0dJC@^kH8#uAc6W<& z<3dC)9S-$};cE?_9S%P9+mAEOJiv-Vkk_8@e#zDJ`5)V_dN>IEoV*+&h4I)Po~SUq zV^pPWRnYcwQCVb}{7}o8^8SMNV zx;Kb5%a|g9dQpj;rgJ&-#1PSzkTcTt#crQd20n2Z!H+k8?)s(HY4{%-)qdN zd<1Vhm~3Dc7ke?$(=%UVGV&^0CKL|SDRJ1&=Jc}%@OX8VAj;^4{9*+);;n#Y}IwL9W3O+m7Jb!I&QH{t?x9nc?#6z-I{WyfFc<4wt@6C*w1H;k4;aQ4+q0Qr=cCCll9lIvmb`%hDBATf+Dm3 z(aAbeTu4td;|GSe{+6Zh%>##z<}owP6z0tGs_SnZUIb56W9tScJ7lhQ={R!Bnvn&} zj1dfNUELQe5gidA0PJU@$T#+GjkCPb#sZ|=J+FHbhw#$1cn-H|I)f-w_K4$%*+=h zo!eorE?sprZZR|Vp|S=gsw`e!X{`%dBvtD?3X|CV{nCNu4I9l&88Ea#T-p(eKo{P}HBe{L@3qO9 zaoQJsM$uM@Hc`8LwA0bH=q2=JZ0ilDwwBmD^B3kNs$Xlzrd@LP5F5RB_mhZf>F(dc zDyV3C(UQMZm_~~{a=L7;5e0^$L9Cd40>jnG%;{Gy?&@`XCvz(I&z5UKXvD=otnNfb z^zxJ*wm4;9=HT=;kimi-M^A4dc2QvRA)VMkb*Gh{GL;(0 z9g}3`jd(A4f59_S?lp_p7O6aObJ{&-8SQsG^)dQzEcZ(H(l4)7*Y@24AtOcsk;Vv| zHZe)tYUOowO4@r83z~fUBn|3J#hDEy4dp$1gDRScK zpKXc_D*aPB+I{`M+a_waV*joUw9_$!>ALG(drJ|w3$;pbyoo(mF>6CD(UwVhP6#b5 zHj_9t($+dPeU|oUP}@ff#>(Rzsnf(w3-{lTP)Zx4@d{u#s+kZu;_RHZ*|F{->H?VB zVAzKE8z;27UOOGeJ7Cah;G1kpY$uA%EnKm$?=8WIcgM7?^9?c_S4}uDaec>xeKnPI zU{R}k?`YvLGfKtYyS5Fq>w>n{+Ohq&Wd2>PweypjbhQ2Y-)$+hZLO_=b}jjDwN=`- zPECHa%SYP=+8T5>gv1(kkZQx^>i4atVuh!G0caU#OHgTx!1zqi${KDQ%gMsnX+ zLDFs$wPpTYTVL!i&vMS^KbSFY-ozy6#`kH_QdsGOm8G9?1LV=u%{-p&88b}4Sr2{! z0*$gX9}L^KJ*~!EGk%8* z6Z>WU<5#fxPOhaX=LYwI;aoHSwVz29+i!yg7>|l{E`Z4lCX+*v@f~Znb`TnfF<+9x zOL3QC}Vjlj4HFVR}GPK>T#ykjX`w{ z9kG7R`2vQH-b3Ye^6%3dRLOR9Io3lsB_qXj?v@@-Ezn-&}p=jTorc+U2@@#ZocXadb!Di;tNVybxeCwZ(wz}{)W%W2Uer?sO{udwBt_#|A&U!sX z@krYBN4qYBM#qW8+dL<~?rg4`!?jy3EW;5jM`>k{2LEX@J4efNrZgKuoMVemWnJJ1 zA0we-U<#n*7R>VbwDfAJy{rrJ2E#)zoP~~fc+i+8e-!qR#W`+Zd zDLrN63B%Yi@*I8e+&?oz()f2EBR69yHE_iFDkP78S0Kaj+oH`i&)q9~3hR7oI#0o{ z20O;}-n6`KA)M?HyDxB_&kAGAR()Qs&0WOU9}NXEly0oNUKO!8gXe+fYwRII)!_2l zy5)xq+k>7t22M0?FE|%6${vd=7`9azj%-_>)cNrlB{tX~*El(y$u{Mi^nCZCAQ-%n z!p2HFowVcSbdHxgUouBjkX`KVH<$`XWI~q+GclGLUXuzrk-O7QX-EOt= z&be&KRGf_fBlg}k^7D_@(U#FJ1#KH>#0IUkJw!V;ZJE%BVDb9R!G|$^^C~qOoLzLc#Z7|7w-<@XD&UO?#52C5E za{5fQXt_yptv56&wQj@nzL?K(5P;@QstzV6v_C)7*e!kW)z~-V!jI^)z&L?>bnSFlytN$ z`tRD!a-|Um8sVmvXX?#dz?vKe|xU0y>&;eNO(S=M1KMsVE>Ym&A^Av4$GG54tHvzOYn1OWI zm(<(hf8~yIc4s9W*iCzFFg0tC_ETjKnf9eflgX>6aSf6UIdZD;?iiVfa8pF6PP$!v zz`Sq64q+FY<6gEDhY(vvXg%@svW2?~q`_G!F#M2!WM%hKSvl2*;|n*2@a{v$O>1+1 z*rZ+XYqUGmz;cf=o?Rn)O)GnpN{?aL?p&NMmzbqjJp|(jZMD71vi^L44961MUo;9b z%6rvKo%)_{F@F{zLdUuMXTo+H?*vEfR?@#Qg}_9kYJ{Pl52%IO=HuMW)rL zYwHX8H{u9V-L0@V0S*ns3Gg_4ral<<^SUwN?&mA@iVGRhnS>d_@s%A@)T}#Gx3?Vr zRGy=Y_MqKtdF(&*&$jtLa_7L#s+u3m^P{LG!mq9DiqNk;aH1Wtv1Uaa9tg>ER*Zgb>Pho(ru-ZL~bQuYTpgnnme< z|K#y0-&%6C={#3H0b}VQYF)7ODwRq3c9f&d4kb3L{etii`+0H;d)ueM`qgXtp-g!o z${k*1c~*)HnjI@OI3HpufpQszkUMI1jcp1o_pgGMuZ*z3Kh0$<|M~&Pbxg=+zU+6^A}1Z8}g&Rk!b%vZ-1toYvPSjG-7lStv6FG-!n45W!fiP zF7`9WcYkhLV*}RK)s+(T7=p@ttjP72Gg@MGMYKEcw_rmER{8LEZsKAR$2A$1S1?=v z#Ct4OzGo*!Pi+>;?Sac)=V#5IR$mAiEUr+dtHKx>_sUUzGQW_4x-FOsnB4<~MA z@bPb2USXg?3>Zgx??b<1d*?pFX)VznRK%Hjg^8cAQEwr|k-G#Jj_^Y~@7^-14{ ztunq!z&8FF7}l&|olgb~YLXGBwW|5?P`!7BcM3DLTdwMXx3knWGb!Jw;v8N4xdMxo z1@n7TEf&dVrTVTCXJGZ|H#G{4}6pP^KcI+H#MDT6^Ma=U_M*_?AuI z>$lfAoKS&vP(Jw1wzZPOGFJu3%2&Iwk4|RdGPx~z@#IxH@8eZ>+KZV4OdxFs!}Fst zt&6N}U3W}z_!~9w#ouxQQwq$*;#1t3-0STNhUJ4j{$F4UgBhD`LivGy(TR!-qARdm zj_vu>!I#ptyYyAa2oI?WhNZCm^nl}I8|*!#$e?_*>rV&BuuOj+z1n`VwD2Kh*waEL z42%<);DJ*XemrV_2aNK4*nwa&f$<;w>*oE_Ug2Q4s*8h=qrsqaN_e%mdcENzHu5jr zh#8A}1#9(`Lr71KRB_4-eb>NYNB!D8t)a$-x7SkqeHq3kH?epPOwUo0V<(qh!zy-q z4F)|u2NgYZ#^4^hC~4S|h|M#n*UtzB3yo}+rz<%f*kohiiYxcpFgDt{g0vb;HfTL6 zx66+y8D{XW@6dbk^#QFm#6#Kx8TxhH<$VuI>3ZFU3_pH@T9VRx!6-|#Dc_m}Bi@?z zl#U`c`e^HP4O--heG5jmtwY+6dz-gIv%0o6oNA&u;A#XuuWwG~ z23|$2_ky8r_UTVgSzqb2Tnb_wVkI4vDg6NNq!@y9q0*}0ZF8pF3fd^r5jJSQN^br0 zSEv&m;ZyDl7!U%l5M`p(iOtjZv z9KkrkZfB1?T=e+NTJD=EXWgyFCi=#R@E|?w+{ul#X3dP#v2RpPD&YfBp@!}~qH-)N zclg!Ai;02}^~Z8n02dJd4(FEJo&Vzt=|X1fdbv#Po=x)!pSeD>5*xHW0ESv0JM(f| ze77dO&5X8g+|=Y*>Z5aSo-f%y<_E^GiU!(DPn`1(F@)+HA6a?T_kPS>q@&o{>KBc~ zdtjwE%C`P_y^(F*Hs|T1uo_Dtr3`kHIMc%%urUoktb8ySH?! zcXDiO->kH-9KS&(92&5t=>3 z1`0sADN1bVM?CD7)bNd?h>iWT6ln-S`uJ*h{$ zy*D#IY{`+I^Z2}oAa0M|xZ&#Oj5Ru>g z9!G;%vIAqed#U!@fe~@~aL5#R^x#Ftv&Qj=jr{_0YPF{oJw}Lp^h>&B_oG&xZMESc zxGnw$pCLjV3X|%zs=Fd&SB(I{hxFWP%~}0K$9G&=U~37jwLHY#-Aei3l`eX3ba=2K$bi4G zdN!oGy@!1@*#=NT(glaP_BBLG2bZ=!(P6b;SuiYZcOS{hm+ln54$=Gz5cnuSL}-j& zD&@ZHLcZtG=;vTJu`U+W178IQ#%$~0=q~xHm*-qYu>lVZ7>s&jp>;9S1H686MFzt< zYHg)9a=hb?zhq$X_9tYZHD&)4~vC{ z?g~@?)BTu2PdgSAHt^&$N8`(5&`sk@#qh++O03-?o>thr`Yt?#{>DA_dJ0oHWVLBZ z$*w)YD7{Q8Fx;`RyWZF)YOyzGhf3e51LFwhT-({D4)naly*8Yfqjh>K%)}(e-1mQd zZ~I}g;TkzmRrotRD^`i^xC zIcR2ffI)Hzb@v}z{_;StL^JaY3|uH-VNiST!+X}JF*CWh%1p%RfVx@Qtb1%`8iGN3 z31`M;$v&*}&R1rp9~e(CkDq>eUfj2AZ!=^06&H3)Xke{=$wo9tR=7@iY1zIr7TvRqepgL)yQrdE#`5{n)uv{VfhmQ7~z$+4L;h>2?}3Ge=>LUCEfK zQ2M=CHB@ExgDD1?SD~${9@$g{yQC`f5KM6}2WDR{vF^L$Y%`<1Mx1lM+?zdqy*uy0 z!oMyF?-k?gSzvM^wmm;9AD$LEX%iT4d8K3n7!2+bf=aYK-FVb)u9GXw2{6uJisuZo z>;CXS4l|Ra$joiC=<=zB4L6&ak6^MxX1Jke_DnUmH8V5m4#?@4{F{~uFCkWOlynM$ zVLf%uJh@o<%W=r5s(~k%JYdeh?mRtutu04FicAwQ%+Imxe&rkITT{!-q(*CP4N_wr z?brgt#h;&(3clHYc}qR2h% zavw4*pC`Wy-p#P$3eSi9fAF3E|NS5}WttkT2OO6Btm9ALkNBN5`l8ux+9ju5+Ac@r zmAN*Xs>F}pGI^>ww$$WDJ00yh_wS}N8~Nd!sdJavgBoUUcg36^Z4EX-hAXFGxvIvE z9Qd5=o8pOQ!8m~_=sf40Ytry|Go$UjsVN0*-LzXI?V6Pui)y#Msqsf;&o}W;fxIaf|(doU=^na+t|Z%f@6Pm z4R#bGe6iAKxwe6kw-^nkKPLBC7iRVH>oNNK2;_(3L<~`^Xn;{X7Ju+P;s~P-ySvYO zcx8;-gm~1!~ z5KjgJQLA6NbSWmdo$ z7}Bve?&W;N`nXq20j=bRTRGItatup`v1v0_^CQ-tEM;IF5uLV-Ra*-g?btS)mRDEo zN7YV$Z^>dm*iD&L?*_varX8+nmSw$g1Y>1&hHTXjus7vt<;)!Ff>@`p{0g5uugCg< zF}fSqBRV$CUN2W~`~1SI#CP+4oRM{Fy|B7|_=5sitHGi!7ciuBXJvn@J77w+r9OrO zX2uB&wYI-zch9T-kRE2HkiwLm?%8@mKrXamYHa1eaJD<;dnKRfn1~Z*rV5yBV3r1V z8?d-Z1m8$h&Ldf_)u8f&YI2(IoSakp z`?puE3yrI9&gs9afp%=E(KU~)dsdyq7{C$jIo?i&)V?PIXOt>uj!R|Xf;|p%>jrLlt^&>PH19Wxa}H=JEbE+D4MgdmV6O}XQR(4Xj-iuP$kSLc=#OE>>`)^;zSvCKz70Oh@Ltuklkl|{$ zZQm^0M;CF77NsCGI0_~+7{BfpgZq!@SquzzB>2ZAFM{Fv*rNEPO0@?Vu_6Ooi@i`Q z`)1r7>?*VLV3bk7 z3dqnpxeM0nRAf+TYQX(%#Aan5P>IdTo~u&Y3$M%h>An1p6jL$}dKs>DGBzuJU5x!H zEm}}61sbEv#CYn4*zgsKFkMtokFU|+hPHh*8To;XSUI(955S1p zcpu9?^d0kGBaWvhBAu@{WZmjy-MAuZ+{Mv|O|ee8n=;csU6(n2WBFIZg>J}ch)MpQ z!p@07|yEKM!0VceH%0%jADaw zcjWrh_R8yGeIpz@fKg6oX!J5DQ|+8;%UIc!SL%<|*hDSS-Vgql_NrOyQF7XQ)s{PI zqHlx^v}?W97D@D3NAAkDcCR|?x9z#9k|>2ju+Qa{^jAIFO?37D(9czd411<6 zU9&sa8(w0Vyk7!?N>=vT6uViS(~6e79%AD<`Q(f7ffuV~%_XcO#(b7@Kv)zt6}_{f zb@xL>r^O^C@*I~^3RY&-O8;Y317RM^H59Rgg7MDUM{>#aE&bPvi!M7cf@JY9r)eL{ zt>xC*OQ()9`eTnpWwc|{wwsmFpwjXg^%$q&kBN3I?wK{u)JaE0PWeG`$?b{kJ4Jp4 zx(wXj_?==mC}+8c47-U!)ddC`^)Yy}_x#HtAEuXiBWoSUk~8%Q4?>u8XRCEZ*4)Gw zX7K$){Km*cNoVKV;wPuPw>OaS6`bA_X~Y}*(vc~<*6C`d#aRNJMHP&d{D}6=Tl$LF z*iyLO%l+Z@HJhQ(S}7mPk*cSnf#qpB9>k<};SrHy^t3BueBCl(DrqvNE=0e+r9Q`TNckLamRDFb4D7PwR}?y&Gn~6Jjm}?Z4G*W&EZ%kCpOa5#XPt zt%cp7o0T_q7+Xcy`MGTCDeYF+G+1VXlgw)CqVaYI`ubmx;R;}v>$f82*0Di5icx^@ zH;tXUf3!im7jkU*uJx_ZzK>Tq@!mV?F#bl!|K+n^9{kg}X#KTMc;zcCTPNAy23J1% zt2g1hPN60#uFU;>{SO|M&r>KPu9O}R>xlKlGr8s13dc0sXmoDG@tZg)iyF0GX4D-| zj5-k)y-F7rtjEkvKfB=g9cwO@m?8h&7Y-E17M5kUoEkW}R`<2ojYY|c*3$B?c_TJ) zpwIHJc|%6LbunFu&3C%%RF@-8rw|)kOSB=Df6ZGk(9QDi|6r^vT4inBwA0a+u`<_W zrv*>cI;G>`Zl!fW8SvDE_Fwd~^7oKAlYsYz>5bj>u*KiYo#xt34w)!wu&^7}C|sGA z>FBYfGt>U!oQb+Yrr8_WuidLJE#7}fw!8`h4cdd@c&B6et65*9>413&#;_utK!rK~ zcwgkq@t@FI!goaLlJW$&`5l{wka0w8Q})Y6vE%ES_f9Z--W9w`>5q#Tny2fqIyG`RGB-`^xb3gf@;k*SY{?%C#}p&dm!98r$>tS8hT9lc@}o>k zq(_k9jHODU23`A3Zq!)Fh!c25eKbD0+egY;tZtj?)5>)gjF^Gld?%OO`rCV6yO_$c z?8Osa5g}5E zxLlbE<-N=HKv_SqGFn&8TWX&|{14BMiq=K@{AdroI7}xkKQysIbHAse-6<^EBph^y zcVpMaqwc{BOZ78FPKEbg{3w@pl4n$1^Su zZ|mn1g(q4)jVexF>Ea9#CdBHy@z=x?r)GT-8i*Ap&%b32?gUTT5*VLWKCLCj@j(%x z;?2++6C30%)k}}oQr*X}GUij%PWhe$((#tJZ2XXpGxGE9ZLhhrb*pnLHh{-#wMgz> zEg{3Pe}-wFoT|)fd|8o!d90slWC0oVy21<+NZTNc75U3R#wnyYiOYTMlZ&_5wYR;yC2oZWEj=x{zXwf zqCF6^k6wnT^Xv2;OI-J}*W?*m__gKVUl6^fr?-{AT7()bymu@7fc--A*fI;eFKzg( zYX7GU(WqOY|4BAZM+fh z|4aUH`V0FS6g|L^9a>meJIL5aOj)YTdeh``?hamNhV4NJd~R{CQ#Z@UcMlM{34hyP zRIc@}zXsmvmfapQYR^=6lbj#(d4J`wiDY>;LS-z^p{R`I$vBny`Cay%bGiBj zbL=6jjO7^_m9acmqcWB!h*V|_(%~v-`r=7VrdDyEY);4W#EmLrd9Frf79%!HKoZu* z9UY#lLHWw&*ep-ns4}}1nLky^Jz3MoAA1rib6H{bXB)rDV}95TGh=xcN0qTWaicOX z5nDd!)>&GW_1m`zI0>UNmS?3@#_|lH%2=K;QyEJcv z9m|@f>XsTmu&mo^Y}z@s>=#rS?efv~Yi+HyHPDXDvOQ3BOHF%V+5f1q{ky(n*^;a2 zq{h~ky^I>0w%xQ_7t4`@8k@F{YL}^Yi)1+tQPT;;nztuLk}kLN>oTYB8qN8fSTwZq zUK@t-qK*Gg_Dkfy8|xuij-FHv{#~z1P3xlVA*rcz+NF>h-BQy7rp9;v|1SmY+NeD~ zupIBGUX>cVrKSdJ_ZZrKpxrNMdq`@0)Y>n$2#ZJFWzBmbI-;`tm|05Pm6X(tovJ@+T(@* zXGWGIE*y0bt2dT2N_>W+BG(fw&%<&FpRrl)h4MfYOdwhQ)o>U`%jsf6RX%?q^e?8wo4sgqZ; zCYGD}*_ErzSsAM-tkLC!GOtmaf=Cbl9=}_^(Q~$^wUs@GK9zlp?Bx91AOHIK`h)JE zcN0C8U|G0rktVUA51hEuxT9w-`-;GbsqucDveV~xTzT+k*R*IDG|yb5EQ2-1F1NkD z#iHNec_C8R+i0GbkwRO*!V^~e?xo&;r*)DP7-1sIk(GE%IjB#>Nn3r&G#p0;r?hF? zKuyCoNTlef8j&ZvN6{J{j;;b2Mppp^vDV39@$p0IDHyKzPh-kKi-ymVs+c3>`3NgD zt&^ZF9I-%pP8d7FO0CD~?8Q}|ZZcxtVs|Y5>jddJ>4kWha5-LNgy(xTNu;5Br}cVh zz2wMKmGdg zuO4#up(_F#a3Ri4oL?teH2%bOg#DUUHniwel*4_dgHL_*?+f?4r-pKLV4Rqf!|-OP zv}L%(pLpo7PcM3R!=;p6On4{abh|_iLahEJo0P?D$O*T7uzAy!UVY-*E!|qGu$<#I zI%dhMx0wTLgyTIEzxNU8^(vC0mTJvYy8NxQ!@kdNUVx^H+8}8!&pzMa-I-<2x%ku^()-%#6nm-t?psq#UvL4qZ)ITUVQV<`Qom zf6EO>p%oN7y5urVa?agEG)8&BU*WOTB4PT$R;qPM(nhDDsq_VU@v4l7& zh}hZj-Z3wvPkpAB#)kd@@5nZs6AcSvPWv?0OEJeDAK5<=AtQWNo>B}<1xARJd?Kr& zB_Ek59QVtkEj-t=9GdV43<^gCV~UzG!cn(?P5TmrBab0P5uJ#cWzcTn=w5(fTf-V2 zj=qKz-P_?vY8nRE!m-?tqIoAAvCV^dZ&}5ot=IQ`@X04O`xt%7J#mbZ$o^>t(&kqfE4_tjq4lX zvO3#<{08mzU8GP;TV(X9SB`n&Y0izB-@ZT!_fNN4dfstA-f>1jV1%|`khS2c&sS!KngkLbJf(>evc5ZOAy zZx;d^Xtrgb_I! zU(@dbTn^mh|q(s8>m`DGDKIJH>Cg#7A`}%Uu7?eoppU84Vd%_O8^uqPS zPI-6l@3L124Avjbi5E1sYj57;^%<*Q^eIxf1Vf+3_X1o1b49FjrVc;xlvl60<_Lii z3L;lIQq#v*P<;JW>Y&u@_m15ZFxpS(6{M_!`n0DzAH4RxEw<1psLukWh``bFSOO{=igJKQM9MXIoLn}6}a%M>5br+H6VDWz6~~ANzD}Dnd$#U z8U24zMmIe^+xovn8ND6cwE{-tg`jG2D1V3U-uk+M2cs&|~V)c93bS;$L?j>SvuX~~rp)#uLnd7q!J?^sgP1{tyz zQs_ZcI{(?;N6y?0zF*X$Va-Zxj14R7@#5su94Uq|w*^u-2X}mR$5(p~t!)e# zcv^5W*%c{VeY9Mbe{!{-@;@MjvKKSPLTDY9bI}FsKd}4R*L=@iUzyAjk$2k4Tz??2 zi5BovdDD9q|6(Sv(NY508(!Bdsu@?e12By2yTwUYyxF|Y&+roh1+u0+9x3dfV^-ed zfl==~^ohVoN{mlQ^9Y0Y^I5>g`W*e@<7+Oq@Bo&>$YW^HTBDh?Hxa#%d;=$Ql z_xdk91H}tjppQnjfoOyA?KbxEaO`KaD9nb#67R2~><6bEQphbb`rl(n0Ye1BuO_;t zs1KH9RoS56RwYI+5s!ejbqkGWo zuLrJEq{kX5K)XeAFDH|T(>Kt`$yW6-){f*+faXDo$59Sv&5KsL>$BC5zi*N*2U=%* z8$`yxmKpFFv>SaE!tt+%Mn}e$88EJ#q0zPggx*KA+0|4pytu*6?eG5e-;>!3YM4BN z6!P1KGw0m!*;Ct7578|eBVAw{j9H1ZtwYub^v_7xP%yT`DJVy;DC6~=lUG-?J>Bcm z4R_h&DV_$`qdwvUg~qo0#!5>|J+jVYJD$H9C54XM7vYCbOK|+C$5@CTb33o4LN{DIrT@kd;1^|3dfd+zrSbWI^CE<(!6fEoMM<<}fIce?U07AY2aDpOJhY^S^stAE+)_d8~- zKV8a^nueuvpQc6ERuUpSN~GsRud1I*fJ&t0{JzT8`E>QvD+_xqfjJ8)vRSZXzb1+Q zcIAQR{(9N0e_!UMB$2}Ue80)Pv)h)qdmS%jTcl8mt+&|$yT6>>{}eCf0Hmydl*B_v zT(tUXBl>tLUm=AyuG-R@O+Vx2+3j+-3fV2uxsGb{l?Sah`Iqe{(bJFmHO9gn>ncfp z_W`3`KIgs!PPf~sjxQ&^4K`S>Ng~TH`ONTn;|}c&-#n+B_!ezizbS!9ea7jNE}pRA zFLPcL7-{SH7F`Q4>jLJYyOw(O^uga^9qjbaR!E_&I&{n7Q@>er+|6FfemZ5uRUh}i z=BD4T^HS=y00&zEFqBo(Prl^Ty?^U_uLl!fpZIo*hly{4`1-_C9bZm-i~hMh8c#ud zP2*{cZ-WUNDvtko>apMadxJ|>^Hw?a8l>Y{8lO@x{T&$YzF@jbY+h+Sbjww5P?Aq9 zv@xf>up=-Zv{4Va`^@R@Y;#!`&%S7jOoXMLQW@hkQX5p3h3FF@fQhiw>$u0^(@~&+ zahM?E>#eO$O(V4ppSJdtb^2EOeX=aDv2`He4!umt_`oeCvKJcJ251HNQrAbR z!qr+NF6y*C#yuv-VW5EfKX?4R_8Vu+xa95?o7Tsd?*?CK4=lgc@+P_V|ZT0KCloWDMUT?g`tOGVY_=mH-ltlqU4w*K6%*ZQ#*?(a# zWn#8k1G^~=f`ks?p3Hps5ew{AofIUt-CHd`HkHOav79sXRm^Lrv zcEE7n-uRHK=5BHDVQZtUF_#gB6eJNI;oI!L&L41N|BF1BHvq$#{gNw|pK|m4xs_LJ zdJtbICF3dRx3Ox!^k1*}z4Q5A7kJp>X^R;p;DhYcT#eSR-`-p$@x~Jq;I9n6meCkr zpTVGjeR}u0D{gV*bq^uxiPJjaUhq;z1BNvn`RjF89n@Vs%1eog7Q;J?n-lS^vp`WO zsM$eFi_~|>qS5F0W!Ea6uX_@OB0es`0`I7StDYXMET{86%iJ^cz`dT378OYm&j*ol z7Gw<=&mlN_DN)t;UVFo-%Po8`=6dk8l+$kuWm)KR$?<1Db@U5}Ebs6^c+>+19ZGQ- zPxUfm6t*SH$KSTpyu+|EVnj0b&y|}fz4yEQwjMpF>#)7Na^hj%x35Pwo=jtbWFh6Swo?Cm5FyiN3cikWGVO_jXv7&hVRft!7C zF4~P}U%M zejv(W%CvcX`}{MVG@r+yYkZ`y`GDo7s4~G2NOSj!Y%4)gYn}hTgcU5d+EOR;mcmx zf4@-&N`0`P8*G?m;zvnO#=_ZX9qKz{m)d{Io3r};#jEM%NTF_V(9QSGe&*iSutIh? zem>+VTXe<&_slN?n*NT~p}anO*AX|}Hge0= z(K_7qMLD|bY+uq}?PXX0Ass#E<&;Hdr0ACRhCDU%kl}KYr9UALT&4 zQtm7_P+2`X=dL^alFyFs?@Ce*DC@TfB^qmv3LAJ{+ef{%5C0Hr%?)Hv={e zQoXS9ZcBf4#{-A|%NtqCB8Ad_g_qYIaMi6BJs>GEH^%eZ|1D{`wx+H3zt7!p-9h`m zB|Rs4ReaC&MB9j$iSa%68)PE&ou6ji|Kqgg?e_Fqv?toe0Np<~KK16RpFFg?PfzR# zheX%{IOZ^Z;syo;2+ zNSXBGokPcbyUmGS${$Ff^j~>}k9O-nb0_Yx2(}@K*=RS;GOvu>wshPsy!+FUVGFPF z*$Ml2RL9TG$8N7UWWB=A6HeHAmqR_6*L53Q@$*ZwFPV1-_70ski08L>J}~Hs*}@d= z@~pJ;hx;va*7`V|i(cTeF~N8NIHa98Vc+6kl1KhV&uol&M1x9np>=3K7+h={+dAWb z+a-m8JQIDJn-Uu!7urK6Xqa;f zozJXt!Q^R@!gy&zjzh{ufLU^r@dq#WujFi%!dgTfGUv}1K-~Hyn zJcN`@k+Q~%=eLf&_8diwo3JEH|`C?&X* zf|T`v?f#Q4SbO@*_ox=dmcX#O5!|OKgS;G3F}@zCV!ZV$!ji>XvY=nLXNwX??6B4M z9C7h}OJT;i3FUAmj~?6Hn7LQy=)LU@^LlUj#Ym}7GgIawg<9v1@8`GQQzBO%0`onvv6be3 za^Z#h44ktYuu%&@>nt`*ts7fbTK>BCN1b!Eq)1GdHIPF2Hh$Vw_y4fc+c$Z%ZH^T3 z+tBH!p8xIi+n^CURL8gIgMi_T@%5uelrMhupDzN2`+#Wc@SYJ;u&U+?Y%X9(_2X-< z@cZ9B?Y*j3&KpRfulxKPva>FE;nF)*3JIv_xJ5q7T7M)kGarh!vaK}@4l;0 z&NqD7#$F!1`#&-fU(VQ3N-A&g*wy=Nw8q3m6xHOA_&$xs#-58F+f0cbb4-b;k6|Z& zXiR;GExu3xv4!%hIpV&3W^D2BiPRHO&1h+nf|H49iyPuki76Q;l!^+OH&GI7#nSmMZSl;k`8;(l-a zHe(of6~+I}WF?57Y2$b9;+NMWcyRP~&kxK3hMw7&(dT2qM7!m{-o0A;o_YIcNWpjN%3lJ8DG%(O zo3qgGFS12h4q$p>bEuERF4iw--nVV5%DH*Y6+7>{QNPzv4)q;q0r73!lNOD)%*D5L zS1Lb=>ylr`Zt_OIYOhs58&>t)r>&3c4ywh+>>JdF+S8=|Gq+f#|9s4}1i{ppK)mQY zrr^XWQ$|h7K6I6MO~@gIM639?!HT@tG2<^?>1C{CFh<$bi5It1tDM`ezIR+{?BcNQ zqkpJyB_ihq(P}1bujbQh$}7$L&$34}X{rHp0#cR-ZO?sl$PGVDzUMZmA$(y%*=8Np-}In)ptlx9jiD)t(8v z?5M0#GuAqL)g8auk}C<0AGA(=Y+-Ud6~&0yS{#jlxiYCn<9>TRy+^9g9oPqyaf+0i zbjps?SGc_O(D$xE3P&SSU{@}sArW3(Z}j5Fcb}+E$q5A!7H6I_5|~=08{BpD{+q6H z^*;`wPq1EN#EB?yYenx%8y9d7%9{D+ivJH!_O&tDgAa=*k&&D z#q~!&@MVXWvIA1M5+AYW{N=}9+v_ebr5z~RUVvu51?@QUkHy_A!X!WQj#;KEe* zayyRnQdZbQ$+wkW_+YbNp6&jJ@Bt=`!HEh|D6ilCL!e);Xalv9yHuG+RwVf4G79NSm0L09I^YChKrNwLGFZ(V=ID);_`6h@8(zs0AF z+f!LVPyOSA%|6^J)hynD1TnzGV+-%xdHcciF)OF4)#_qr9FabM^QoYX^AF~du?MI* z_@UJ|SnS>jhrNpw2wtW{%uHCIQ~Hkw4E3Gk`y8ClAJ=p-VDtdWAcd{7+Vaci_g$~| zOBx&704elfy?*Iee*a_Jmxl_BNadHcUN!c}{C#iUdi&pzLVXl_Iq`Z`eSNay)p{|) zB7@$cC_fUW753@)2ftkO;`KTz_D z_%aMBw6bN!&w1pM-j^-9P*XpAp-;qt_$6&W{c?E6BL|!_YoVrX@r9a6JOxX?sb)>z zy)OtWLJF?e<&1xP_}-uG^7H3t1J!I%H-#|@EMVfxi8$S^V`oIRf#}NdE0)zDUa2R} zU%KCFOC7TTMv3q!+B$wdjo(rG_7FAdr(F530ey0xZ|hm=<7f2vouO>(E<*hNPyC)< zJOw8;1${j{&xCl|;<3#+RB_jpFVF4&-EA)nM2kY-;&6;FCw?Czo`U$fzV8IZy&I%D z*Bv{#@;B*I;e-14E>z#JkT7^r#qXEI^TGeEUWjjlczx&e!_=tXeu+2!d+koI(9TDx z433YlPds18@A}4bNIW0J>xts6Y6_|IVLw%F?jMJ3DGU*=vjUU5Ov3 z@jVx@UeNs$&xv_mpAC+GV%CHGo>jXdG6TkIx4UhvM*Uk?jazzFW@FB@oU<@D#_z1g z_i233#n&{xKABeKX>svwC!aES=|z`AOmp1^@jJMyr`4+Zgq_Fidgb>s|BL#->duvY zyj5y5z|bPI?xo-UQrUdWeI6gg*C&2nh;Qrgs=80pmMD1zlzb6>Ij`=u(SY^-ap6I$ zc@)I&JJ(~o4OpP+%!qG;XiGf}R?+KvrnG02UbXaD+wZ&Faj)&@%?n59lr10c)qkH} zPeAW=JoL{-3hT4hnY$Fzmz|BX2u?~Q1;V3|DOgc9M_cy=CX#9y+wl@9zUSiCn(=*F zp46ViJt2vI{r6u7J-WkB+%4C>t=qOK9rp5xBmVKk&(r=uikbioHit;thSW6Phbi8_ z_h(Q*ee|DaF0#a{quxEj_{o1UCA ztHo=BcyIf7K8V*);;o?JHIqld>YxoqnHeX}Tr79@aqpk*rNsLY|GBeFynYbxRT*!g zjhE!{<0t+sLVSzH&!^d`*>no}!4c!fuXWh>XRnDdr+3Ta=b!kQwp7g4a)oSS|IKfh zaO!eRf7RHqE?K5SX%4UKvBNdMJV87cIH>Hp2!UsYH6nmgaL-9p=lS%tzD z5U~oSq(Dl%$7es3L(9UH{hQZ1b^0Dpp&Tl)FjH@a6t47Uop;ISi}pK=r?j=cGYTo3 zZOY@GJ>cX0D@S=$Gfrc2Qnver>Vv<(y!YrOkfLQ(0e-USWLxp(L$+IQslQ&#JqeBN zsEKOU{H-0so&(kKvg*&3JMrtec!?B0qc0ch*BLK&BCPJP1wctLoKlFi zh6{(p*!{sfXP~Xwb9Wwo#HW4dF3p_>-9J|%g>!zoeB{{F%!}!dr0v)DBBc*f<~^|M zl^>keaj?M1{zAMIiytNNJ2vrSJKl@;Y0yTS!?NFAddfk`_7g!HEkEGiczF=h+t|#B z@zn*k_+7>9BsG4fo?N?sh0lLE6%^i{5h55~q(~iZX5gu)DhD=c4;Iy=zSOt(yys*lNZVl{}cZ?^`do9m2GxBfTY{K>SEh5@#STYf0{;2%;# zIh4H*=ia|^xpy`h4H({Nj&kB_3i+1hin49J6JGtI_tA*1!s`yvJ&DL$e&m3C(6%CI+u)%k);@LNWw(_2NW0ZX>6KnUed_NF za(I+CPL{E0^ytN}KeN&FDZj$1%Szy1M66fZj?t-MZ|*)#Gt274ef>$!SxDI#)WT#Z zEqdt&Gd5!^ojy%VU#ia0hEsUT2fj0Cx#K4*-M{wgv)|1t-p{i-|C*pJ3u`!6{ImC+arn)BuKmf2;8?C?Yqeaq z^5&s~_P%Y?*{3o^iOXdxiW8^Zvh{I$jJ{maCLAAyO&ngLB4ohQ$Pj_`w>u7;|-r#@Z#00Y(H`3`)1MxISQ&A*m93@_gcq4LP?H(1N$Tv!XbWouvYIIcf(B!^`@OquebZ@l+6e4y6@^o zzr$S~EqBHsg}bEtt-jOqeZRS#I+9L_8I9nONKTYlrVQFBf5yz*>x!Qzx~q0JfuHV>nW7Zzkjms_dnKFx&SE@mVm(p%9T`GB5~bM)AB!@ zw(A5913qZWr*P^olX(8JcV4>b&c2*W=ru7a*4G2rBBJ?dSrt=LloKO&&~x!}Ctgy- z%Y(=km9c#;wpC@9^v)Z4r}v(9nXV~%A^v1)M9c(?V9s;lh&jMEasVBF6QjWd)I-ic zr{&R??ml2uq|m1XZ4krPpkRUG7U?s%@v=9j7r-HHD2sahne%pTy6ySHpbBlFZAXK)6f6QkfN9JZ|Dg9kWyUxy9Zx>ZT(SR%4aaX(PQAcwceWh@@?Dy$4jZ7 z=f0kz)(P>nvA0{h6N%GaJM5^nihpp=mCg(xE=Gq%ePU(|@Mt|BQ1wSb;y~1teDKUl zJ8gZ{_Y*&1IY`3Sp0rMUpT=VgYc!0}X6M3tyXbuZ_=dj3w_?v~} zYZ}j0@q7?dAM|!SAH>h~@x2{Co4o+O<|tWwkHfpl8-KZt$Jdc_32Z-D%V3l+Lg1Nq z&6$&1ckoOPCcX{gM^^m!fs3ZhW^J!;b=$b)$PfE8?bEF+=kYBX-v;qD?aA1V@1H+F zBdtZ3Ot~+adtuQE#vDEHAb08`4T;wT*4y!16*)VLW*6V0J*iJ;XD-9}bd4`}+xfW- z)_&UCUwCMm(w@d=F4~}@@8{2o43V|wGe}tuHGS~iL*L)M)Y6I+?N1T2qC^{M`NAE6+acYkFWwGZL1zQ`u2A!=dI8{;>(AFa>zV50 zU)RDJ0S$9DQb_d z_w@T`r_MQd_{Pwy+!XXFb$@S7OBv67rcxyZoT$@APp^8&rI+_(%u*4`iON)lZcil6 z-E4(LPZ~5Dz63ldND888Lw6%(j;8v&J9oXZ*N8`-9I3BD!)s1wUfy zq*gQTu+RVa<%|^OdMe(epgt~v4y_dtcakh>u1~t7G%1%!RoWjq>5w(H8hDTF#zNzX z@gx)7<(bQ)<7f^;JbVy{e~)dl`@f!jePdbx^|~=~?JU^3(p|Ystt0W&0qZTbT6)nv zWNb@SH#thJ=Mu*}aP8b3Dvu+D>qd;=m^C0$X1}Dy_CnK^x$~rT`+(mZ3Wfq3Iq|A- zS6zR>(+8%J(yU}+3sT6}H=KO=3CAq+V@6W|Y?r;N)<2W4ek(C$qt!Z)0?J6ivNIIS zr#sJjZ}$E(NVTRdW`6-NF*^ci>rA#S)tRqVufO1h-Wxt}`&dl@cp#kzKD6j6vucIx z=;yfejq=$)t(|Rc^qhZe=j~4EKkZ?zw}+|v#6+;ij2>~nvkLE$I2cZLhtc=suvbHbKC1q-nDugQn=1S>wJzB&RH{_d*qLAhxVqm zRm1$OQ$8DaQ}vjsdsQVxR+RB$yWWNmA;x215iu>uqG-^%c(;@kqr@5!9wn4j%AS}j zPVUTAvXvK4I{e60$3G2i9WsZG77_7oSq?|z4#z5Kxygk$opIH){NeQ86!Sr1$oEQ$ zy_Grh_SPd88A$1Z(Eorr`&N~*_=)dNn78v6eF!5Cg>@12NHxq6tdEx0TfXtgj~Dm3 z{8%M>(bS2%Fv~2Dw!Y$u&MO!H%bk0(ML91FHpt#RK{c3U#tBcI@Y|NdZ#;x;pk#c! zRL%m1TH1{2z1<(qm4wJSXkk>SqUWzZ%&9K8SF6`LMFUfKXYzD#lN@dwX6?C9N={EV|1xOaGSL~n~c z0J=i9&_?l}z5RrnW}W)VBWMGT1$0oPUL~i1BO}zx#8A&6z$UhUh&#med>R=iOBkVk zH3e*9bJ+1X<$v(tQRn~m-qr_V286yNb4f&mXG$d0r|;GgahL`VhZo4X$0+?^pS<-A<_mSdn2PU3d2RLru1N_pXXpi6?!1D32wIb~lG)mQtEM*NJh5G!tccLABypjj6Y&qw>fA6{t z#;Hg?$m@FPLbqFloKLLzoSNtEx^BZyPJRB7e{y8WHef__Nmv|&4+fr~bmapInUNoT zJop!-Q=p=TQ6E3H>t!$I9~nROS`F41qF6;}0kqYCgt&X|ng_S#+B+*ajW=V*ervw* zk0m%S=yOJMP#?}&E1xrd>FS9!w1G3%|5K-Yz3$i*PW<`WIhwCgPK5t8y^@i#z}f~l z@nw|5mBgl}UzE6U-E&b6r!2N;ypK$TCo_d2=SE?HL;Q8JrVGTB<jC_MQIyC8+c~{IbPVR)=?>Sws$0kpSJ8<$A7p6V+@c(pl(Er1wB1Sj0JtZByueD zSo5wQ3)CpUI?-c6X3fZ65Dtmtc+nsuEy38qMI=Im-mGCte`oQlx7mK7uP;UGXh{*t zJ0cVR`-$TCLtcHObn$jg91Gkk=FAjzn}f)=_?sr;J=WsmderYGY3HV>I~#O;>LW?Z zI0YX>-j5-C9e?D2Pz#NWpfciYCG9^I`H z6I~KDtv?xrIZKuW|KFc<`hRyI4NipbRmA;2YQ-`rY|TSTGq=8n)ZHqD6y8oTcu*o! zs%48)aN^+BgU>qZ@Rz?NHg4f!OO3fjBb1hOJ<9S&A z(W_xQz-+e9Vmpmpt?SDRl=X`m$}LkDqY{v~<#6@8bRXk;DGkGPvL~?%8+t-|L@Wzjhtosjcm?&Hm3+9vOA|-8y~b5~HrT;)d-9%+cw$ zyw$bB*4wS|+U%d7zVpc8?Pos~zTq$2K4V{0J$=Qi|LAk;i)$VkZl89fuK@gC+|XAXdtH4P-kJa3wPSL9GCR+k zh6AvwP*|FPw^`YwDyT9CE z?%Ch;%B_fWw*T0T{(k3#d%wNtf92nI^*FkwS1+_8Xc^r(5~IZ(EQ9@n1?dG|OrK3w zx>Ct9oC4ZPl>%>DO0{RJ15=gOT&>bsNTy50S|ydPRa@LAH_^?Vu4FU0TDp`gM&|dD zJ%|XjiXJyhwT5dbQP`|p#weE7Z+EOZKi#ST0tyKrA4{FnG z;KXW+ybq+qntm+67@Do9mvkjpt|fJ5^@9fMY|j-V(uD;pf=}SQCyk*+(>~CtUo|sH z7g{XgV#iGLuwjEoB|9>7obIUA%GJ#W4yAV52n+GV}XJEs8Mr;O1UqOKNy#abKmV~4wSH|p? zEk>FA&##6Ws8E0q)e4R4&hp>HPSss$Pho(w?m)%au~CgzJZswGwz1Gk7i4 zZm3r%C&~|fk>-=mVM4XL&|1n@EeLfkjZD8uHKY~>==M@M12Fy|KNc>mwJE<-V*)wP zLh@ijX4uyi)h6ikQtL#-ZcV0YrGlvnp`1V+`XW`40t}?NJf`3kzX4JU1_Pv@Y5@CR zy{fsLo`lzMzB}2G&6lCN8qmf-poEwdDNMS)t+SY}vM94nwO)Cz2rgB(UlF4nY?rK>8be{!MDRxlAL@_fI4F*$rfWm!Fa+6P32#RJ#R0B-= z*;K)RD3p^F1z|zg5ZEa&_|m0HHpxQ=$y`;b6B9DoG&JRke9UBVyn(UN!1(EGwVEtu zr`B@mNl@Y1ja(6t9b`mdkv6jRWsn$P3Vvv4oCT`~9KjF5kv2MfJV*qdLJf}8-DKz& ze`5pO|0*@GEdlB|ngZK4ihN4}77AA2dWF13ifzz^%rKZ~0H_`SqvvWbq*#v%N*01D-Rh382ObkBNb~YmLSk%G#RB>ARo}Mc`(l+O1`y$ ze5*?Ua*>&YeUiRz7+z2;ayS|<%Tz;^{n>!T|C)rEnjQe0DD{$kVwJWx@6CWXYB`Jo z99S%llQ7-$oCxsOW#&S%6$Zf0LTk1HE=ZROFaba|sGXQnXC@d>*v&2OVnXa~~xD^SwdB*cF?$Y-(z*L`K(7&`P1&NH0Rg z#No6`cM`g3sVi$zki%JlFZ`*Y%J^CsD12`sE^R7>+fjgZpV`xPGlRds0quWH!WL~E zh)yfYFMFEKBk1V1659^#2w!=u(W(Rx4jGvAIu1p!4HDbHWj7xQB*)Xj~Jxv zJhLDPvmW5XpU6Cz!EGWbQbGcqBTp$XIm|R8>RBb-iG7i(3k&zAshJA14rzu^H8h&C z)d9bHNK#IVKqBz)p-CgK_Ui<+enK7XO0$cZr8=bmlIo4QmE8(yNU0q9$37@SEdzMf zM4swvXrn+I15`COC>~|C1k@Ri0bchli4&_@{fMwfQw`Pj?SLISfClP%7JGa+_&TWH z^y&R1Xo7lDj)KaQeJF0)MgI=s-0tk98S3qo5Tsgm4B1u0qs-}MCexO8N(&y%rjVzc z2L|q$!$ttt$1-h0u&Pzk6|51H*a_+?(gQaMdpvwHa)r(c{-@H^qR~;e)d- zu#=*AOw4Iml-zW+dyvGXN1B2uxoQr?)8t=ukYK+Bo@dGwtqAJsC~@Ia#bOC4c|mSD z%ZUIcR!m#%i0BxC)fPGZl~fiwi@91i5HPos-It*0QCuUf;1*gaWjaxvT%la5U~hyT zh$!4y?}3I~TX(W6hu9CDH4OYx5$^`}Xb4_LS_9=^G;ti8$A731L-j#Xp)ZXg)h*_= zt-lF@)c=Zk9BL)Wl#|bDh)FmA4m%y2z|dwIm!Dg_68v8wnCNI=X^%S6HCq6uegeVR zS+OZ|(Od^CnuRqR%2e1mu1Z!gVD*o#Wh0?BdMqm5!GJ2H46Rk483=u#ShxVQP2Gta zX228mS=2P!Tp!{>8Op$?)ORWi4R)K;xQ+?QFD}qx;&RItQ=L3eZ#-13jTV(3^abEW zNwckzUEvI9_gQ94Y4TR=DnmFPK6Ld5||QGUx+r z6``6tya^11doMD=Z8#X-1W^3(^23Oi?}T9@U!~fR1ec~K8T!o21WewG;Ij=tuPD;) zmWzJ2*FQX=14H-|)G=)dV59{#?;C33Wg;#YLPUwJC3PqV4Tzu)7+nxDse$UV9A*_%XOc=MyHl|Da0zAWADE!U9Ry&`BgU+~q5N$CSpTaul$47G zD&?nS#V(;ufhee zUEuf!?LcB}Sa@Cs76FicQl=(bQ7VQBpwvSWt0BFZ7awr2=2Sy#yLo`XefG$WQUS3D z(+eyCupxI5!=qE1NKGIUIqq>r3d?k{v|-%KdPeC)Ayr;|6m=m94>0&mR!v*pu$!Ve zfL}eJCpkjQlBnES?B;?7P|hR9huwk~MH+BKefDM;L&L;30%KU3%q0oZSLFg?Z zWz5)S@z6RGSVCVgclH8U!DWd{|a8?2`V$MX+21m`cicrVY%u_1hz0QK49aO zsfJGUGAR@qLI#peSojP(0QSAfGEOY`*b!?@!4|@`I5vF@goJVeVd#s@)6$7ff~<%e zKq>ir2<07vTq}hJ3{JFM06UK&9HeDrz=>nt0Bm^_)c}-t14c;)I_1zu)x+Myh;&MP-EP3+ zmd!?R=nzfcw(J)Ho#TY2pBfroj*2TYA(TeXRB0emM^0oN)g5$@Aevj$wQn$D);feG z5Hh%GRDylEfY0|PBh@CAe8mCU_a@T82JPHZ$Aa~RbzV&j_1BTI6&T_|*E}_{8^In+ zNd%+pG|ei$TtMP`lRmSNt;4DTQa=f2*=A%NB2%CwSSGki8>tLcmE*^NkzaI)_Q;?K z1h&-fJRDd$%e1e;&9Ia&RSc+t8G$qS0aDSvCkK0Y5{t-oKs%2O@rjRKfcoA5t!FSH zAC)LVajY4t5y;1uVYMAN=?M{k>N8!vthkuTMZ_2MjD2EMx{-N{1X#UI4Y>1jL%_HD zQp**)IRV1epbD4RoOmt8?!815=(pfTB;$OD+7gJ{)4_JLco*}SQ!Z_4sR-;LVAM7A z#aB~9A4Fgd(#=K;RHWy4VJV`3mOkk*7Js7yng6vhoLaN=0|HOPR}qFbHOJ37(o`NN zVKmrve2)nU?Q$d}A*@?6>6LTPkGN@O=tVaVkhsqx8f3Di08;2MFR3)~ZB|8qGk; zxC(56cOPd)fQmshPDrRF5ASq!r!c~6t{o>6gk&q%(Z|lsjUxT8vI?;6Vfo4jcojzssZx$m4r4lz{!n&G zmqh_FUvzE#VsiH{@x0sb$U_cwat2_I7agXFzF{H5rj!)G$;#aBV)+R z32Y%)A67#H3J~HzOmYzL*~i9KP@fENQTV?3P_?wCTC;h~C)nv|tH6$+I}d{bMT%I# z9cJ(f=UU45(LjPP7Yg^iHPjtZE=NEU_1RM&P1NM!4oN!rE1YIutU2`sm{)m-AMI^z zD9v3)0@Qs5o%U%>R&~^a)PpxB;ChiyicV)J*UJP9-V2sxdIKK@M#YylOu>x67X08X z@3GCHPNW#fa`OO>`z%`-woa&LL!b!rl2vAenHxAfPN(sZF;5{iVZ^SL5L=_lJ`*ck zRSyj1)t8)t2s}6?0i#`xS0(4#a6^)z-gaP6Vn9vO;Hhj8=pM1a=Dmm|&^EieH3q2r zEG%y886})34jjFMD5z8hlo6kdk;F`{ttXa7xa?>CL2jsO*la z1f0$zQ8wTTPjUtZO9PVN2cjY}%d9J?{AwH!`Ct8&ETUNKsv!7oi+)u4DVC{K=LtFH}uJugQsB&L>#RVVnk#&cg8j+RUOYt)j| z{OzSu)lG7%uhX3nKXkdICBcDXGt#l!eeX)O!!p#uofkN$4@6$4eae|OrIYFQnp(&= z5a& z^@QI4$9rpME{{ewL+eZmgMLXewy>3FtEs7g!e59IyK$3I(U6@#nCXTNSBhv$6+Q-8 zISAV9dmd$=xr@_ZR~1$$SqNfWDPKKmA)U3h zs1(a*P)?_k-Xz^X@p3APrON{fx4WtM`xB7ruJbyl6nDh&A9~GEnd*$$QyUvl#&DxVw6l^|2R~C8oTBqAtXfg;s1?N6pp9-g-GXiZ9NbJYvZjDYth6J* z0eBW?o!Bu*PUSn`(2_?4AD=Sq_JNYE^-Cnp05KK=!~ z@2#O8amNN>opI98I#moi7*qgs9#Nu>Utpk@=6b29vf49ny;*|#2NwYSuhP*rh1NHe z0q%R_Hl`&K!ynWanxKUi|Fpqs`(_cqGmf`;G;|irh|35_^&lKzYhy?7 zYkk81D)6>-yKe?$!92UH=0kzD)z~-J0^0WmXhbg*vn{L`#VIgo*Gw9imkD^h7cdR4 zFJQZk*|Hz!{N{e6`wd}`9mKSh+mKA+$d?Uh{ZQa~?FnXpucW#VIx<7HcOC)9(+}o; zl*lJ+4@N+N@yuQldr$2@=_j-wjtt0#O#$ICQlgfa)>yt=DB1UhCbVntflW_g(<Tb`=C$-ZQRf&84)~>`%8g5d1!=z4_L?t-n+7?N%&^yrKs#-QZyFf zY1=3a;6u@2Tr@Q_vTzO78d!oK*gW>5V*z5=SYc}TO~|nc3Qs`>3hzb4zbqTD>)MsV z#UhzpnQFB8c$S+7$lPbpVPCJg#Q@TM29w&iOJTX_C}lX;=_fX!Rj8)Y>1-JRh@rr# zCqU^yXT@xLsg|Q9)xcg}CZO#ooMk%x^`cz2e+7-6P0R^M$ zmuubvGWQwO@R%j)i%+Nymz^y|`iE9v&rB7kVD}~7xgeAih!u#?Hd2OJC<|g1Rk{#~ zd+P9^F)67^p*{`k%L>#)#G8mn#9^7vsl=E>tgSFsFR{>B&4*J#%8+IOEmWtZ!>I~Z z%8W;?lB19-@Jgy*a36v_x2*H?*f8NQ_d zr39}T!v%OL|2uxPb2NG+^bC8DgFNKH?>)n<+MbL}_VRECzyGheBicldrJi99j8%{5 zz~`P}*0Mtw!b9x;`aj`Ct?RI|B`9c>Ff)uBPkaK0_ktM(TKOoOdDOoRL3q78#9ay5 z+>^xxkC5WxLD}(ibMP!+E!%DiW>c5fUxEXV3DmwS^iu#N{#TqP(ylD}^dn+jIAM$E zn1%QWRh^QnstsuO6*ORH%zbSwmGaqC(S1i)B}4?OxbN63${{c%PZJnABq}>-j`}Q3 zZ0jNyP?O`wr9TNCoATh|(be?h(Vsjgf=246TF;M0eeoEl5iF`p{8-eN1)@dwvk!~@ z0$S`VE8Q|=91jEE08RDPtdva@`#%0QRPTvhDU^Y~qSOoSY&ug-(e|vJDzWXP1II}; zEgt)U;fQ8$vrlb25K4?slmTd~WCV>s8u3+Ov!Qb&18_Kxkal+Uw48z^O@QzV2uetE z?>HO40CFB7G3a1phO6e<)H<#WOE-GO*Z>N0-i^hmgKrWP&QeH$HgAH6?VD#qZ7W2n zg96X}XEh(@)qR}!uvG}KoRrQ($5+#$uOJ;E_(0X`(O|~b$L;s2k6^jb21{BZidn9cxsPPnT#tF8i%R_Fwe#3uV8F040^;A-g-R_tZV86ST(p!2_iK)ZiKE7T>x@dy2D zx0y^rj70H>P!FKj4l}VjnMaQJBaLS3sEG)d!~FO`erMxdzVggUi#*X?Nj+gf-dZTT z&j@1ZK2I!X+ufHk{E7sWE@3XT4t>=Md$LM(KXg_CAJRFv#puFy9&x4%X2PZ~^sdl1 z48`CVTo4iXz@6GW+|ENEd5>V=QyVv#yMx)<^0^=~36Uuk)npb@)ky&~WoVMY+9DDr z9RH>TF~e`D?o$aHM8RCRPZr*4rF=#eAtFURit*ntxP7_M-D<1A?Qb4@l=f{lVDK^l zf%oEZjRDq2E`cct8-klw;!YR-lJ|!V7-3V1RXMsV+{OZm@TZ1K4`5?Ydx-ef5ROz4 z7h@^c6z36eT-un`j6m6nIlR)SiI8%!1{@X z0x+A6*Tm(EVCn&_U@t3NH9&_yNoz{kf;U;iVHX@Zs&?c|cb(Mbb?EZLdk#v5CiU?V zaQNQPLD~bUMZQAt;*1vEwhh?ASzVNkY|)`Jfqw{K^b<}f>NYNCvyD;BMh0D*pL2o^JDTQgwfx1r`PrzVw1C4NwXjKoGnK8S+yq^QF~L&PDU?ElEG zxA1GEDX6un!uZrsX_8UO(@)?Zo~UcEcF-SHfp}=BJm!-d~y1R)sc9cF9yVox{d5&dFo7AYZT{h&|E3CwQM%vFbpKbUZ1= z!{|F%pBco|e*{T(BTkqQR?AN=DWaAp`X*mgs$6QKCT7FfLVo!91EqSv=&&yhBg;@I z>dOXccKcSKKC1b{wNzgPn@zC}V3Y0*Ba@E};RQzp|KqG5UKZ`;8AN`KPL5M!Ewo1SPzlB_5_P8+WmOs zLk}>CjlhRU-WMECYrfOh(tKM09GI{39D6WVV8DW}fd(N)e(&F1B#9lbTYH-lvJGO^iRcxdDH1w&9rX~YPg!)g`A8Wg3U zXi0Qz+D@VlUWsE>ow&3|t^`S9Td$_KZgA;l3U`xx8+}-VbQWN%M(9%D){emHS!5hM zim@*YS1L?ma(68+M>jM{RCZ7t^%)yG_I1CX6yWi{Hl%0!tL4JGR~g&whwf&e+fcw# z{}Hs<>k{e%50TR=vJkUzKDH0AaROlV&`>LexdG7OPZ)M~|Ff1bn-P%;mr4T`E!$?T zHynl&@ZnEhw=xC3+R4U)eui>u?4hqpz}RN^&@n`5F`iU(4<=IJXf^*(I6opVPII%H zs5MOY9YGb!9i?JcZ`m5%!0Pg%?7DC4F6ec(C@5h%fXbzb8#rz_AH$G#0V05#8*4`2 z@lLlPecwbSw6Tsl;tFu}0O2=6%X_Rmib^Z2h(RoDc%jQ24xAJg_y`$?gl#y6T?g%+ z^^r89UXkBLu-KZWP{mCF=}DZnok#Kq2PB50`w7R45nra3DRsehBb7n zgmV~GG26~@1Fh+zjISTa`Ljy%oN%Lx^HTrh@?sk_;KJv&sBJX6hDmFx93FL&28|*nMxJh}j(C9sS9#!|U4!4P{!@F54vK zn;}88?+qHK-IpfcIaN05wMn z`(9Cv5q?)I$kr@Q!(@}GHZDOsaAq9$M$#t;UQh5xt0Xbi7fr6AQQ6TNQJ)*~4636C z$m+f|W;%8lMscaTdG9XZ-3CEWS~;fCaF+xCKw#iK+3fnSHPXGhcT{fxSKu8@X4h-o zdT3A|5-~c+%EQg%@TM&0xWVg0A5eO^+^xgQJ>hJG0cPs@a8{HX{sa*O<-d`YW<4c9 z7ek{=r8YrYS7G3D>aIe-SXB*&f%Jd^0{!GUXgAWs-Vg-_@1>!u7Tj96;>8tgKvw^; zM@R#r)I%HioWyL?aQE8WP}j-=OZ; zx60~$DZqI4!?-xYUV%R)iq%gjOnZSC_(KQS!9hRjQ)=ktJ11qcnStqQxl(L5z_tW3 zqF@CfI-SVf;836yKKRAF7Kk2DC?<#my`zH{$jYECYre|B%LGi`3#zYunhX_=^GB9I zK^9JL)cKfeF&lsSosTJPZBrCxOWnFI9kD|(htX@lLVk}@5g^fCdb_kybE zHLam4j+deCGav|k0lV3+hV)Sk48Av+*lgX|+F5OtSVZapFxuHe@liFKsu-`@@n=Kv z{#S2eHMD`Bg8}b<1-xB1hr-JpY5t%S?V)uY8RML01FZ9?)=!QshP>617Y(AHFy$Jm z;-Ho@QwU`W)Xt+qEtaQ4WgRUD<+faT5^>%DYMk~3R-XA4(WmquSzO2>6_d8;q=tz? zinGd1E&Ke(cUi9Qc(E)NA&Q|d>&yk?sz4Fx1(>qWAx?8*pdx%MidPRJq(p3GYE9) z=mWB#m0lJ#&(JOrct9)5)mVL8D_fY5>5%7$1YDJi=A3W(6;T+mV}~gyOR0}sqOGR8 zGHyOR`%Zah?mlBEImo7WEnm zCTUVuS+8(nQW<0?cjj;a%ZYz1%J|?xq4(y{`_Rz)@F^p)CM*c?=@eoY)7;;Jg-EH! zrQ*Q)2+S?jt~AA4Rvx-iRg<&65ff@$j~)}1-Z5^OSjlDDvt8MI9_IvcAd7LJ%Q$v# zXv@VU%|kGdWzGs$+)))(G}qN1Wom0m zT~gpfCol2BG6@r_{cg5EJ`@~y_ZF>&v0Gm@(A0kv`-(^#Wn8D1Z7tOb6)T_WE@3w| zKE#_p8{5VQCE{Heh_{#1UwUFy?jwhN8+Ho=QeQ6M^u0lm&9VmVV5$MkbJpNa7xP84x>lnAJ0qZ=9u(r{zwMR#H0l4!B z$vpz25K>aPL{#ZOZdO?8R863(`zHJgV-%HkrQsqz0fXi729*{!yE=cP4q{f?J4$c? zqeo<=oF-Glm8wwU%}Z6*R^4VLiweZCl{EY(a)m;tC?$m= zNW)bnwHB(W2nj_{?N?fjzINo%#{qz=q-#sI=LUFqV_l)Pe5h20A z%5_E80sGm)LFjS09p3SRr$c#oMORmtlUclb8_2F)of%jYkw+IOzY4NzYq_N7e6E7} zS^-?=>jk7qYAmr?|EJ#K)Q=du9=6Et3up5B^Uo_>g@Uc`VSm|9q+FYjZ=h#`9Ti#Y zV3t3(&SXIySU0Z9PL@BvU~^OJ(eY;$>-VpZY-WFkKefOKyna2>rg*r4gFoeUkQZuAAuC7s6hf*1|bNJB4TS4V#M+l%-YU3z)bCZhSsGmF}A>t}|)1_MVnL!pnJah{{Q?QYM zDAa5o(onH(KCpzu{q8}b4yeCa=UZ&Sdh0eUz0lXiDt0>=r#nO{EJTeHhs+=ce?0;k z2lf*IEdEyyU5Glm)N=Q3Qr2Wnj0ZwFJ``Rt2C6x3lvvSEqBx5MPn=+JyETpyr4b_s zryEV1brHEiPQ+Ifz(to?rH89f4&mj~K;b-MBhi^d3#oJxHwd=}uq(rtGXEJW919bs z){n0tnmZh_fXRJs2(qev}jwuN@7%wtZAD#cKO@D5plIjSC^xM z826TR``IZ!ac(sftO+Fk#p6(EwUDmT&@WkX~Ww)Q-+pXD>&2$f|uEmQ{5U zB(%QsLjBV5XyyGUQ@gF90HlBXc|lIyH^^f>TS{aBi7;>IST7Tsm9Yo}0&}OGXxK!cI8FzfLo zn_0nenupwl!uZozS@}xm1UMc8Mn8e=?N`3nUvX-eobIkB%5tAsnm!8yTeKXoHDAo? z%LP2XHwX$ESIo`iZm|N^eHIa6J5cTJ*aFghZfKrj6hdq>izQe;0#0|Sh$`{JsZz?8 zll)-dV=oiv@Lps<3XcdvYz}9q8nAeofW>S*81Vq= zJj(oF6SF*TrjOt`k5ZmZvTI*>6z6!wV>syp$>N$K8{&qh@-hL3_ab_@jc4GB308cc)s0Xkly`#+IQJHE0qaMT;OT3(99z~bK;Q%-I%9|SuFZkw$&I)~|2Z*7n z!Q7xA_yNo{(&}#|ATE&(4)=rfwv9n+RowIeQ29kq+XrBo$6Wv+zcP4)qo_fOV>g!H ze4e1ZyyM+rB^`L=m*;!+dV=2T*-9Di=`e35tKEgxQohIy1dZ2V*1m*y!`wX_SZ*sTFp*J~_$_oeqANtae^m68K zfIE+n;o9#VEdoKr8|^u77E6_ak_>z^Fl}4ay;jJ11TA)*G*|#A3Vx8e#m4qQl7S=m z!5iSZVsbpdc7bDEUN*LB7!O{mXd_R2bRlT54g(I~n{>HNk~oSJK%GagvkV=A>&GP8 zJK&s0z}a;@8LR+OgBA*mb~{n#1h^SwY8|}S2}cfa#T8;h;4fn3L03*f)q|HOu2wXV zRhL)l6@r%@vuPnAB7i6K1z7BB3xBnM!v6|cqm8NJa|%~e=;vUqHXLD=W{~rvNr{PQ zsBsJg3X4f;i06GI0h8|yLSCCO3^dWql26G=J?9an>Yg^h!I8Ezhw|iCT%bkoqwBS8 z4dmtlxce+9Y~!bU@JKm_h##4IZJ{_g!cd3|G|qT7{QfhPZnRWGBXn@Bj-%DCN0uRP zuB7fVl3yD1?dJj7^z}#bOAz~!5S&QN%4EP_PpY7ol1!?~>JMVPy$HUAhAn433{?Aa zv9~-Jks!AA^hyJ;_aba<8`Q2H51{TdCS=hX%&QW&wg7dXAp^8c+BwHRuoFSP40UHR zF!0AaplHYs&rNPn@dtE581DvjI4&bdjKa62q_F_bA$62 z3=IBPkY`ujbdjXo9YNkVH%Mzgd{b2Ygp41Yl-=oHIB375$h%9vFQ zWx07!S@#(&Ww&(7b?vyedIU8#8&7+O3Q&&s;v3P}5`jYoRMMKh1OfL~wqip~d*rv~ zOQiy5OB_isdA>vgpwQ?9;Rze@{tXBkG=YsjvK$atwd2%g4i)FeQps~Ii@&maF4VLCTI_-ZF%9(39KPl z52=Bf>o#-sm1G7GkL^&V_ky;y!*s6kjtVy~nF zd+_;eE3St#AaoA>0-N*bb?^YL6L6D!&KTKB(h1Le0Je+f;9{N?=`5FFhvI2@-ib*C z&SsH?e+Q2xGYEw9=n-zHaHK^R!w*xks%{Z6@XejT94MAQ!fiIwXsWfflAQtw^&n*0 zW8^u`vB8#i?ll&X{1=Hr$kKXdo{Wka#bGMmj|`Q&wF{kCw_- z^~Ez;C&hg?76c3xTn33!^phuo$#xB~ua^mEycb{^fdP#^EoMt__USIBJKOU()`+ST zw|X&B=jI1u_Zi*YfD-GL2~hVL`kOsOonPUX%@Es$Qhgh`M3#_>M;1BZKohn4JM{p`Rm+id>tW8hEoRRN@%`Z&16>CzN-J0y0V z_X1e^5=%w{8aJHWWSc?$c#UKAe|>T^mmAG^MWmq&%>wSq*gYP=n$7I@kUhrBqP?=Ss3boz+bfZ5H%!p zcmf2Z93akeQ_TuMAf^E+_s2NEWM?-~M8%zG)S^jg!tO`V{#+|cqw|V+!s^J%4mE!y zzs*qs(G6*lQb1>uR+_=>L{TghM?p0W(|IIs0t@an93q*guZ*Gh03AmLshP2u}@?m$qxu} z{IB3^pKL(Mi2GT@rR*w(HY`y^e3PqC4EX)ofZzWr<3`jTJ$2#?lou0Rf5Xj41)PYj zrC0|24zawAcW0PPHEwd1l-naV!K1Q}6Xi`md3H%d5vi)MHGf3<*w&pwcc|?^WYlL7 zKQ=v3w+p9Spb>Qp90_-(;Woh~MM?`g<;#oM?L>UZsKHJg1HGazYL${{N{z@3yb)j3 zsIf?kK;HvT;2jw3%Qi-lLVOo;fb)pKB%zPZg34tvK)TQ9+Xlj~Dm~8M7m%kgCfS%G z%-n&JDaw__+Q5cULngA>Y}&mV@nzX`;93L$bI{!OFr(ZZrMU=&I*;IA`-&35sRjdv zKPZR)nR`c$%&=yaZdiI6ndT5j4x8hwkbY_i3Zg8Dkk5e9Po8dJ=mzFx^nDG+#|GiB z!-IH3F0A+3kP;G<{wO{8L0ZTzo58}~lKN9{T?9BZMB<%4ksh%H04P@RC1)q_X5VMK*csLlln_0SU(2op(iL@-T)T&xhIHZ zoB)aZ_5^{;y+GnVH-yO9-^2u`hqa*-TcLjrVWX=D5g)eoLa5{2@dqsKb3>Gd5IN%; zc$~+cpix5@NYq15P>4hW2Kj9Wf$L(gz3Us<-SUX5hYBnF8{3U-=|5k^zFS(OS;&{!pDFHM?( z2PIpxwbX!N2I5;%nM$e+*5hoE7iLtHFDD2IymPeMO;NDOF_;ujhzDaq*-z?e(E5{` zcI`7_^@Lj<>9b*OI)4;-)Yt#Y#pWnw(J?e#csBL7xTS2Lq?x+=i zFsSs(Su6-Dwxn#TsLQ*l>$i1coxq5}>Ht3s?kbz9`f}9Y%}L%3erZU<3=|F=fp-xl zw$-z*CV=<7q24}YM|JaoSO&C1ovU;YD3%M@t1IEE17DL!b79L#)x4qMr{aQ7roW8y zD5csaMp{gi zc*rV@VwqB|MDZcTnBh*gYfExs!{rfnIj|te?t$c$3uz=I#qU3wJi zn^∈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 literal 0 HcmV?d00001 diff --git a/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts b/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts index 72ef8940..24de69ee 100644 --- a/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts +++ b/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts @@ -87,6 +87,7 @@ export class SolvencyBlockchainService { abi: tokenAbi, functionName: 'approve', args: [vaultAddress, BigInt(collateralAmount)], + account: wallet.account, })); await this.publicClient.waitForTransactionReceipt({ hash: approveHash }); @@ -105,6 +106,7 @@ export class SolvencyBlockchainService { tokenTypeEnum, issueOAID, ], + account: wallet.account, })); this.logger.log(`Deposit transaction submitted: ${hash}`); @@ -226,6 +228,7 @@ export class SolvencyBlockchainService { BigInt(loanDuration), BigInt(numberOfInstallments), ], + account: wallet.account, })); this.logger.log(`Borrow transaction submitted: ${hash}`); @@ -271,6 +274,7 @@ export class SolvencyBlockchainService { abi: usdcAbi, functionName: 'approve', args: [vaultAddress, BigInt(amount)], + account: wallet.account, })); await this.publicClient.waitForTransactionReceipt({ hash: approveHash }); @@ -282,6 +286,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'repayLoan', args: [BigInt(positionId), BigInt(amount)], + account: wallet.account, })); this.logger.log(`Repay transaction submitted: ${hash}`); @@ -344,6 +349,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'withdrawCollateral', args: [BigInt(positionId), BigInt(amount)], + account: wallet.account, })); this.logger.log(`Withdraw transaction submitted: ${hash}`); @@ -383,6 +389,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'liquidatePosition', args: [BigInt(positionId)], + account: wallet.account, })); this.logger.log(`Liquidation transaction submitted: ${hash}`); @@ -440,6 +447,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'settleLiquidation', args: [BigInt(positionId)], + account: wallet.account, })); const receipt = await this.publicClient.waitForTransactionReceipt({ @@ -680,6 +688,7 @@ export class SolvencyBlockchainService { abi: oaidAbi, functionName: 'registerUser', args: [userAddress as Address], + account: wallet.account, })); this.logger.log(`OAID registration transaction submitted: ${hash}`); @@ -821,6 +830,7 @@ export class SolvencyBlockchainService { abi: usdcAbi, functionName: 'approve', args: [vaultAddress, BigInt(purchaseAmountUSDC)], + account: wallet.account, })); await this.publicClient.waitForTransactionReceipt({ hash: approveHash }); @@ -831,8 +841,7 @@ export class SolvencyBlockchainService { address: vaultAddress as Address, abi: vaultAbi, functionName: 'purchaseAndSettleLiquidation', - args: [BigInt(positionId), BigInt(purchaseAmountUSDC)], - })); + args: [BigInt(positionId), BigInt(purchaseAmountUSDC)], account: wallet.account, })); this.logger.log(`Purchase and settlement transaction submitted: ${hash}`); @@ -897,6 +906,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'markMissedPayment', args: [BigInt(positionId)], + account: wallet.account, })); await this.publicClient.waitForTransactionReceipt({ hash }); @@ -918,8 +928,7 @@ export class SolvencyBlockchainService { address: vaultAddress as Address, abi: vaultAbi, functionName: 'markDefaulted', - args: [BigInt(positionId)], - })); + args: [BigInt(positionId)], account: wallet.account, })); await this.publicClient.waitForTransactionReceipt({ hash }); this.logger.log(`Position defaulted: ${hash}`); diff --git a/packages/creditcoin-contracts/.gitignore b/packages/creditcoin-contracts/.gitignore new file mode 100644 index 00000000..512343b5 --- /dev/null +++ b/packages/creditcoin-contracts/.gitignore @@ -0,0 +1,7 @@ +node_modules +dist +cache +artifacts +typechain-types +.env +deployed_contracts.json diff --git a/packages/creditcoin-contracts/contracts/core/AttestationRegistry.sol b/packages/creditcoin-contracts/contracts/core/AttestationRegistry.sol new file mode 100644 index 00000000..2648f63f --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/AttestationRegistry.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; + +contract AttestationRegistry { + using ECDSA for bytes32; + + struct AssetRecord { + bytes32 assetId; + bytes32 attestationHash; + bytes32 blobId; + address attestor; + uint48 timestamp; + bool revoked; + } + + mapping(bytes32 => AssetRecord) public assets; + mapping(address => bool) public trustedAttestors; + address public owner; + + event AssetRegistered(bytes32 indexed assetId, bytes32 blobId, bytes32 attestationHash, address attestor); + event AssetRevoked(bytes32 indexed assetId, string reason, uint256 timestamp); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor() { + owner = msg.sender; + trustedAttestors[msg.sender] = true; + } + + function addTrustedAttestor(address attestor) external onlyOwner { + trustedAttestors[attestor] = true; + } + + function registerAsset( + bytes32 assetId, + bytes32 attestationHash, + bytes32 blobId, + bytes calldata payload, + bytes calldata signature + ) external { + require(assets[assetId].timestamp == 0, "Asset already registered"); + require(keccak256(payload) == attestationHash, "Payload hash mismatch"); + + // Recover signer from hash + bytes32 ethSignedHash = MessageHashUtils.toEthSignedMessageHash(attestationHash); + address recovered = ECDSA.recover(ethSignedHash, signature); + + require(trustedAttestors[recovered], "Invalid attestor signature"); + + assets[assetId] = AssetRecord({ + assetId: assetId, + attestationHash: attestationHash, + blobId: blobId, + attestor: recovered, + timestamp: uint48(block.timestamp), + revoked: false + }); + + emit AssetRegistered(assetId, blobId, attestationHash, recovered); + } + + function revokeAsset(bytes32 assetId, string calldata reason) external onlyOwner { + require(assets[assetId].timestamp > 0, "Asset not found"); + assets[assetId].revoked = true; + emit AssetRevoked(assetId, reason, block.timestamp); + } + + function isAssetValid(bytes32 assetId) external view returns (bool) { + return assets[assetId].timestamp > 0 && !assets[assetId].revoked; + } +} diff --git a/packages/creditcoin-contracts/contracts/core/CTCLeverageVault.sol b/packages/creditcoin-contracts/contracts/core/CTCLeverageVault.sol new file mode 100644 index 00000000..d9b27413 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/CTCLeverageVault.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +interface ISeniorPool { + function borrow(uint256 positionId, uint256 amount) external; + function repay(uint256 positionId, uint256 amount) external returns (uint256 principal, uint256 interest); + function getOutstandingDebt(uint256 positionId) external view returns (uint256); + function getAccruedInterest(uint256 positionId) external view returns (uint256); +} + +interface ICTCDEXIntegration { + function swapCTCToUSDC(uint256 ctcAmount, uint256 ctcPriceUSD) external returns (uint256); +} + +interface IPrimaryMarket { + function buyTokens(bytes32 assetId, uint256 amount) external; +} + +/** + * @title CTCLeverageVault + * @notice Core vault for managing leveraged RWA token purchases using CTC collateral on Credit Coin + */ +contract CTCLeverageVault is Ownable, ReentrancyGuard { + IERC20 public ctc; + IERC20 public usdc; + address public seniorPool; + address public ctcDexIntegration; + address public yieldVault; + address public primaryMarket; + + struct Position { + address user; + uint256 ctcCollateral; + uint256 usdcBorrowed; + address rwaToken; + uint256 rwaTokenAmount; + string assetId; + uint256 createdAt; + uint256 lastHarvestTime; + uint256 totalInterestPaid; + uint256 liquidatedAt; + bool active; + bool inLiquidation; + } + + mapping(uint256 => Position) public positions; + uint256 public nextPositionId; + + uint256 public constant LIQUIDATION_THRESHOLD = 11500; // 115% + uint256 public constant INITIAL_LTV = 15000; // 150% + uint256 public constant BASIS_POINTS = 10000; + + event PositionCreated(uint256 indexed positionId, address indexed user, uint256 ctcCollateral, uint256 usdcBorrowed); + event YieldHarvested(uint256 indexed positionId, uint256 ctcSwapped, uint256 usdcReceived, uint256 interestPaid); + + constructor( + address _ctc, + address _usdc, + address _seniorPool, + address _ctcDexIntegration + ) Ownable(msg.sender) { + ctc = IERC20(_ctc); + usdc = IERC20(_usdc); + seniorPool = _seniorPool; + ctcDexIntegration = _ctcDexIntegration; + nextPositionId = 1; + } + + function setYieldVault(address _yieldVault) external onlyOwner { + yieldVault = _yieldVault; + } + + function setPrimaryMarket(address _primaryMarket) external onlyOwner { + primaryMarket = _primaryMarket; + } + + function createPosition( + address user, + uint256 ctcAmount, + uint256 usdcToBorrow, + address rwaToken, + uint256 rwaTokenAmount, + string memory assetId, + bytes32 assetIdBytes, + uint256 ctcPriceUSD + ) external onlyOwner nonReentrant returns (uint256 positionId) { + uint256 collateralValueUSD = (ctcAmount * ctcPriceUSD) / 1e30; + uint256 requiredCollateral = (usdcToBorrow * INITIAL_LTV) / BASIS_POINTS; + require(collateralValueUSD >= requiredCollateral, "Insufficient collateral"); + + require(ctc.transferFrom(user, address(this), ctcAmount), "CTC transfer failed"); + ISeniorPool(seniorPool).borrow(nextPositionId, usdcToBorrow); + + usdc.approve(primaryMarket, usdcToBorrow); + IPrimaryMarket(primaryMarket).buyTokens(assetIdBytes, rwaTokenAmount); + + positionId = nextPositionId++; + positions[positionId] = Position({ + user: user, + ctcCollateral: ctcAmount, + usdcBorrowed: usdcToBorrow, + rwaToken: rwaToken, + rwaTokenAmount: rwaTokenAmount, + assetId: assetId, + createdAt: block.timestamp, + lastHarvestTime: block.timestamp, + totalInterestPaid: 0, + liquidatedAt: 0, + active: true, + inLiquidation: false + }); + + emit PositionCreated(positionId, user, ctcAmount, usdcToBorrow); + } + + function harvestYield( + uint256 positionId, + uint256 ctcPriceUSD + ) external onlyOwner nonReentrant returns (uint256 ctcSwapped, uint256 usdcReceived, uint256 interestPaid) { + Position storage position = positions[positionId]; + uint256 outstandingInterest = ISeniorPool(seniorPool).getAccruedInterest(positionId); + require(outstandingInterest > 0, "No interest"); + + ctcSwapped = (outstandingInterest * 1e30) / ctcPriceUSD; + require(ctcSwapped <= position.ctcCollateral, "Insufficient collateral"); + + ctc.approve(ctcDexIntegration, ctcSwapped); + usdcReceived = ICTCDEXIntegration(ctcDexIntegration).swapCTCToUSDC(ctcSwapped, ctcPriceUSD); + + interestPaid = usdcReceived > outstandingInterest ? outstandingInterest : usdcReceived; + usdc.approve(seniorPool, interestPaid); + ISeniorPool(seniorPool).repay(positionId, interestPaid); + + position.ctcCollateral -= ctcSwapped; + position.totalInterestPaid += interestPaid; + position.lastHarvestTime = block.timestamp; + + emit YieldHarvested(positionId, ctcSwapped, usdcReceived, interestPaid); + } + + function getHealthFactor(uint256 positionId, uint256 ctcPriceUSD) public view returns (uint256) { + Position memory position = positions[positionId]; + if (!position.active) return 0; + uint256 collateralValueUSD = (position.ctcCollateral * ctcPriceUSD) / 1e30; + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + if (outstandingDebt == 0) return type(uint256).max; + return (collateralValueUSD * BASIS_POINTS) / outstandingDebt; + } +} diff --git a/packages/creditcoin-contracts/contracts/core/ComplianceModule.sol b/packages/creditcoin-contracts/contracts/core/ComplianceModule.sol new file mode 100644 index 00000000..6e133c33 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/ComplianceModule.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./IdentityRegistry.sol"; +import "./AttestationRegistry.sol"; + +contract ComplianceModule { + IdentityRegistry public identityRegistry; + AttestationRegistry public attestationRegistry; + bytes32 public assetId; + address public owner; + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor( + address _identityRegistry, + address _attestationRegistry, + bytes32 _assetId + ) { + owner = msg.sender; + identityRegistry = IdentityRegistry(_identityRegistry); + attestationRegistry = AttestationRegistry(_attestationRegistry); + assetId = _assetId; + } + + function canTransfer(address from, address to, uint256 /* amount */) external view returns (bool) { + // 1. Check Sender KYC (unless minting/burning) + if (from != address(0)) { + if (!identityRegistry.isVerified(from)) return false; + } + + // 2. Check Receiver KYC (unless burning) + if (to != address(0)) { + if (!identityRegistry.isVerified(to)) return false; + } + + // 3. Check Asset Validity + if (!attestationRegistry.isAssetValid(assetId)) return false; + + return true; + } + + function setIdentityRegistry(address _identityRegistry) external onlyOwner { + identityRegistry = IdentityRegistry(_identityRegistry); + } + + function setAttestationRegistry(address _attestationRegistry) external onlyOwner { + attestationRegistry = AttestationRegistry(_attestationRegistry); + } +} diff --git a/packages/creditcoin-contracts/contracts/core/IdentityRegistry.sol b/packages/creditcoin-contracts/contracts/core/IdentityRegistry.sol new file mode 100644 index 00000000..d103d350 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/IdentityRegistry.sol @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./TrustedIssuersRegistry.sol"; + +contract IdentityRegistry { + struct Identity { + bool exists; + bool isVerified; + uint256 kycTimestamp; + address wallet; + } + + mapping(address => Identity) public identities; + TrustedIssuersRegistry public trustedIssuersRegistry; + address public owner; + + event IdentityRegistered(address indexed wallet, uint256 timestamp); + event IdentityRemoved(address indexed wallet, uint256 timestamp); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + modifier onlyTrustedIssuer() { + require(trustedIssuersRegistry.isTrustedIssuer(msg.sender) || msg.sender == owner, "Only trusted issuer"); + _; + } + + constructor(address _trustedIssuersRegistry) { + owner = msg.sender; + trustedIssuersRegistry = TrustedIssuersRegistry(_trustedIssuersRegistry); + } + + function updateTrustedIssuersRegistry(address _newRegistry) external onlyOwner { + trustedIssuersRegistry = TrustedIssuersRegistry(_newRegistry); + } + + function registerIdentity(address wallet) external onlyTrustedIssuer { + identities[wallet] = Identity({ + exists: true, + isVerified: true, + kycTimestamp: block.timestamp, + wallet: wallet + }); + emit IdentityRegistered(wallet, block.timestamp); + } + + function removeIdentity(address wallet) external onlyTrustedIssuer { + require(identities[wallet].exists, "Identity does not exist"); + identities[wallet].isVerified = false; + emit IdentityRemoved(wallet, block.timestamp); + } + + function batchRegisterIdentity(address[] calldata wallets) external onlyTrustedIssuer { + for (uint256 i = 0; i < wallets.length; i++) { + identities[wallets[i]] = Identity({ + exists: true, + isVerified: true, + kycTimestamp: block.timestamp, + wallet: wallets[i] + }); + emit IdentityRegistered(wallets[i], block.timestamp); + } + } + + function isVerified(address wallet) external view returns (bool) { + return identities[wallet].isVerified; + } + + function getIdentity(address wallet) external view returns (Identity memory) { + return identities[wallet]; + } +} diff --git a/packages/creditcoin-contracts/contracts/core/PrivateAssetToken.sol b/packages/creditcoin-contracts/contracts/core/PrivateAssetToken.sol new file mode 100644 index 00000000..0f25e4d6 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/PrivateAssetToken.sol @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./RWAToken.sol"; + +/** + * @title PrivateAssetToken + * @notice ERC-20 token representing physical/private assets (deeds, bonds, invoices, equipment) + * @dev Extends RWAToken with additional metadata for private asset tracking + * + * Features: + * - Inherits compliance and KYC from RWAToken + * - Additional metadata: asset type, location, valuation, documents + * - Platform mints 1 token = 1 physical asset + * - Admin can update valuation with timestamp + * - Document hash for off-chain verification (IPFS) + */ +contract PrivateAssetToken is RWAToken { + // Asset metadata + struct AssetMetadata { + string assetType; // "DEED", "BOND", "INVOICE", "EQUIPMENT", etc. + string location; // Physical location/jurisdiction + uint256 valuation; // USD value (6 decimals, e.g., 50000000000 = $50k) + uint256 valuationDate; // Timestamp of last valuation + string documentHash; // IPFS hash for legal documents + bool isActive; // Asset status + } + + AssetMetadata public metadata; + + // Valuation history + struct ValuationRecord { + uint256 valuation; + uint256 timestamp; + address updatedBy; + } + + ValuationRecord[] public valuationHistory; + + // Events + event MetadataUpdated( + string assetType, + string location, + string documentHash + ); + event ValuationUpdated( + uint256 oldValuation, + uint256 newValuation, + uint256 timestamp, + address updatedBy + ); + event AssetStatusChanged(bool isActive); + + /** + * @notice Deploy PrivateAssetToken + * @param _assetId Unique asset identifier (bytes32) + * @param _compliance ComplianceModule address + * @param _identityRegistry IdentityRegistry address + * @param _totalSupply Total token supply (usually 1e18 for whole asset) + * @param _platformCustody Platform custody address + * @param _name Token name (e.g., "Property Deed #123") + * @param _symbol Token symbol (e.g., "DEED123") + * @param _issuer Issuer address + * @param _assetType Asset type string + * @param _location Physical location + * @param _valuation Initial USD valuation (6 decimals) + * @param _documentHash IPFS hash + */ + constructor( + bytes32 _assetId, + address _compliance, + address _identityRegistry, + uint256 _totalSupply, + address _platformCustody, + string memory _name, + string memory _symbol, + address _issuer, + string memory _assetType, + string memory _location, + uint256 _valuation, + string memory _documentHash + ) RWAToken( + _assetId, + _compliance, + _identityRegistry, + _totalSupply, + _platformCustody, + _name, + _symbol, + _issuer + ) { + require(_valuation > 0, "Valuation must be > 0"); + + metadata = AssetMetadata({ + assetType: _assetType, + location: _location, + valuation: _valuation, + valuationDate: block.timestamp, + documentHash: _documentHash, + isActive: true + }); + + // Record initial valuation + valuationHistory.push(ValuationRecord({ + valuation: _valuation, + timestamp: block.timestamp, + updatedBy: msg.sender + })); + + emit MetadataUpdated(_assetType, _location, _documentHash); + emit ValuationUpdated(0, _valuation, block.timestamp, msg.sender); + } + + /** + * @notice Update asset metadata + * @param _assetType New asset type + * @param _location New location + * @param _documentHash New document hash + */ + function updateMetadata( + string memory _assetType, + string memory _location, + string memory _documentHash + ) external onlyOwner { + metadata.assetType = _assetType; + metadata.location = _location; + metadata.documentHash = _documentHash; + + emit MetadataUpdated(_assetType, _location, _documentHash); + } + + /** + * @notice Update asset valuation + * @param _newValuation New USD valuation (6 decimals) + */ + function updateValuation(uint256 _newValuation) external onlyOwner { + require(_newValuation > 0, "Valuation must be > 0"); + + uint256 oldValuation = metadata.valuation; + metadata.valuation = _newValuation; + metadata.valuationDate = block.timestamp; + + // Record in history + valuationHistory.push(ValuationRecord({ + valuation: _newValuation, + timestamp: block.timestamp, + updatedBy: msg.sender + })); + + emit ValuationUpdated(oldValuation, _newValuation, block.timestamp, msg.sender); + } + + /** + * @notice Set asset active status + * @param _isActive New status + */ + function setActive(bool _isActive) external onlyOwner { + metadata.isActive = _isActive; + emit AssetStatusChanged(_isActive); + } + + /** + * @notice Get current valuation + * @return Valuation in USD (6 decimals) + */ + function getValuation() external view returns (uint256) { + return metadata.valuation; + } + + /** + * @notice Get valuation history count + * @return Number of valuation updates + */ + function getValuationHistoryCount() external view returns (uint256) { + return valuationHistory.length; + } + + /** + * @notice Get valuation record by index + * @param index History index + * @return ValuationRecord struct + */ + function getValuationRecord(uint256 index) external view returns (ValuationRecord memory) { + require(index < valuationHistory.length, "Index out of bounds"); + return valuationHistory[index]; + } + + /** + * @notice Get complete asset metadata + * @return AssetMetadata struct + */ + function getMetadata() external view returns (AssetMetadata memory) { + return metadata; + } +} diff --git a/packages/creditcoin-contracts/contracts/core/RWAToken.sol b/packages/creditcoin-contracts/contracts/core/RWAToken.sol new file mode 100644 index 00000000..9f5585c7 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/RWAToken.sol @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; +import "./ComplianceModule.sol"; + +contract RWAToken is ERC20, ERC20Burnable { + bytes32 public assetId; + ComplianceModule public compliance; + address public identityRegistry; + address public issuer; + address public owner; + bool public paused; + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + modifier whenNotPaused() { + require(!paused, "Token paused"); + _; + } + + constructor( + bytes32 _assetId, + address _compliance, + address _identityRegistry, + uint256 _totalSupply, + address _platformCustody, + string memory _name, + string memory _symbol, + address _issuer + ) ERC20(_name, _symbol) { + owner = msg.sender; + assetId = _assetId; + compliance = ComplianceModule(_compliance); + identityRegistry = _identityRegistry; + issuer = _issuer; + + _mint(_platformCustody, _totalSupply); + } + + function _update(address from, address to, uint256 amount) internal virtual override { + if (!paused && from != address(0) && to != address(0)) { + require(compliance.canTransfer(from, to, amount), "Compliance check failed"); + } + super._update(from, to, amount); + } + + function forcedTransfer(address from, address to, uint256 amount) external onlyOwner { + _transfer(from, to, amount); + } + + function setPaused(bool _paused) external onlyOwner { + paused = _paused; + } + + function setCompliance(address _compliance) external onlyOwner { + compliance = ComplianceModule(_compliance); + } +} diff --git a/packages/creditcoin-contracts/contracts/core/SeniorPool.sol b/packages/creditcoin-contracts/contracts/core/SeniorPool.sol new file mode 100644 index 00000000..89edeb75 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/SeniorPool.sol @@ -0,0 +1,324 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +/** + * @title SeniorPool + * @notice USDC lending pool for leverage positions at 5% APR + * @dev Provides USDC loans to LeverageVault for investor leverage purchases + * + * Features: + * - USDC deposits from liquidity providers + * - Loans with 5% APR interest accrual + * - Liquidity reserve requirements (20-30%) + * - Debt ceiling per position ($100k max) + * - Interest compounding for demo mode + */ +contract SeniorPool is Ownable, ReentrancyGuard { + IERC20 public usdc; + address public leverageVault; + address public solvencyVault; + + // Pool parameters + uint256 public constant APR = 500; // 5% APR (basis points) + uint256 public constant BASIS_POINTS = 10000; + uint256 public constant DEBT_CEILING = 100_000 * 1e6; // $100k per position (USDC 6 decimals) + uint256 public constant RESERVE_RATIO = 2000; // 20% reserve requirement (basis points) + + // Pool state + uint256 public totalLiquidity; // Total USDC deposited + uint256 public totalBorrowed; // Total USDC currently borrowed + uint256 public totalInterestEarned; // Cumulative interest earned + + // Loan tracking + struct Loan { + uint256 principal; // Original loan amount + uint256 interestAccrued; // Accumulated interest + uint256 lastUpdateTime; // Last interest calculation timestamp + bool active; // Loan status + } + + mapping(uint256 => Loan) public loans; // positionId => Loan + + // Demo mode for accelerated time + bool public demoMode; + uint256 public timeMultiplier; // e.g., 360 for 360x acceleration + + // Events + event LiquidityDeposited(address indexed depositor, uint256 amount); + event LiquidityWithdrawn(address indexed withdrawer, uint256 amount); + event LoanIssued(uint256 indexed positionId, uint256 amount); + event LoanRepaid(uint256 indexed positionId, uint256 principal, uint256 interest); + event InterestAccrued(uint256 indexed positionId, uint256 interest); + event DemoModeUpdated(bool enabled, uint256 multiplier); + + modifier onlyAuthorizedVault() { + require( + msg.sender == leverageVault || msg.sender == solvencyVault, + "Only authorized vault" + ); + _; + } + + /** + * @notice Initialize Senior Pool + * @param _usdc USDC token address + */ + constructor(address _usdc) Ownable(msg.sender) { + usdc = IERC20(_usdc); + demoMode = false; + timeMultiplier = 1; + } + + /** + * @notice Set LeverageVault address (one-time) + * @param _leverageVault LeverageVault contract address + */ + function setLeverageVault(address _leverageVault) external onlyOwner { + require(leverageVault == address(0), "LeverageVault already set"); + require(_leverageVault != address(0), "Invalid address"); + leverageVault = _leverageVault; + } + + /** + * @notice Set SolvencyVault address (one-time) + * @param _solvencyVault SolvencyVault contract address + */ + function setSolvencyVault(address _solvencyVault) external onlyOwner { + require(solvencyVault == address(0), "SolvencyVault already set"); + require(_solvencyVault != address(0), "Invalid address"); + solvencyVault = _solvencyVault; + } + + /** + * @notice Enable/disable demo mode for time acceleration + * @param _enabled Enable demo mode + * @param _multiplier Time multiplier (e.g., 360 for 360x) + */ + function setDemoMode(bool _enabled, uint256 _multiplier) external onlyOwner { + require(_multiplier > 0, "Multiplier must be > 0"); + demoMode = _enabled; + timeMultiplier = _multiplier; + emit DemoModeUpdated(_enabled, _multiplier); + } + + /** + * @notice Deposit USDC liquidity into pool + * @param amount Amount of USDC to deposit (6 decimals) + */ + function depositLiquidity(uint256 amount) external nonReentrant { + require(amount > 0, "Amount must be > 0"); + + require( + usdc.transferFrom(msg.sender, address(this), amount), + "USDC transfer failed" + ); + + totalLiquidity += amount; + emit LiquidityDeposited(msg.sender, amount); + } + + /** + * @notice Withdraw USDC liquidity from pool + * @param amount Amount of USDC to withdraw (6 decimals) + */ + function withdrawLiquidity(uint256 amount) external onlyOwner nonReentrant { + require(amount > 0, "Amount must be > 0"); + require(amount <= getAvailableLiquidity(), "Insufficient available liquidity"); + + totalLiquidity -= amount; + require(usdc.transfer(msg.sender, amount), "USDC transfer failed"); + + emit LiquidityWithdrawn(msg.sender, amount); + } + + /** + * @notice Borrow USDC for leverage position + * @param positionId Unique position identifier + * @param amount Amount to borrow (6 decimals) + */ + function borrow(uint256 positionId, uint256 amount) external onlyAuthorizedVault nonReentrant { + require(amount > 0, "Amount must be > 0"); + require(amount <= DEBT_CEILING, "Exceeds debt ceiling"); + // Removed restriction: Users can open multiple positions + // require(!loans[positionId].active, "Loan already exists"); + require(amount <= getAvailableLiquidity(), "Insufficient liquidity"); + + // Create loan (or overwrite if exists - each position should have unique ID anyway) + loans[positionId] = Loan({ + principal: amount, + interestAccrued: 0, + lastUpdateTime: block.timestamp, + active: true + }); + + totalBorrowed += amount; + + // Transfer USDC to calling vault + require(usdc.transfer(msg.sender, amount), "USDC transfer failed"); + + emit LoanIssued(positionId, amount); + } + + /** + * @notice Repay loan (principal + interest) + * @param positionId Position identifier + * @param amount Amount to repay (6 decimals) + * @return principal Principal repaid + * @return interest Interest repaid + */ + function repay( + uint256 positionId, + uint256 amount + ) external onlyAuthorizedVault nonReentrant returns (uint256 principal, uint256 interest) { + require(loans[positionId].active, "Loan not active"); + + // Update interest before repayment + Loan storage loan = loans[positionId]; + uint256 totalOwed = loan.principal + loan.interestAccrued; + require(amount <= totalOwed, "Amount exceeds debt"); + + + // Calculate principal and interest portions + if (amount <= loan.interestAccrued) { + // Repaying only interest + interest = amount; + principal = 0; + loan.interestAccrued -= interest; + } else { + // Repaying interest + principal + interest = loan.interestAccrued; + principal = amount - interest; + loan.interestAccrued = 0; + loan.principal -= principal; + } + + // Update pool state + totalBorrowed -= principal; + totalInterestEarned += interest; + totalLiquidity += interest; // Interest stays in pool + + // Transfer USDC from calling vault + require( + usdc.transferFrom(msg.sender, address(this), amount), + "USDC transfer failed" + ); + + // Close loan if fully repaid + if (loan.principal == 0) { + loan.active = false; + } + + _accrueInterest(positionId); + + emit LoanRepaid(positionId, principal, interest); + } + + /** + * @notice Get outstanding debt for position (principal + accrued interest) + * @param positionId Position identifier + * @return Outstanding debt amount + */ + function getOutstandingDebt(uint256 positionId) external view returns (uint256) { + if (!loans[positionId].active) return 0; + + Loan memory loan = loans[positionId]; + uint256 pendingInterest = _calculateInterest(positionId); + return loan.principal + loan.interestAccrued + pendingInterest; + } + + /** + * @notice Get accrued interest for position + * @param positionId Position identifier + * @return Accrued interest amount + */ + function getAccruedInterest(uint256 positionId) external view returns (uint256) { + if (!loans[positionId].active) return 0; + + Loan memory loan = loans[positionId]; + uint256 pendingInterest = _calculateInterest(positionId); + return loan.interestAccrued + pendingInterest; + } + + /** + * @notice Get available liquidity for lending + * @return Available USDC amount + */ + function getAvailableLiquidity() public view returns (uint256) { + // Ensure reserve requirement is met + uint256 requiredReserve = (totalBorrowed * RESERVE_RATIO) / BASIS_POINTS; + uint256 available = totalLiquidity > totalBorrowed + ? totalLiquidity - totalBorrowed + : 0; + + return available > requiredReserve ? available - requiredReserve : 0; + } + + /** + * @notice Accrue interest for a loan + * @param positionId Position identifier + */ + function accrueInterest(uint256 positionId) external { + require(loans[positionId].active, "Loan not active"); + _accrueInterest(positionId); + } + + /** + * @notice Internal: Accrue interest for a loan + * @param positionId Position identifier + */ + function _accrueInterest(uint256 positionId) internal { + Loan storage loan = loans[positionId]; + uint256 interest = _calculateInterest(positionId); + + if (interest > 0) { + loan.interestAccrued += interest; + loan.lastUpdateTime = block.timestamp; + emit InterestAccrued(positionId, interest); + } + } + + /** + * @notice Internal: Calculate pending interest + * @param positionId Position identifier + * @return Pending interest amount + */ + function _calculateInterest(uint256 positionId) internal view returns (uint256) { + Loan memory loan = loans[positionId]; + if (!loan.active || loan.principal == 0) return 0; + + uint256 timeElapsed = block.timestamp - loan.lastUpdateTime; + + // Apply time multiplier for demo mode + if (demoMode) { + timeElapsed = timeElapsed * timeMultiplier; + } + + // Interest = (principal * APR * timeElapsed) / (BASIS_POINTS * SECONDS_PER_YEAR) + // APR is in basis points (500 = 5%) + uint256 interest = (loan.principal * APR * timeElapsed) / + (BASIS_POINTS * 365 days); + + return interest; + } + + /** + * @notice Get pool statistics + * @return Total liquidity, total borrowed, available liquidity, total interest earned + */ + function getPoolStats() + external + view + returns (uint256, uint256, uint256, uint256) + { + return ( + totalLiquidity, + totalBorrowed, + getAvailableLiquidity(), + totalInterestEarned + ); + } +} diff --git a/packages/creditcoin-contracts/contracts/core/SolvencyVault.sol b/packages/creditcoin-contracts/contracts/core/SolvencyVault.sol new file mode 100644 index 00000000..94e814db --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/SolvencyVault.sol @@ -0,0 +1,840 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +// SeniorPool interface +interface ISeniorPool { + function borrow(uint256 positionId, uint256 amount) external; + + function repay( + uint256 positionId, + uint256 amount + ) external returns (uint256 principal, uint256 interest); + + function getOutstandingDebt(uint256 positionId) external view returns (uint256); + + function getAccruedInterest(uint256 positionId) external view returns (uint256); +} + +// PrimaryMarket interface for liquidation listings +interface IPrimaryMarket { + enum ListingType { STATIC, AUCTION } + + function createListing( + bytes32 assetId, + address tokenAddress, + ListingType listingType, + uint256 priceOrReserve, + uint256 duration, + uint256 totalSupply, + uint256 minInvestment + ) external; +} + +// OAID interface +interface IOAID { + function issueCreditLine( + address user, + address collateralToken, + uint256 collateralAmount, + uint256 valueUSD, + uint256 solvencyPositionId + ) external returns (uint256 creditLineId); + + function revokeCreditLine( + uint256 creditLineId, + string memory reason + ) external; + + function recordPayment( + uint256 creditLineId, + uint256 amount, + bool onTime, + uint256 daysLate + ) external; + + function recordCreditUsage( + uint256 creditLineId, + uint256 amount + ) external; + + function recordCreditRepayment( + uint256 creditLineId, + uint256 amount + ) external; +} + +// YieldVault interface +interface IYieldVault { + function claimYield(address rwaToken, uint256 tokenAmount) external returns (uint256 usdcReceived); +} + +/** + * @title SolvencyVault + * @notice Collateral vault for borrowing USDC against RWA tokens or Private Asset tokens + * @dev Supports two token types with different LTV ratios and liquidation flows + * + * Normal Flow: + * 1. User deposits RWA/PrivateAsset tokens as collateral + * 2. Vault borrows USDC from SeniorPool based on LTV (70% for RWA, 60% for Private) + * 3. If OAID enabled: Issues on-chain credit line for user + * 4. User repays loan + interest (recorded in OAID payment history) + * 5. User withdraws collateral after full repayment + * + * Liquidation Flows (health factor < 115%): + * + * RWA Token Liquidation (Invoice-backed assets): + * 1. liquidatePosition() - Marks position as liquidated, revokes OAID credit line + * 2. Wait for invoice settlement/maturity + * 3. settleLiquidation() - Burns RWA tokens for USDC yield via YieldVault + * 4. Repay debt, take 10% fee, return excess to user + * + * Private Asset Liquidation: + * 1. liquidatePosition() - Marks liquidated, revokes OAID credit line + * 2. Admin purchases collateral via purchaseAndSettleLiquidation() + * 3. Admin sends USDC, receives Private Asset tokens + * 4. Contract repays debt, takes 10% fee from excess, returns remainder to user + * (Admin can then do anything with the tokens - sell, hold, redistribute, etc.) + */ +contract SolvencyVault is Ownable, ReentrancyGuard { + // Token types + enum TokenType { + RWA, // RWA tokens from marketplace (70% LTV) + PRIVATE_ASSET // Private asset tokens (60% LTV) + } + + // Position tracking + struct Position { + address user; // Borrower address + address collateralToken; // Token address (RWA or PrivateAsset) + uint256 collateralAmount; // Token amount deposited (18 decimals) + uint256 usdcBorrowed; // USDC borrowed from SeniorPool (6 decimals) + uint256 tokenValueUSD; // Valuation at deposit time (6 decimals) + uint256 createdAt; // Position creation timestamp + uint256 liquidatedAt; // Liquidation timestamp (0 if not liquidated) + uint256 creditLineId; // OAID credit line ID (0 if not issued) + bool active; // Position status + TokenType tokenType; // RWA or PRIVATE_ASSET + } + + // External contracts + IERC20 public usdc; + address public seniorPool; + address public primaryMarket; + address public oaid; // Optional OAID integration + + // Position management + mapping(uint256 => Position) public positions; + uint256 public nextPositionId; + + // LTV and health parameters (basis points) + uint256 public constant RWA_LTV = 7000; // 70% + uint256 public constant PRIVATE_ASSET_LTV = 6000; // 60% + uint256 public constant LIQUIDATION_THRESHOLD = 11500; // 115% + uint256 public constant LIQUIDATION_FEE_BPS = 1000; // 10% liquidation fee + uint256 public constant BASIS_POINTS = 10000; + + // Liquidation tracking + mapping(uint256 => bool) public positionsInLiquidation; // positionId => liquidation status + address public yieldVault; // YieldVault contract for burning RWA tokens + + // Repayment Schedule + struct RepaymentPlan { + uint256 loanDuration; // Total duration in seconds (e.g., 90 days) + uint256 numberOfInstallments; // Total installments (e.g., 18) + uint256 installmentInterval; // Duration of each interval (seconds) + uint256 nextPaymentDue; // Timestamp of next due date + uint256 installmentsPaid; // Counter + uint256 missedPayments; // Counter for missed/late payments + bool isActive; // If plan is active + bool defaulted; // Marked as defaulted by admin + } + + mapping(uint256 => RepaymentPlan) public repaymentPlans; + + // Events + event PositionCreated( + uint256 indexed positionId, + address indexed user, + address collateralToken, + uint256 collateralAmount, + uint256 tokenValueUSD, + TokenType tokenType + ); + event USDCBorrowed( + uint256 indexed positionId, + uint256 amount, + uint256 totalDebt + ); + event RepaymentPlanCreated( + uint256 indexed positionId, + uint256 loanDuration, + uint256 numberOfInstallments, + uint256 installmentInterval, + uint256 nextPaymentDue + ); + event LoanRepaid( + uint256 indexed positionId, + uint256 amount, + uint256 principal, + uint256 interest, + uint256 remainingDebt + ); + event MissedPaymentMarked( + uint256 indexed positionId, + uint256 missedPayments + ); + event PositionDefaulted( + uint256 indexed positionId + ); + event CollateralWithdrawn( + uint256 indexed positionId, + address indexed user, + uint256 amount + ); + event PositionLiquidated( + uint256 indexed positionId, + uint256 liquidationTime + ); + event LiquidationSettled( + uint256 indexed positionId, + uint256 yieldReceived, + uint256 debtRepaid, + uint256 liquidationFee, + uint256 userRefund + ); + event OAIDCreditIssued( + uint256 indexed positionId, + uint256 creditLineId, + uint256 creditLimit + ); + event CreditLineRevoked( + uint256 indexed positionId, + uint256 indexed creditLineId, + string reason + ); + event PrivateAssetLiquidationSettled( + uint256 indexed positionId, + address indexed purchaser, + uint256 purchaseAmount, + uint256 tokensTransferred, + uint256 debtRepaid, + uint256 liquidationFee, + uint256 userRefund + ); + + /** + * @notice Initialize Solvency Vault + * @param _usdc USDC token address + * @param _seniorPool SeniorPool contract address + */ + constructor( + address _usdc, + address _seniorPool + ) Ownable(msg.sender) { + usdc = IERC20(_usdc); + seniorPool = _seniorPool; + nextPositionId = 1; + } + + /** + * @notice Set PrimaryMarket address + * @param _primaryMarket PrimaryMarket contract address + */ + function setPrimaryMarket(address _primaryMarket) external onlyOwner { + require(_primaryMarket != address(0), "Invalid address"); + primaryMarket = _primaryMarket; + } + + /** + * @notice Set OAID address (optional) + * @param _oaid OAID contract address + */ + function setOAID(address _oaid) external onlyOwner { + require(_oaid != address(0), "Invalid address"); + oaid = _oaid; + } + + /** + * @notice Set YieldVault address + * @param _yieldVault YieldVault contract address + */ + function setYieldVault(address _yieldVault) external onlyOwner { + require(_yieldVault != address(0), "Invalid address"); + yieldVault = _yieldVault; + } + + /** + * @notice Deposit collateral tokens + * @param collateralToken Token address (RWA or PrivateAsset) + * @param collateralAmount Token amount (18 decimals) + * @param tokenValueUSD Valuation in USD (6 decimals) + * @param tokenType RWA or PRIVATE_ASSET + * @param issueOAID Whether to issue OAID credit line + * @return positionId Created position ID + */ + function depositCollateral( + address collateralToken, + uint256 collateralAmount, + uint256 tokenValueUSD, + TokenType tokenType, + bool issueOAID + ) external nonReentrant returns (uint256 positionId) { + require(collateralToken != address(0), "Invalid token"); + require(collateralAmount > 0, "Amount must be > 0"); + require(tokenValueUSD > 0, "Valuation must be > 0"); + + // Transfer tokens from user to vault + require( + IERC20(collateralToken).transferFrom(msg.sender, address(this), collateralAmount), + "Token transfer failed" + ); + + // Create position + positionId = nextPositionId++; + positions[positionId] = Position({ + user: msg.sender, + collateralToken: collateralToken, + collateralAmount: collateralAmount, + usdcBorrowed: 0, + tokenValueUSD: tokenValueUSD, + createdAt: block.timestamp, + liquidatedAt: 0, + creditLineId: 0, + active: true, + tokenType: tokenType + }); + + emit PositionCreated( + positionId, + msg.sender, + collateralToken, + collateralAmount, + tokenValueUSD, + tokenType + ); + + // Issue OAID credit line if requested + if (issueOAID && oaid != address(0)) { + uint256 ltv = tokenType == TokenType.RWA ? RWA_LTV : PRIVATE_ASSET_LTV; + uint256 creditLimit = (tokenValueUSD * ltv) / BASIS_POINTS; + + uint256 creditLineId = IOAID(oaid).issueCreditLine( + msg.sender, + collateralToken, + collateralAmount, + tokenValueUSD, + positionId + ); + // Store credit line ID in position + positions[positionId].creditLineId = creditLineId; + emit OAIDCreditIssued(positionId, creditLineId, creditLimit); + } + } + + /** + * @notice Borrow USDC against collateral with repayment schedule + * @param positionId Position ID + * @param amount USDC amount to borrow (6 decimals) + * @param loanDuration Total duration of the loan in seconds + * @param numberOfInstallments Number of fixed installments + */ + function borrowUSDC( + uint256 positionId, + uint256 amount, + uint256 loanDuration, + uint256 numberOfInstallments + ) external nonReentrant { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(msg.sender == position.user, "Not position owner"); + require(amount > 0, "Amount must be > 0"); + + // Validate repayment terms + require(loanDuration > 0, "Duration must be > 0"); + require(numberOfInstallments > 0, "Installments must be > 0"); + require(loanDuration >= numberOfInstallments, "Invalid duration/installments"); + + // Ensure no existing plan for this position (or support refinancing later) + require(!repaymentPlans[positionId].isActive, "Plan already active"); + + // Calculate max borrowable amount based on LTV + uint256 ltv = position.tokenType == TokenType.RWA ? RWA_LTV : PRIVATE_ASSET_LTV; + uint256 maxBorrow = (position.tokenValueUSD * ltv) / BASIS_POINTS; + uint256 newTotalBorrowed = position.usdcBorrowed + amount; + + require(newTotalBorrowed <= maxBorrow, "Exceeds LTV limit"); + + // Calculate installment interval + uint256 installmentInterval = loanDuration / numberOfInstallments; + + // Initialize RepaymentPlan + repaymentPlans[positionId] = RepaymentPlan({ + loanDuration: loanDuration, + numberOfInstallments: numberOfInstallments, + installmentInterval: installmentInterval, + nextPaymentDue: block.timestamp + installmentInterval, + installmentsPaid: 0, + missedPayments: 0, + isActive: true, + defaulted: false + }); + + // Borrow from SeniorPool + ISeniorPool(seniorPool).borrow(positionId, amount); + + // Update position + position.usdcBorrowed += amount; + + // Record credit usage in OAID if credit line exists + if (oaid != address(0) && position.creditLineId > 0) { + IOAID(oaid).recordCreditUsage(position.creditLineId, amount); + } + + // Transfer USDC to user + require(usdc.transfer(msg.sender, amount), "USDC transfer failed"); + + emit USDCBorrowed(positionId, amount, position.usdcBorrowed); + emit RepaymentPlanCreated( + positionId, + loanDuration, + numberOfInstallments, + installmentInterval, + block.timestamp + installmentInterval + ); + } + + /** + * @notice Repay loan (principal + interest) + * @param positionId Position ID + * @param amount USDC amount to repay (6 decimals) + */ + function repayLoan(uint256 positionId, uint256 amount) external nonReentrant { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(msg.sender == position.user, "Not position owner"); + require(amount > 0, "Amount must be > 0"); + + // Transfer USDC from user + require( + usdc.transferFrom(msg.sender, address(this), amount), + "USDC transfer failed" + ); + + // Approve SeniorPool to take repayment + usdc.approve(seniorPool, amount); + + // Repay to SeniorPool + (uint256 principal, uint256 interest) = ISeniorPool(seniorPool).repay( + positionId, + amount + ); + + // Update position + position.usdcBorrowed -= principal; + + uint256 remainingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + // Update Repayment Plan + RepaymentPlan storage plan = repaymentPlans[positionId]; + + if (plan.isActive) { + // Increment installments paid + plan.installmentsPaid++; + + // If fully repaid (based on debt, not installments count, as installments are estimated) + if (remainingDebt == 0 || (plan.installmentsPaid >= plan.numberOfInstallments)) { + plan.isActive = false; + } + } + + // Record payment in OAID if credit line exists + if (oaid != address(0) && position.creditLineId > 0) { + // Reduce credit used by principal amount + if (principal > 0) { + IOAID(oaid).recordCreditRepayment(position.creditLineId, principal); + } + + IOAID(oaid).recordPayment( + position.creditLineId, + amount, + true, // Always mark as on-time here; missed payments are marked by admin + 0 + ); + } + + emit LoanRepaid(positionId, amount, principal, interest, remainingDebt); + } + + /** + * @notice Withdraw collateral (requires full loan repayment) + * @param positionId Position ID + * @param amount Token amount to withdraw (18 decimals) + */ + function withdrawCollateral(uint256 positionId, uint256 amount) external nonReentrant { + Position storage position = positions[positionId]; + // require(position.active, "Position not active"); + require(msg.sender == position.user, "Not position owner"); + require(amount > 0, "Amount must be > 0"); + require(amount <= position.collateralAmount, "Insufficient collateral"); + + // Verify no outstanding debt + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + require(outstandingDebt == 0, "Outstanding debt must be repaid"); + + // Update token valuation proportionally + uint256 oldCollateral = position.collateralAmount; + uint256 newCollateral = oldCollateral - amount; + + if (newCollateral == 0) { + position.tokenValueUSD = 0; + } else { + position.tokenValueUSD = (position.tokenValueUSD * newCollateral) / oldCollateral; + } + + // Update position + position.collateralAmount = newCollateral; + + // Close position if fully withdrawn + if (position.collateralAmount == 0) { + position.active = false; + if (repaymentPlans[positionId].isActive) { + repaymentPlans[positionId].isActive = false; + } + + // Revoke OAID credit line + if (oaid != address(0) && position.creditLineId > 0) { + IOAID(oaid).revokeCreditLine(position.creditLineId, "Collateral withdrawn"); + } + } + + // Transfer tokens to user + require( + IERC20(position.collateralToken).transfer(msg.sender, amount), + "Token transfer failed" + ); + + emit CollateralWithdrawn(positionId, msg.sender, amount); + } + + /** + * @notice Mark a missed payment (Admin only) + * @param positionId Position ID + */ + function markMissedPayment(uint256 positionId) external onlyOwner { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + + RepaymentPlan storage plan = repaymentPlans[positionId]; + require(plan.isActive, "Plan not active"); + + plan.missedPayments++; + + // Record missed payment in OAID (0 amount, onTime=false) + if (oaid != address(0) && position.creditLineId > 0) { + IOAID(oaid).recordPayment( + position.creditLineId, + 0, // amount + false, // onTime (false = missed/late) + 1 // daysLate (placeholder) + ); + } + + emit MissedPaymentMarked(positionId, plan.missedPayments); + } + + /** + * @notice Mark position as defaulted (Admin only) + * @param positionId Position ID + */ + function markDefaulted(uint256 positionId) external onlyOwner { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + + RepaymentPlan storage plan = repaymentPlans[positionId]; + require(plan.isActive, "Plan not active"); + + plan.defaulted = true; + + emit PositionDefaulted(positionId); + } + + /** + * @notice Mark position for liquidation (health < 115% OR marked defaulted) + * @param positionId Position ID + * @dev Two flows: + * - RWA tokens: Mark for liquidation, wait for invoice settlement + * - Private Assets: Mark for liquidation, admin can purchase directly + */ + function liquidatePosition( + uint256 positionId + ) external onlyOwner nonReentrant { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(!positionsInLiquidation[positionId], "Already in liquidation"); + + // Verify liquidation is necessary + // 1. Health Factor Check (< 115%) + uint256 healthFactor = getHealthFactor(positionId); + bool healthLiquidatable = healthFactor < LIQUIDATION_THRESHOLD; + + // 2. Repayment Default Check (marked by admin) + RepaymentPlan storage plan = repaymentPlans[positionId]; + bool defaultLiquidatable = plan.isActive && plan.defaulted; + + require(healthLiquidatable || defaultLiquidatable, "Position is healthy and not defaulted"); + + // Mark position as liquidated (but keep active to hold tokens) + positionsInLiquidation[positionId] = true; + position.liquidatedAt = block.timestamp; + + // Deactivate repayment plan + if (plan.isActive) { + plan.isActive = false; + } + + // Revoke OAID credit line if exists + if (oaid != address(0) && position.creditLineId > 0) { + string memory reason = healthLiquidatable + ? "Position liquidated - collateral health below threshold" + : "Position liquidated - repayment default"; + + IOAID(oaid).revokeCreditLine( + position.creditLineId, + reason + ); + + emit CreditLineRevoked( + positionId, + position.creditLineId, + reason + ); + } + + emit PositionLiquidated(positionId, block.timestamp); + } + + /** + * @notice Process liquidation settlement by burning RWA tokens for yield + * @param positionId Position ID + * @dev Called after RWA settlement - burns tokens, repays loan, takes 10% fee, returns excess + * Only for RWA token collateral + */ + function settleLiquidation( + uint256 positionId + ) external onlyOwner nonReentrant returns (uint256 yieldReceived, uint256 liquidationFee, uint256 userRefund) { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(positionsInLiquidation[positionId], "Position not liquidated"); + require(position.tokenType == TokenType.RWA, "Only for RWA tokens"); + require(yieldVault != address(0), "YieldVault not set"); + + // Approve YieldVault to burn RWA tokens + IERC20(position.collateralToken).approve(yieldVault, position.collateralAmount); + + // Get USDC balance before + uint256 balanceBefore = usdc.balanceOf(address(this)); + + // Burn RWA tokens to claim USDC yield using low-level call (no return value expected) + (bool success, ) = yieldVault.call( + abi.encodeWithSignature( + "claimYield(address,uint256)", + position.collateralToken, + position.collateralAmount + ) + ); + require(success, "YieldVault claim failed"); + + // Calculate USDC received + uint256 balanceAfter = usdc.balanceOf(address(this)); + yieldReceived = balanceAfter - balanceBefore; + require(yieldReceived > 0, "No yield received"); + + // Get outstanding debt + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + uint256 debtRepaid = 0; + + if (outstandingDebt > 0) { + // Repay as much debt as possible + uint256 repaymentAmount = yieldReceived > outstandingDebt + ? outstandingDebt + : yieldReceived; + + usdc.approve(seniorPool, repaymentAmount); + ISeniorPool(seniorPool).repay(positionId, repaymentAmount); + debtRepaid = repaymentAmount; + } + + // Calculate liquidation fee and user refund from excess + if (yieldReceived > debtRepaid) { + uint256 excess = yieldReceived - debtRepaid; + + // Calculate 10% liquidation fee + liquidationFee = (excess * LIQUIDATION_FEE_BPS) / BASIS_POINTS; + userRefund = excess - liquidationFee; + + // Transfer liquidation fee to admin (owner) + if (liquidationFee > 0) { + require( + usdc.transfer(owner(), liquidationFee), + "Fee transfer failed" + ); + } + + // Transfer remaining USDC to user + if (userRefund > 0) { + require( + usdc.transfer(position.user, userRefund), + "Refund transfer failed" + ); + } + } else { + liquidationFee = 0; + userRefund = 0; + } + + // Mark position as inactive + position.active = false; + position.collateralAmount = 0; + + emit LiquidationSettled(positionId, yieldReceived, debtRepaid, liquidationFee, userRefund); + } + + /** + * @notice Admin purchases liquidated Private Asset collateral and settles position + * @param positionId Position ID + * @param purchaseAmount USDC amount admin is paying (6 decimals) + * @dev Admin sends USDC, receives Private Asset tokens, contract settles debt and fees + * Only for Private Asset collateral that has been liquidated + */ + function purchaseAndSettleLiquidation( + uint256 positionId, + uint256 purchaseAmount + ) external onlyOwner nonReentrant returns (uint256 liquidationFee, uint256 userRefund) { + Position storage position = positions[positionId]; + require(position.active, "Position not active"); + require(positionsInLiquidation[positionId], "Position not liquidated"); + require(position.tokenType == TokenType.PRIVATE_ASSET, "Only for Private Assets"); + require(purchaseAmount > 0, "Purchase amount must be > 0"); + + // Transfer USDC from admin + require( + usdc.transferFrom(msg.sender, address(this), purchaseAmount), + "USDC transfer failed" + ); + + // Transfer Private Asset tokens to admin + require( + IERC20(position.collateralToken).transfer(msg.sender, position.collateralAmount), + "Token transfer failed" + ); + + // Get outstanding debt + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + uint256 debtRepaid = 0; + + if (outstandingDebt > 0) { + // Repay as much debt as possible + uint256 repaymentAmount = purchaseAmount > outstandingDebt + ? outstandingDebt + : purchaseAmount; + + usdc.approve(seniorPool, repaymentAmount); + ISeniorPool(seniorPool).repay(positionId, repaymentAmount); + debtRepaid = repaymentAmount; + } + + // Calculate liquidation fee and user refund from excess + if (purchaseAmount > debtRepaid) { + uint256 excess = purchaseAmount - debtRepaid; + + // Calculate 10% liquidation fee + liquidationFee = (excess * LIQUIDATION_FEE_BPS) / BASIS_POINTS; + userRefund = excess - liquidationFee; + + // Transfer liquidation fee to admin (already msg.sender/owner) + // Fee stays in contract, will be withdrawn by admin later + // Or send to a separate fee collector address + + // Transfer remaining USDC to user + if (userRefund > 0) { + require( + usdc.transfer(position.user, userRefund), + "Refund transfer failed" + ); + } + } else { + liquidationFee = 0; + userRefund = 0; + } + + // Mark position as inactive + position.active = false; + position.collateralAmount = 0; + + emit PrivateAssetLiquidationSettled( + positionId, + msg.sender, + purchaseAmount, + position.collateralAmount, + debtRepaid, + liquidationFee, + userRefund + ); + } + + /** + * @notice Get health factor for position + * @param positionId Position ID + * @return Health factor (basis points, e.g., 15000 = 150%) + */ + function getHealthFactor(uint256 positionId) public view returns (uint256) { + Position memory position = positions[positionId]; + if (!position.active) return 0; + + uint256 outstandingDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + if (outstandingDebt == 0) return type(uint256).max; + + // Health factor = (collateralValueUSD / debt) * BASIS_POINTS + return (position.tokenValueUSD * BASIS_POINTS) / outstandingDebt; + } + + /** + * @notice Get position details + * @param positionId Position ID + * @return Position struct + */ + function getPosition(uint256 positionId) external view returns (Position memory) { + return positions[positionId]; + } + + /** + * @notice Get max borrowable amount for position + * @param positionId Position ID + * @return Max USDC amount (6 decimals) + */ + function getMaxBorrow(uint256 positionId) external view returns (uint256) { + Position memory position = positions[positionId]; + if (!position.active) return 0; + + uint256 ltv = position.tokenType == TokenType.RWA ? RWA_LTV : PRIVATE_ASSET_LTV; + uint256 maxBorrow = (position.tokenValueUSD * ltv) / BASIS_POINTS; + uint256 currentDebt = ISeniorPool(seniorPool).getOutstandingDebt(positionId); + + return maxBorrow > currentDebt ? maxBorrow - currentDebt : 0; + } + + /** + * @notice Get repayment plan details + * @param positionId Position ID + * @return RepaymentPlan struct + */ + function getRepaymentPlan(uint256 positionId) external view returns (RepaymentPlan memory) { + return repaymentPlans[positionId]; + } +} diff --git a/packages/creditcoin-contracts/contracts/core/TokenFactory.sol b/packages/creditcoin-contracts/contracts/core/TokenFactory.sol new file mode 100644 index 00000000..1b43b840 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/TokenFactory.sol @@ -0,0 +1,188 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./RWAToken.sol"; +import "./PrivateAssetToken.sol"; +import "./ComplianceModule.sol"; +import "./YieldVault.sol"; +import "./AttestationRegistry.sol"; + +contract TokenFactory { + struct TokenSuite { + address token; + address compliance; + uint256 deployedAt; + uint256 totalSupply; + } + + address public attestationRegistry; + address public identityRegistry; + address public trustedIssuersRegistry; + address public platformCustody; + address public yieldVault; + address public owner; + + mapping(bytes32 => TokenSuite) public deployedTokens; + address[] public allTokens; + uint256 public tokenCount; + + event TokenSuiteDeployed(bytes32 indexed assetId, address token, address compliance, uint256 totalSupply); + event PrivateAssetTokenDeployed( + bytes32 indexed assetId, + address token, + address compliance, + uint256 totalSupply, + string assetType, + uint256 valuation + ); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor( + address _attestationRegistry, + address _identityRegistry, + address _trustedIssuersRegistry, + address _platformCustody, + address _yieldVault + ) { + owner = msg.sender; + attestationRegistry = _attestationRegistry; + identityRegistry = _identityRegistry; + trustedIssuersRegistry = _trustedIssuersRegistry; + platformCustody = _platformCustody; + yieldVault = _yieldVault; + } + + function deployTokenSuite( + bytes32 assetId, + uint256 totalSupply, + string memory name, + string memory symbol, + address issuer + ) external onlyOwner { + require(deployedTokens[assetId].token == address(0), "Asset already tokenized"); + require(AttestationRegistry(attestationRegistry).isAssetValid(assetId), "Asset not valid"); + + // 1. Deploy Compliance + ComplianceModule compliance = new ComplianceModule( + identityRegistry, + attestationRegistry, + assetId + ); + + // 2. Deploy Token + RWAToken token = new RWAToken( + assetId, + address(compliance), + identityRegistry, + totalSupply, + platformCustody, + name, + symbol, + issuer + ); + + // 3. Link Compliance (RWAToken already sets compliance, but if Compliance needed token ref, do it here) + // In this design, Compliance checks Registry directly, doesn't need token callback usually. + + // 4. Register in YieldVault + YieldVault(yieldVault).registerAsset(address(token), assetId, issuer); + + // 5. Store Suite + deployedTokens[assetId] = TokenSuite({ + token: address(token), + compliance: address(compliance), + deployedAt: block.timestamp, + totalSupply: totalSupply + }); + + allTokens.push(address(token)); + tokenCount++; + + emit TokenSuiteDeployed(assetId, address(token), address(compliance), totalSupply); + } + + /** + * @notice Deploy PrivateAssetToken suite with metadata + * @param assetId Unique asset identifier + * @param totalSupply Total token supply (usually 1e18 for whole asset) + * @param name Token name + * @param symbol Token symbol + * @param issuer Issuer address + * @param assetType Asset type ("DEED", "BOND", "INVOICE", etc.) + * @param location Physical location + * @param valuation Initial USD valuation (6 decimals) + * @param documentHash IPFS hash for documents + */ + function deployPrivateAssetTokenSuite( + bytes32 assetId, + uint256 totalSupply, + string memory name, + string memory symbol, + address issuer, + string memory assetType, + string memory location, + uint256 valuation, + string memory documentHash + ) external onlyOwner { + require(deployedTokens[assetId].token == address(0), "Asset already tokenized"); + require(valuation > 0, "Valuation must be > 0"); + + // 1. Deploy Compliance + ComplianceModule compliance = new ComplianceModule( + identityRegistry, + attestationRegistry, + assetId + ); + + // 2. Deploy PrivateAssetToken + PrivateAssetToken token = new PrivateAssetToken( + assetId, + address(compliance), + identityRegistry, + totalSupply, + platformCustody, + name, + symbol, + issuer, + assetType, + location, + valuation, + documentHash + ); + + // 3. Register in YieldVault (same as RWA tokens) + YieldVault(yieldVault).registerAsset(address(token), assetId, issuer); + + // 4. Store Suite + deployedTokens[assetId] = TokenSuite({ + token: address(token), + compliance: address(compliance), + deployedAt: block.timestamp, + totalSupply: totalSupply + }); + + allTokens.push(address(token)); + tokenCount++; + + emit PrivateAssetTokenDeployed( + assetId, + address(token), + address(compliance), + totalSupply, + assetType, + valuation + ); + } + + function getTokenByAssetId(bytes32 assetId) external view returns (TokenSuite memory) { + return deployedTokens[assetId]; + } + + function getAllTokens() external view returns (address[] memory) { + return allTokens; + } +} diff --git a/packages/creditcoin-contracts/contracts/core/TrustedIssuersRegistry.sol b/packages/creditcoin-contracts/contracts/core/TrustedIssuersRegistry.sol new file mode 100644 index 00000000..b1de70a1 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/TrustedIssuersRegistry.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +contract TrustedIssuersRegistry { + mapping(address => bool) public trustedIssuers; + address public owner; + + event TrustedIssuerAdded(address indexed issuer, uint256 timestamp); + event TrustedIssuerRemoved(address indexed issuer, uint256 timestamp); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor() { + owner = msg.sender; + } + + function addTrustedIssuer(address issuer) external onlyOwner { + trustedIssuers[issuer] = true; + emit TrustedIssuerAdded(issuer, block.timestamp); + } + + function removeTrustedIssuer(address issuer) external onlyOwner { + trustedIssuers[issuer] = false; + emit TrustedIssuerRemoved(issuer, block.timestamp); + } + + function isTrustedIssuer(address issuer) external view returns (bool) { + return trustedIssuers[issuer]; + } +} diff --git a/packages/creditcoin-contracts/contracts/core/YieldVault.sol b/packages/creditcoin-contracts/contracts/core/YieldVault.sol new file mode 100644 index 00000000..60ab068d --- /dev/null +++ b/packages/creditcoin-contracts/contracts/core/YieldVault.sol @@ -0,0 +1,235 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +interface IBurnableToken { + function burn(uint256 amount) external; + function burnFrom(address account, uint256 amount) external; + function totalSupply() external view returns (uint256); +} + +contract YieldVault { + struct AssetYield { + address tokenAddress; + bytes32 assetId; + address issuer; + uint256 totalSettlement; // Total USDC deposited for settlement (after platform fee) + uint256 totalTokenSupply; // Total RWA token supply at settlement time + uint256 totalClaimed; // Total USDC claimed by investors + uint256 totalTokensBurned; // Total RWA tokens burned during claims + uint256 settlementTimestamp; // When settlement was deposited + bool isSettled; // Whether settlement has been deposited + } + + struct UserYield { + uint256 totalClaimable; // DEPRECATED - kept for backwards compatibility + uint256 lastClaimTime; + } + + IERC20 public USDC; + address public platform; + address public factory; + + mapping(address => AssetYield) public assets; + mapping(address => UserYield) public userYields; + address[] public registeredAssets; + + event AssetRegistered(address indexed tokenAddress, bytes32 indexed assetId, address issuer); + event SettlementDeposited(address indexed tokenAddress, bytes32 indexed assetId, uint256 totalSettlement, uint256 totalTokenSupply, uint256 timestamp); + event YieldClaimed(address indexed user, address indexed tokenAddress, uint256 tokensBurned, uint256 usdcReceived, uint256 timestamp); + + // DEPRECATED EVENTS - kept for backwards compatibility + event YieldDeposited(address indexed tokenAddress, bytes32 indexed assetId, uint256 amount, uint256 timestamp); + event YieldDistributed(address indexed tokenAddress, uint256 totalAmount, uint256 holderCount, uint256 timestamp); + + modifier onlyPlatform() { + require(msg.sender == platform, "Only platform"); + _; + } + + modifier onlyFactory() { + require(msg.sender == factory, "Only factory"); + _; + } + + constructor(address _USDC, address _platform) { + USDC = IERC20(_USDC); + platform = _platform; + } + + function setFactory(address _factory) external { + require(factory == address(0), "Factory already set"); + factory = _factory; + } + + function registerAsset(address tokenAddress, bytes32 assetId, address issuer) external onlyFactory { + assets[tokenAddress].tokenAddress = tokenAddress; + assets[tokenAddress].assetId = assetId; + assets[tokenAddress].issuer = issuer; + registeredAssets.push(tokenAddress); + emit AssetRegistered(tokenAddress, assetId, issuer); + } + + /** + * @notice Deposit settlement USDC for an asset (new burn-to-claim model) + * @param tokenAddress The RWA token address + * @param totalSettlement The total USDC to distribute (after platform fee) + */ + function depositSettlement(address tokenAddress, uint256 totalSettlement) external onlyPlatform { + require(assets[tokenAddress].tokenAddress != address(0), "Asset not registered"); + require(!assets[tokenAddress].isSettled, "Settlement already deposited"); + require(totalSettlement > 0, "Settlement must be > 0"); + + // Get total token supply at settlement time + uint256 totalTokenSupply = IBurnableToken(tokenAddress).totalSupply(); + require(totalTokenSupply > 0, "Token supply is zero"); + + // Transfer USDC from platform to vault + require(USDC.transferFrom(msg.sender, address(this), totalSettlement), "USDC transfer failed"); + + // Record settlement + assets[tokenAddress].totalSettlement = totalSettlement; + assets[tokenAddress].totalTokenSupply = totalTokenSupply; + assets[tokenAddress].settlementTimestamp = block.timestamp; + assets[tokenAddress].isSettled = true; + + emit SettlementDeposited(tokenAddress, assets[tokenAddress].assetId, totalSettlement, totalTokenSupply, block.timestamp); + } + + /** + * @notice DEPRECATED: Old yield deposit function (kept for backwards compatibility) + */ + function depositYield(address tokenAddress, uint256 amount) external onlyPlatform { + require(assets[tokenAddress].tokenAddress != address(0), "Asset not registered"); + require(amount > 0, "Amount must be > 0"); + + require(USDC.transferFrom(msg.sender, address(this), amount), "Transfer failed"); + + // For backwards compatibility, treat as settlement if not yet settled + if (!assets[tokenAddress].isSettled) { + uint256 totalTokenSupply = IBurnableToken(tokenAddress).totalSupply(); + assets[tokenAddress].totalSettlement = amount; + assets[tokenAddress].totalTokenSupply = totalTokenSupply; + assets[tokenAddress].settlementTimestamp = block.timestamp; + assets[tokenAddress].isSettled = true; + } + + emit YieldDeposited(tokenAddress, assets[tokenAddress].assetId, amount, block.timestamp); + } + + /** + * @notice DEPRECATED: Old batch distribution function (kept for backwards compatibility) + */ + function distributeYieldBatch( + address tokenAddress, + address[] calldata holders, + uint256[] calldata amounts + ) external onlyPlatform { + require(holders.length == amounts.length, "Array mismatch"); + uint256 totalAmount = 0; + + for (uint256 i = 0; i < amounts.length; i++) { + totalAmount += amounts[i]; + userYields[holders[i]].totalClaimable += amounts[i]; + } + + // Note: Old accounting fields removed in new model + // This function is kept only for emergency backwards compatibility + emit YieldDistributed(tokenAddress, totalAmount, holders.length, block.timestamp); + } + + /** + * @notice Claim yield by burning RWA tokens (new burn-to-claim model) + * @param tokenAddress The RWA token address + * @param tokenAmount The amount of RWA tokens to burn and claim yield for + */ + function claimYield(address tokenAddress, uint256 tokenAmount) external { + require(assets[tokenAddress].isSettled, "Settlement not deposited yet"); + require(tokenAmount > 0, "Token amount must be > 0"); + + AssetYield storage asset = assets[tokenAddress]; + + // Calculate USDC to send: (tokenAmount / totalTokenSupply) * totalSettlement + uint256 usdcAmount = (tokenAmount * asset.totalSettlement) / asset.totalTokenSupply; + require(usdcAmount > 0, "USDC amount too small"); + + // Ensure vault has enough USDC + uint256 remainingSettlement = asset.totalSettlement - asset.totalClaimed; + require(usdcAmount <= remainingSettlement, "Insufficient USDC in vault"); + + // Burn investor's RWA tokens + IBurnableToken(tokenAddress).burnFrom(msg.sender, tokenAmount); + + // Update accounting + asset.totalClaimed += usdcAmount; + asset.totalTokensBurned += tokenAmount; + userYields[msg.sender].lastClaimTime = block.timestamp; + + // Transfer USDC to investor + require(USDC.transfer(msg.sender, usdcAmount), "USDC transfer failed"); + + emit YieldClaimed(msg.sender, tokenAddress, tokenAmount, usdcAmount, block.timestamp); + } + + /** + * @notice DEPRECATED: Old claim function (kept for backwards compatibility) + */ + function claimAllYield() external { + uint256 claimable = userYields[msg.sender].totalClaimable; + require(claimable > 0, "Nothing to claim"); + + userYields[msg.sender].totalClaimable = 0; + userYields[msg.sender].lastClaimTime = block.timestamp; + + require(USDC.transfer(msg.sender, claimable), "Transfer failed"); + + // Note: Cannot emit new YieldClaimed event format without tokenAddress + // Keep old behavior for backwards compatibility + } + + /** + * @notice Get claimable USDC for a token amount (new model) + * @param tokenAddress The RWA token address + * @param tokenAmount The amount of tokens to check + * @return The USDC amount claimable for the given token amount + */ + function getClaimableForTokens(address tokenAddress, uint256 tokenAmount) external view returns (uint256) { + if (!assets[tokenAddress].isSettled || tokenAmount == 0) { + return 0; + } + + return (tokenAmount * assets[tokenAddress].totalSettlement) / assets[tokenAddress].totalTokenSupply; + } + + /** + * @notice Get settlement info for an asset + * @param tokenAddress The RWA token address + * @return totalSettlement Total USDC deposited + * @return totalTokenSupply Total RWA token supply at settlement + * @return totalClaimed Total USDC claimed so far + * @return totalTokensBurned Total tokens burned so far + * @return yieldPerToken USDC yield per token (in 6 decimals) + */ + function getSettlementInfo(address tokenAddress) external view returns ( + uint256 totalSettlement, + uint256 totalTokenSupply, + uint256 totalClaimed, + uint256 totalTokensBurned, + uint256 yieldPerToken + ) { + AssetYield storage asset = assets[tokenAddress]; + totalSettlement = asset.totalSettlement; + totalTokenSupply = asset.totalTokenSupply; + totalClaimed = asset.totalClaimed; + totalTokensBurned = asset.totalTokensBurned; + yieldPerToken = totalTokenSupply > 0 ? (totalSettlement * 1e18) / totalTokenSupply : 0; + } + + /** + * @notice DEPRECATED: Old getUserClaimable (kept for backwards compatibility) + */ + function getUserClaimable(address user) external view returns (uint256) { + return userYields[user].totalClaimable; + } +} diff --git a/packages/creditcoin-contracts/contracts/integrations/CTCDEXIntegration.sol b/packages/creditcoin-contracts/contracts/integrations/CTCDEXIntegration.sol new file mode 100644 index 00000000..bdeaf7d6 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/integrations/CTCDEXIntegration.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +interface ICTCDEX { + function swapCTCForUSDC( + uint256 ctcAmount, + uint256 minUSDCOut + ) external returns (uint256 usdcOut); + + function getQuote(uint256 ctcAmount) external view returns (uint256); +} + +/** + * @title CTCDEXIntegration + * @notice Wrapper for Credit Coin DEX integration + */ +contract CTCDEXIntegration is Ownable, ReentrancyGuard { + IERC20 public ctc; + IERC20 public usdc; + ICTCDEX public dex; + + uint256 public constant MAX_SLIPPAGE = 300; // 3% + uint256 public constant BASIS_POINTS = 10000; + + event SwapExecuted( + uint256 indexed timestamp, + uint256 ctcAmount, + uint256 usdcReceived, + uint256 effectiveRate + ); + + constructor( + address _ctc, + address _usdc, + address _dex + ) Ownable(msg.sender) { + ctc = IERC20(_ctc); + usdc = IERC20(_usdc); + dex = ICTCDEX(_dex); + } + + function swapCTCToUSDC( + uint256 ctcAmount, + uint256 ctcPriceUSD + ) external nonReentrant returns (uint256 usdcReceived) { + require(ctcAmount > 0, "Amount must be > 0"); + + uint256 expectedUSDC = dex.getQuote(ctcAmount); + uint256 minUSDCOut = (expectedUSDC * (BASIS_POINTS - MAX_SLIPPAGE)) / BASIS_POINTS; + + require(ctc.transferFrom(msg.sender, address(this), ctcAmount), "CTC transfer failed"); + ctc.approve(address(dex), ctcAmount); + usdcReceived = dex.swapCTCForUSDC(ctcAmount, minUSDCOut); + + require(usdc.transfer(msg.sender, usdcReceived), "USDC transfer failed"); + + uint256 effectiveRate = (usdcReceived * 1e18) / ctcAmount; + emit SwapExecuted(block.timestamp, ctcAmount, usdcReceived, effectiveRate); + } +} diff --git a/packages/creditcoin-contracts/contracts/integrations/OAID.sol b/packages/creditcoin-contracts/contracts/integrations/OAID.sol new file mode 100644 index 00000000..35c26ec6 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/integrations/OAID.sol @@ -0,0 +1,542 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +/** + * @title OAID (On-chain Asset ID) + * @notice Issues credit lines backed by private asset tokens locked in SolvencyVault + * @dev External protocols can verify credit lines and extend credit based on collateral + * + * Flow: + * 1. User completes KYC → registerUser() creates OAID profile + * 2. User deposits collateral → SolvencyVault calls issueCreditLine() + * 3. External protocols query credit availability + * 4. When SolvencyVault position is liquidated, credit line is revoked + */ +contract OAID is Ownable, ReentrancyGuard { + // Payment history entry + struct PaymentRecord { + uint256 timestamp; // Payment time + uint256 amount; // Amount paid (6 decimals) + bool onTime; // Whether payment was on time + uint256 daysLate; // Days late (0 if on time) + } + + // Credit line structure + struct CreditLine { + address user; // Borrower address + address collateralToken; // Token backing the credit + uint256 collateralAmount; // Token amount (18 decimals) + uint256 creditLimit; // Max credit in USD (6 decimals) + uint256 creditUsed; // Credit utilized externally (6 decimals) + uint256 solvencyPositionId; // Reference to SolvencyVault position + uint256 issuedAt; // Creation timestamp + uint256 totalPayments; // Total number of payments made + uint256 onTimePayments; // Number of on-time payments + uint256 latePayments; // Number of late payments + uint256 totalAmountRepaid; // Total amount repaid (6 decimals) + bool liquidated; // Whether position was liquidated + uint256 liquidatedAt; // Liquidation timestamp (0 if not liquidated) + bool active; // Credit line status + } + + // Authorized vaults + address public solvencyVault; + + // User registration + mapping(address => bool) public registeredUsers; + mapping(address => uint256) public userRegistrationTime; + + // Credit line management + mapping(uint256 => CreditLine) public creditLines; + uint256 public nextCreditLineId; + + // Payment history + mapping(uint256 => PaymentRecord[]) public paymentHistory; // creditLineId => payments + + // User credit lines + mapping(address => uint256[]) public userCreditLines; + + // Events + event UserRegistered( + address indexed user, + uint256 timestamp + ); + event CreditLineIssued( + uint256 indexed creditLineId, + address indexed user, + address collateralToken, + uint256 collateralAmount, + uint256 creditLimit, + uint256 solvencyPositionId + ); + event CreditLineUpdated( + uint256 indexed creditLineId, + uint256 oldCreditLimit, + uint256 newCreditLimit + ); + event CreditUsed( + uint256 indexed creditLineId, + uint256 amount, + uint256 totalUsed + ); + event CreditRepaid( + uint256 indexed creditLineId, + uint256 amount, + uint256 remainingUsed + ); + event CreditLineRevoked( + uint256 indexed creditLineId, + string reason + ); + event PaymentRecorded( + uint256 indexed creditLineId, + address indexed user, + uint256 amount, + bool onTime, + uint256 daysLate + ); + event PositionLiquidated( + uint256 indexed creditLineId, + address indexed user, + uint256 timestamp + ); + + modifier onlySolvencyVault() { + require(msg.sender == solvencyVault, "Only SolvencyVault"); + _; + } + + /** + * @notice Initialize OAID + */ + constructor() Ownable(msg.sender) { + nextCreditLineId = 1; + } + + /** + * @notice Set SolvencyVault address (one-time) + * @param _solvencyVault SolvencyVault contract address + */ + function setSolvencyVault(address _solvencyVault) external onlyOwner { + require(solvencyVault == address(0), "SolvencyVault already set"); + require(_solvencyVault != address(0), "Invalid address"); + solvencyVault = _solvencyVault; + } + + /** + * @notice Register user (called after KYC verification) + * @param user User address to register + */ + function registerUser(address user) external onlyOwner { + require(user != address(0), "Invalid user address"); + require(!registeredUsers[user], "User already registered"); + + registeredUsers[user] = true; + userRegistrationTime[user] = block.timestamp; + + emit UserRegistered(user, block.timestamp); + } + + /** + * @notice Check if user is registered + * @param user User address + * @return bool Registration status + */ + function isUserRegistered(address user) external view returns (bool) { + return registeredUsers[user]; + } + + /** + * @notice Issue credit line backed by collateral (only for registered users) + * @param user Borrower address + * @param collateralToken Token address + * @param collateralAmount Token amount (18 decimals) + * @param valueUSD Collateral value in USD (6 decimals) + * @param solvencyPositionId SolvencyVault position ID + * @return creditLineId Created credit line ID + */ + function issueCreditLine( + address user, + address collateralToken, + uint256 collateralAmount, + uint256 valueUSD, + uint256 solvencyPositionId + ) external onlySolvencyVault nonReentrant returns (uint256 creditLineId) { + require(registeredUsers[user], "User not registered"); + require(collateralToken != address(0), "Invalid token"); + require(collateralAmount > 0, "Amount must be > 0"); + require(valueUSD > 0, "Value must be > 0"); + + // Calculate credit limit (70% of collateral value) + uint256 creditLimit = (valueUSD * 7000) / 10000; + + creditLineId = _createCreditLine( + user, + collateralToken, + collateralAmount, + creditLimit, + solvencyPositionId + ); + } + + /** + * @notice Update existing credit line when collateral value changes + * @param creditLineId Credit line ID to update + * @param newValueUSD New collateral value in USD (6 decimals) + */ + function updateCreditLine( + uint256 creditLineId, + uint256 newValueUSD + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Credit line not active"); + require(newValueUSD > 0, "Value must be > 0"); + + uint256 oldCreditLimit = creditLine.creditLimit; + uint256 newCreditLimit = (newValueUSD * 7000) / 10000; + + creditLine.creditLimit = newCreditLimit; + + emit CreditLineUpdated(creditLineId, oldCreditLimit, newCreditLimit); + } + + /** + * @notice Internal function to create credit line + */ + function _createCreditLine( + address user, + address collateralToken, + uint256 collateralAmount, + uint256 creditLimit, + uint256 solvencyPositionId + ) internal returns (uint256 creditLineId) { + // Create credit line + creditLineId = nextCreditLineId++; + creditLines[creditLineId] = CreditLine({ + user: user, + collateralToken: collateralToken, + collateralAmount: collateralAmount, + creditLimit: creditLimit, + creditUsed: 0, + solvencyPositionId: solvencyPositionId, + issuedAt: block.timestamp, + totalPayments: 0, + onTimePayments: 0, + latePayments: 0, + totalAmountRepaid: 0, + liquidated: false, + liquidatedAt: 0, + active: true + }); + + // Track user's credit lines + userCreditLines[user].push(creditLineId); + + emit CreditLineIssued( + creditLineId, + user, + collateralToken, + collateralAmount, + creditLimit, + solvencyPositionId + ); + } + + /** + * @notice Record credit usage (called by external protocols) + * @param creditLineId Credit line ID + * @param amount Amount of credit used (6 decimals) + */ + function recordCreditUsage( + uint256 creditLineId, + uint256 amount + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Credit line not active"); + require(amount > 0, "Amount must be > 0"); + + uint256 availableCredit = creditLine.creditLimit - creditLine.creditUsed; + require(amount <= availableCredit, "Exceeds available credit"); + + creditLine.creditUsed += amount; + + emit CreditUsed(creditLineId, amount, creditLine.creditUsed); + } + + /** + * @notice Record credit repayment (called by external protocols) + * @param creditLineId Credit line ID + * @param amount Amount repaid (6 decimals) + */ + function recordCreditRepayment( + uint256 creditLineId, + uint256 amount + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Credit line not active"); + require(amount > 0, "Amount must be > 0"); + require(amount <= creditLine.creditUsed, "Amount exceeds debt"); + + creditLine.creditUsed -= amount; + + emit CreditRepaid(creditLineId, amount, creditLine.creditUsed); + } + + /** + * @notice Revoke credit line (called by SolvencyVault on liquidation) + * @param creditLineId Credit line ID + * @param reason Revocation reason + */ + function revokeCreditLine( + uint256 creditLineId, + string memory reason + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Already revoked"); + + creditLine.active = false; + + // Mark as liquidated if reason contains "liquidat" + if (bytes(reason).length > 0 && _contains(reason, "liquidat")) { + creditLine.liquidated = true; + creditLine.liquidatedAt = block.timestamp; + emit PositionLiquidated(creditLineId, creditLine.user, block.timestamp); + } + + emit CreditLineRevoked(creditLineId, reason); + } + + /** + * @notice Record a payment made by user (called by SolvencyVault) + * @param creditLineId Credit line ID + * @param amount Amount paid (6 decimals) + * @param onTime Whether payment was made on time + * @param daysLate Number of days late (0 if on time) + */ + function recordPayment( + uint256 creditLineId, + uint256 amount, + bool onTime, + uint256 daysLate + ) external onlySolvencyVault nonReentrant { + CreditLine storage creditLine = creditLines[creditLineId]; + require(creditLine.active, "Credit line not active"); + // Allow amount to be 0 for missed payments (where onTime is false) + require(amount > 0 || !onTime, "Amount must be > 0 for on-time payments"); + + // Update payment statistics + creditLine.totalPayments++; + creditLine.totalAmountRepaid += amount; + + if (onTime) { + creditLine.onTimePayments++; + } else { + creditLine.latePayments++; + } + + // Store payment record + paymentHistory[creditLineId].push(PaymentRecord({ + timestamp: block.timestamp, + amount: amount, + onTime: onTime, + daysLate: daysLate + })); + + emit PaymentRecorded(creditLineId, creditLine.user, amount, onTime, daysLate); + } + + /** + * @notice Get available credit for credit line + * @param creditLineId Credit line ID + * @return Available credit in USD (6 decimals) + */ + function getAvailableCredit(uint256 creditLineId) external view returns (uint256) { + CreditLine memory creditLine = creditLines[creditLineId]; + if (!creditLine.active) return 0; + + return creditLine.creditLimit - creditLine.creditUsed; + } + + /** + * @notice Get all credit lines for user + * @param user User address + * @return Array of credit line IDs + */ + function getUserCreditLines(address user) external view returns (uint256[] memory) { + return userCreditLines[user]; + } + + /** + * @notice Get credit line details + * @param creditLineId Credit line ID + * @return CreditLine struct + */ + function getCreditLine(uint256 creditLineId) external view returns (CreditLine memory) { + return creditLines[creditLineId]; + } + + /** + * @notice Get total credit limit for user (across all active lines) + * @param user User address + * @return Total credit limit in USD (6 decimals) + */ + function getTotalCreditLimit(address user) external view returns (uint256) { + uint256 totalLimit = 0; + uint256[] memory lineIds = userCreditLines[user]; + + for (uint256 i = 0; i < lineIds.length; i++) { + CreditLine memory line = creditLines[lineIds[i]]; + if (line.active) { + totalLimit += line.creditLimit; + } + } + + return totalLimit; + } + + /** + * @notice Get total available credit for user + * @param user User address + * @return Total available credit in USD (6 decimals) + */ + function getTotalAvailableCredit(address user) external view returns (uint256) { + uint256 totalAvailable = 0; + uint256[] memory lineIds = userCreditLines[user]; + + for (uint256 i = 0; i < lineIds.length; i++) { + CreditLine memory line = creditLines[lineIds[i]]; + if (line.active) { + totalAvailable += (line.creditLimit - line.creditUsed); + } + } + + return totalAvailable; + } + + /** + * @notice Get payment history for a credit line + * @param creditLineId Credit line ID + * @return Array of payment records + */ + function getPaymentHistory(uint256 creditLineId) external view returns (PaymentRecord[] memory) { + return paymentHistory[creditLineId]; + } + + /** + * @notice Calculate credit score for user (0-1000) + * @param user User address + * @return Credit score based on payment history + */ + function getCreditScore(address user) external view returns (uint256) { + uint256[] memory lineIds = userCreditLines[user]; + if (lineIds.length == 0) return 0; + + uint256 totalPayments = 0; + uint256 totalOnTime = 0; + uint256 totalLiquidations = 0; + + for (uint256 i = 0; i < lineIds.length; i++) { + CreditLine memory line = creditLines[lineIds[i]]; + totalPayments += line.totalPayments; + totalOnTime += line.onTimePayments; + if (line.liquidated) { + totalLiquidations++; + } + } + + // No payment history = neutral score of 500 + if (totalPayments == 0) return 500; + + // Base score from payment ratio (0-800 points) + uint256 paymentScore = (totalOnTime * 800) / totalPayments; + + // Penalty for liquidations (-200 points per liquidation, max -400) + uint256 liquidationPenalty = totalLiquidations * 200; + if (liquidationPenalty > 400) liquidationPenalty = 400; + + // Bonus for high number of on-time payments (up to +200 points) + uint256 volumeBonus = totalOnTime > 10 ? 200 : (totalOnTime * 20); + + // Calculate final score (0-1000) + uint256 score = paymentScore + volumeBonus; + if (score > liquidationPenalty) { + score -= liquidationPenalty; + } else { + score = 0; + } + + if (score > 1000) score = 1000; + + return score; + } + + /** + * @notice Get credit profile summary for user + * @param user User address + * @return activeCreditLines Number of active credit lines + * @return totalCreditLimit Total credit limit + * @return totalPayments Total payments made + * @return onTimePayments On-time payments + * @return latePayments Late payments + * @return liquidations Number of liquidated positions + * @return creditScore Credit score (0-1000) + */ + function getCreditProfile(address user) external view returns ( + uint256 activeCreditLines, + uint256 totalCreditLimit, + uint256 totalPayments, + uint256 onTimePayments, + uint256 latePayments, + uint256 liquidations, + uint256 creditScore + ) { + uint256[] memory lineIds = userCreditLines[user]; + + for (uint256 i = 0; i < lineIds.length; i++) { + CreditLine memory line = creditLines[lineIds[i]]; + if (line.active) { + activeCreditLines++; + totalCreditLimit += line.creditLimit; + } + totalPayments += line.totalPayments; + onTimePayments += line.onTimePayments; + latePayments += line.latePayments; + if (line.liquidated) { + liquidations++; + } + } + + // Calculate credit score + creditScore = this.getCreditScore(user); + } + + /** + * @notice Helper function to check if string contains substring + * @param str String to search in + * @param substr Substring to search for + * @return bool Whether substring is found + */ + function _contains(string memory str, string memory substr) internal pure returns (bool) { + bytes memory strBytes = bytes(str); + bytes memory substrBytes = bytes(substr); + + if (substrBytes.length > strBytes.length) return false; + if (substrBytes.length == 0) return false; + + for (uint256 i = 0; i <= strBytes.length - substrBytes.length; i++) { + bool found = true; + for (uint256 j = 0; j < substrBytes.length; j++) { + if (strBytes[i + j] != substrBytes[j]) { + found = false; + break; + } + } + if (found) return true; + } + + return false; + } +} \ No newline at end of file diff --git a/packages/creditcoin-contracts/contracts/libraries/MerkleProof.sol b/packages/creditcoin-contracts/contracts/libraries/MerkleProof.sol new file mode 100644 index 00000000..6f2544ed --- /dev/null +++ b/packages/creditcoin-contracts/contracts/libraries/MerkleProof.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +library MerkleProof { + // Placeholder +} diff --git a/packages/creditcoin-contracts/contracts/libraries/SignatureVerification.sol b/packages/creditcoin-contracts/contracts/libraries/SignatureVerification.sol new file mode 100644 index 00000000..3c32aa89 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/libraries/SignatureVerification.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +library SignatureVerification { + // Placeholder +} diff --git a/packages/creditcoin-contracts/contracts/marketplace/PrimaryMarket.sol b/packages/creditcoin-contracts/contracts/marketplace/PrimaryMarket.sol new file mode 100644 index 00000000..aef4790d --- /dev/null +++ b/packages/creditcoin-contracts/contracts/marketplace/PrimaryMarket.sol @@ -0,0 +1,244 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "../core/RWAToken.sol"; +import "../core/IdentityRegistry.sol"; + +contract PrimaryMarket { + enum ListingType { STATIC, AUCTION } + enum AuctionPhase { BIDDING, ENDED } + + struct Bid { + address bidder; + uint256 tokenAmount; + uint256 price; // Limit price per token + uint256 usdcDeposited; + bool settled; + } + + struct Listing { + address tokenAddress; + bytes32 assetId; + ListingType listingType; + // Static params + uint256 staticPrice; + // Auction params + uint256 minPrice; // Minimum bid price (lower bound of range) + uint256 reservePrice; // Reserve price (avg of min/max, used for clearing) + uint256 endTime; + uint256 clearingPrice; // Set when auction ends + AuctionPhase auctionPhase; + // Common params + uint256 totalSupply; + uint256 sold; // For static: amount sold. For auction: tokens allocated. + bool active; + uint256 minInvestment; + } + + // AssetId => Listing + mapping(bytes32 => Listing) public listings; + // AssetId => Array of Bids + mapping(bytes32 => Bid[]) public bids; + + address public platformCustody; + IERC20 public USDC; + address public factory; + address public owner; + + // Authorized vaults for creating liquidation listings + mapping(address => bool) public authorizedVaults; + + event ListingCreated(bytes32 indexed assetId, address tokenAddress, ListingType listingType, uint256 priceOrReserve); + event TokensPurchased(bytes32 indexed assetId, address indexed buyer, uint256 amount, uint256 price, uint256 totalPayment); + event BidSubmitted(bytes32 indexed assetId, address indexed bidder, uint256 tokenAmount, uint256 price, uint256 bidIndex); + event AuctionEnded(bytes32 indexed assetId, uint256 clearingPrice, uint256 totalTokensSold); + event BidSettled(bytes32 indexed assetId, address indexed bidder, uint256 tokensReceived, uint256 cost, uint256 refund); + event VaultAuthorized(address indexed vault, bool authorized); + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + modifier onlyOwnerOrAuthorizedVault() { + require( + msg.sender == owner || authorizedVaults[msg.sender], + "Only owner or authorized vault" + ); + _; + } + + constructor(address _factory, address _platformCustody, address _USDC) { + owner = msg.sender; + factory = _factory; + platformCustody = _platformCustody; + USDC = IERC20(_USDC); + } + + /** + * @notice Authorize or deauthorize vault for creating listings + * @param vault Vault address + * @param authorized Authorization status + */ + function authorizeVault(address vault, bool authorized) external onlyOwner { + require(vault != address(0), "Invalid vault address"); + authorizedVaults[vault] = authorized; + emit VaultAuthorized(vault, authorized); + } + + function createListing( + bytes32 assetId, + address tokenAddress, + ListingType listingType, + uint256 priceOrReserve, + uint256 minPrice, + uint256 duration, + uint256 totalSupply, + uint256 minInvestment + ) external onlyOwnerOrAuthorizedVault { + require(!listings[assetId].active, "Already listed"); + + Listing storage newListing = listings[assetId]; + newListing.tokenAddress = tokenAddress; + newListing.assetId = assetId; + newListing.listingType = listingType; + newListing.totalSupply = totalSupply; + newListing.active = true; + newListing.minInvestment = minInvestment; + + if (listingType == ListingType.STATIC) { + newListing.staticPrice = priceOrReserve; + } else { + newListing.minPrice = minPrice; + newListing.reservePrice = priceOrReserve; + newListing.endTime = block.timestamp + duration; + newListing.auctionPhase = AuctionPhase.BIDDING; + } + + emit ListingCreated(assetId, tokenAddress, listingType, priceOrReserve); + } + + // --- STATIC LISTING FUNCTIONS --- + + function buyTokens(bytes32 assetId, uint256 amount) external { + Listing storage listing = listings[assetId]; + require(listing.active, "Listing not active"); + require(listing.listingType == ListingType.STATIC, "Not a static listing"); + require(amount >= listing.minInvestment, "Below min investment"); + require(amount <= (listing.totalSupply - listing.sold), "Insufficient supply"); + + uint256 price = listing.staticPrice; + uint256 payment = price * amount / 1e18; // Price is per 1e18 tokens (1 full token) + + require(USDC.transferFrom(msg.sender, platformCustody, payment), "Payment failed"); + + RWAToken(listing.tokenAddress).transferFrom(platformCustody, msg.sender, amount); + + listing.sold += amount; + if (listing.sold == listing.totalSupply) { + listing.active = false; + } + + emit TokensPurchased(assetId, msg.sender, amount, price, payment); + } + + // --- AUCTION FUNCTIONS --- + + function submitBid(bytes32 assetId, uint256 tokenAmount, uint256 price) external { + Listing storage listing = listings[assetId]; + require(listing.active, "Listing not active"); + require(listing.listingType == ListingType.AUCTION, "Not an auction"); + require(listing.auctionPhase == AuctionPhase.BIDDING, "Bidding closed"); + require(block.timestamp < listing.endTime, "Auction expired"); + require(price >= listing.minPrice, "Below minimum price"); + require(tokenAmount >= listing.minInvestment, "Below min investment"); + + uint256 deposit = price * tokenAmount / 1e18; + require(USDC.transferFrom(msg.sender, address(this), deposit), "Deposit failed"); + + bids[assetId].push(Bid({ + bidder: msg.sender, + tokenAmount: tokenAmount, + price: price, + usdcDeposited: deposit, + settled: false + })); + + emit BidSubmitted(assetId, msg.sender, tokenAmount, price, bids[assetId].length - 1); + } + + function endAuction(bytes32 assetId, uint256 clearingPrice) external onlyOwner { + Listing storage listing = listings[assetId]; + require(listing.listingType == ListingType.AUCTION, "Not an auction"); + require(listing.auctionPhase == AuctionPhase.BIDDING, "Already ended"); + // We allow manual ending even before endTime if admin decides, or require endTime passed: + // require(block.timestamp >= listing.endTime, "Auction not yet ended"); + + listing.auctionPhase = AuctionPhase.ENDED; + listing.clearingPrice = clearingPrice; + listing.active = false; // Bidding stops + + emit AuctionEnded(assetId, clearingPrice, 0); // Emitting 0 for tokens sold as it's not known until settlement. Off-chain services should calculate this. + } + + function settleBid(bytes32 assetId, uint256 bidIndex) external { + Listing storage listing = listings[assetId]; + require(listing.listingType == ListingType.AUCTION, "Not an auction"); + require(listing.auctionPhase == AuctionPhase.ENDED, "Auction not ended"); + + Bid storage bid = bids[assetId][bidIndex]; + require(!bid.settled, "Already settled"); + require(msg.sender == bid.bidder || msg.sender == owner, "Not authorized to settle"); + + bid.settled = true; + + if (bid.price > listing.clearingPrice) { + // --- Oversubscription Protection --- + uint256 tokensToAllocate = bid.tokenAmount; + uint256 remainingSupply = listing.totalSupply - listing.sold; + + if (tokensToAllocate > remainingSupply) { + tokensToAllocate = remainingSupply; + } + + if (tokensToAllocate > 0) { + uint256 cost = listing.clearingPrice * tokensToAllocate / 1e18; + uint256 refund = bid.usdcDeposited - cost; + + // 1. Update sold amount BEFORE transfer + listing.sold += tokensToAllocate; + + // 2. Transfer tokens to bidder + RWAToken(listing.tokenAddress).transferFrom(platformCustody, bid.bidder, tokensToAllocate); + + // 3. Transfer cost to platform + require(USDC.transfer(platformCustody, cost), "Platform transfer failed"); + + // 4. Refund excess + if (refund > 0) { + require(USDC.transfer(bid.bidder, refund), "Refund failed"); + } + + emit BidSettled(assetId, bid.bidder, tokensToAllocate, cost, refund); + } else { + // No supply left for this bid + require(USDC.transfer(bid.bidder, bid.usdcDeposited), "Refund failed"); + emit BidSettled(assetId, bid.bidder, 0, 0, bid.usdcDeposited); + } + } else { + // Losing Bid - Full Refund + require(USDC.transfer(bid.bidder, bid.usdcDeposited), "Refund failed"); + emit BidSettled(assetId, bid.bidder, 0, 0, bid.usdcDeposited); + } + } + + // Helper to get bid count + function getBidCount(bytes32 assetId) external view returns (uint256) { + return bids[assetId].length; + } + + function closeListing(bytes32 assetId) external onlyOwner { + listings[assetId].active = false; + } +} diff --git a/packages/creditcoin-contracts/contracts/marketplace/SecondaryMarket.sol b/packages/creditcoin-contracts/contracts/marketplace/SecondaryMarket.sol new file mode 100644 index 00000000..73df88cb --- /dev/null +++ b/packages/creditcoin-contracts/contracts/marketplace/SecondaryMarket.sol @@ -0,0 +1,259 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "../core/IdentityRegistry.sol"; + +/** + * @title SecondaryMarket + * @notice Trustless P2P Orderbook Exchange for RWA Tokens + * @dev Supports Limit Orders (Maker) and Market Fills (Taker) with partial fills. + */ +contract SecondaryMarket is ReentrancyGuard, Ownable { + using SafeERC20 for IERC20; + + struct Order { + uint256 id; + address maker; + address tokenAddress; + uint256 amount; // Remaining amount of RWA tokens to buy/sell + uint256 pricePerToken; // USDC per 1e18 RWA tokens (1:1 ratio = 1e6 USDC) + bool isBuy; // true = Bid (Buy RWA), false = Ask (Sell RWA) + bool isActive; + } + + IERC20 public usdc; + IdentityRegistry public identityRegistry; + + uint256 public nextOrderId; + mapping(uint256 => Order) public orders; + + // Events optimized for Indexer + event OrderCreated( + uint256 indexed orderId, + address indexed maker, + address indexed tokenAddress, + uint256 amount, + uint256 pricePerToken, + bool isBuy, + uint256 timestamp + ); + + event OrderFilled( + uint256 indexed orderId, + address indexed taker, + address indexed maker, + address tokenAddress, + uint256 amountFilled, + uint256 totalCost, + uint256 remainingAmount, + uint256 timestamp + ); + + event OrderCancelled( + uint256 indexed orderId, + address indexed maker, + uint256 timestamp + ); + + event OrderSettledForYield( + uint256 indexed orderId, + address indexed maker, + uint256 settledAmount, + bool isYieldClaim + ); + + constructor(address _usdc, address _identityRegistry) Ownable(msg.sender) { + usdc = IERC20(_usdc); + identityRegistry = IdentityRegistry(_identityRegistry); + } + + /** + * @notice Create a Limit Order + * @param tokenAddress The RWA token address + * @param amount Amount of RWA tokens to trade (in wei) + * @param pricePerToken Price in USDC (6 decimals) for 1e18 RWA tokens + * @param isBuy True for Buy Limit (Bid), False for Sell Limit (Ask) + */ + function createOrder( + address tokenAddress, + uint256 amount, + uint256 pricePerToken, + bool isBuy + ) external nonReentrant { + require(amount > 0, "Amount must be > 0"); + require(pricePerToken > 0, "Price must be > 0"); + require(identityRegistry.isVerified(msg.sender), "Maker not verified"); + + if (isBuy) { + // BUY ORDER: Maker locks USDC + // Total USDC needed = (amount * pricePerToken) / 1e18 + uint256 totalUsdc = (amount * pricePerToken) / 1e18; + require(totalUsdc > 0, "Total value too low"); + usdc.safeTransferFrom(msg.sender, address(this), totalUsdc); + } else { + // SELL ORDER: Maker locks RWA Token + IERC20(tokenAddress).safeTransferFrom(msg.sender, address(this), amount); + } + + uint256 orderId = nextOrderId++; + orders[orderId] = Order({ + id: orderId, + maker: msg.sender, + tokenAddress: tokenAddress, + amount: amount, + pricePerToken: pricePerToken, + isBuy: isBuy, + isActive: true + }); + + emit OrderCreated(orderId, msg.sender, tokenAddress, amount, pricePerToken, isBuy, block.timestamp); + } + + /** + * @notice Fill an active order (Partial fills allowed) + * @param orderId The ID of the order to fill + * @param amountToFill Amount of RWA tokens to fill + */ + function fillOrder(uint256 orderId, uint256 amountToFill) external nonReentrant { + Order storage order = orders[orderId]; + require(order.isActive, "Order not active"); + require(amountToFill > 0, "Fill amount must be > 0"); + require(amountToFill <= order.amount, "Fill amount exceeds available"); + require(msg.sender != order.maker, "Cannot fill own order"); + require(identityRegistry.isVerified(msg.sender), "Taker not verified"); + + // Calculate Cost in USDC + // pricePerToken is USDC (6 decimals) per 1e18 RWA + uint256 costInUsdc = (amountToFill * order.pricePerToken) / 1e18; + require(costInUsdc > 0, "Trade value too low"); + + if (order.isBuy) { + // FILLING A BUY ORDER (Selling into a Bid) + // Maker: Buyer (Locked USDC) | Taker: Seller (Sends RWA) + + // 1. Taker (Seller) sends RWA to Maker (Buyer) + IERC20(order.tokenAddress).safeTransferFrom(msg.sender, order.maker, amountToFill); + + // 2. Contract releases USDC to Taker (Seller) + usdc.safeTransfer(msg.sender, costInUsdc); + + } else { + // FILLING A SELL ORDER (Buying from an Ask) + // Maker: Seller (Locked RWA) | Taker: Buyer (Sends USDC) + + // 1. Taker (Buyer) sends USDC to Maker (Seller) + usdc.safeTransferFrom(msg.sender, order.maker, costInUsdc); + + // 2. Contract releases RWA to Taker (Buyer) + IERC20(order.tokenAddress).safeTransfer(msg.sender, amountToFill); + } + + // Update State + order.amount -= amountToFill; + if (order.amount == 0) { + order.isActive = false; + } + + emit OrderFilled( + orderId, + msg.sender, + order.maker, + order.tokenAddress, + amountToFill, + costInUsdc, + order.amount, + block.timestamp + ); + } + + /** + * @notice Cancel an active order + * @param orderId The ID of the order to cancel + */ + function cancelOrder(uint256 orderId) external nonReentrant { + Order storage order = orders[orderId]; + require(order.maker == msg.sender, "Not maker"); + require(order.isActive, "Order not active"); + + order.isActive = false; + + if (order.isBuy) { + // Refund remaining USDC + uint256 refundUsdc = (order.amount * order.pricePerToken) / 1e18; + if (refundUsdc > 0) { + usdc.safeTransfer(msg.sender, refundUsdc); + } + } else { + // Refund remaining RWA + if (order.amount > 0) { + IERC20(order.tokenAddress).safeTransfer(msg.sender, order.amount); + } + } + + emit OrderCancelled(orderId, msg.sender, block.timestamp); + } + + /** + * @notice Admin function to settle orders during yield distribution + * @param yieldVault Address of the YieldVault contract + * @param tokenAddress Address of the RWA token + * @param orderIds List of order IDs to settle + */ + function settleYield( + address yieldVault, + address tokenAddress, + uint256[] calldata orderIds + ) external onlyOwner nonReentrant { + require(yieldVault != address(0), "Invalid YieldVault"); + + for (uint256 i = 0; i < orderIds.length; i++) { + Order storage order = orders[orderIds[i]]; + + // Skip if not active or token mismatch + if (!order.isActive || order.tokenAddress != tokenAddress) { + continue; + } + + order.isActive = false; + + if (order.isBuy) { + // BUY ORDER: Refund locked USDC + uint256 refundUsdc = (order.amount * order.pricePerToken) / 1e18; + if (refundUsdc > 0) { + usdc.safeTransfer(order.maker, refundUsdc); + } + + emit OrderSettledForYield(order.id, order.maker, refundUsdc, false); + } else { + // SELL ORDER: Burn RWA for Yield (USDC) + if (order.amount > 0) { + // Approve YieldVault + IERC20(tokenAddress).approve(yieldVault, order.amount); + + // Record USDC balance before + uint256 balanceBefore = usdc.balanceOf(address(this)); + + // Call claimYield + (bool success, ) = yieldVault.call( + abi.encodeWithSignature("claimYield(address,uint256)", tokenAddress, order.amount) + ); + require(success, "Yield claim failed"); + + // Calculate yield received + uint256 yieldReceived = usdc.balanceOf(address(this)) - balanceBefore; + + // Transfer yield to maker + if (yieldReceived > 0) { + usdc.safeTransfer(order.maker, yieldReceived); + } + + emit OrderSettledForYield(order.id, order.maker, yieldReceived, true); + } + } + } + } +} \ No newline at end of file diff --git a/packages/creditcoin-contracts/contracts/test/CTCFaucet.sol b/packages/creditcoin-contracts/contracts/test/CTCFaucet.sol new file mode 100644 index 00000000..e61ae942 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/test/CTCFaucet.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +/** + * @title CTCFaucet + * @notice Faucet contract for dispensing MockCTC tokens + */ +contract CTCFaucet { + IERC20 public mockCTC; + + constructor(address _mockCTC) { + mockCTC = IERC20(_mockCTC); + } + + /** + * @notice Request any amount of MockCTC tokens + * @param to The address to receive tokens + * @param amount The amount of tokens to request (in smallest unit, 18 decimals) + */ + function requestTokens(address to, uint256 amount) external { + IMockCTC(address(mockCTC)).mint(to, amount); + } + + /** + * @notice Get tokens by specifying amount in CTC (18 decimals) + * @param to The address to receive tokens + * @param amountInCTC The amount in CTC (e.g., 10 for 10 CTC) + */ + function requestCTC(address to, uint256 amountInCTC) external { + uint256 amount = amountInCTC * 10 ** 18; // 18 decimals + IMockCTC(address(mockCTC)).mint(to, amount); + } +} + +interface IMockCTC { + function mint(address to, uint256 amount) external; +} diff --git a/packages/creditcoin-contracts/contracts/test/Faucet.sol b/packages/creditcoin-contracts/contracts/test/Faucet.sol new file mode 100644 index 00000000..4e360244 --- /dev/null +++ b/packages/creditcoin-contracts/contracts/test/Faucet.sol @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +/** + * @title Faucet + * @notice Faucet contract for dispensing MockUSDC tokens + */ +contract Faucet { + IERC20 public mockUSDC; + + constructor(address _mockUSDC) { + mockUSDC = IERC20(_mockUSDC); + } + + /** + * @notice Request any amount of MockUSDC tokens + * @param to The address to receive tokens + * @param amount The amount of tokens to request (in smallest unit) + */ + function requestTokens(address to, uint256 amount) external { + // For testing purposes, allow any amount + // In production, you might want to add limits or cooldowns + IMockUSDC(address(mockUSDC)).mint(to, amount); + } + + /** + * @notice Get tokens by specifying amount in USDC (6 decimals) + * @param to The address to receive tokens + * @param amountInUSDC The amount in USDC (e.g., 100 for 100 USDC) + */ + function requestUSDC(address to, uint256 amountInUSDC) external { + uint256 amount = amountInUSDC * 10 ** 6; // 6 decimals + IMockUSDC(address(mockUSDC)).mint(to, amount); + } +} + +// Interface to access MockUSDC mint function +interface IMockUSDC { + function mint(address to, uint256 amount) external; +} \ No newline at end of file diff --git a/packages/creditcoin-contracts/contracts/test/MockCTC.sol b/packages/creditcoin-contracts/contracts/test/MockCTC.sol new file mode 100644 index 00000000..8eb32c4f --- /dev/null +++ b/packages/creditcoin-contracts/contracts/test/MockCTC.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + +/** + * @title MockCTC + * @notice Mock Credit Coin token for testing and demo purposes + * @dev Simple ERC20 token - price is managed off-chain in backend + */ +contract MockCTC is ERC20, Ownable { + // Events + event TokensMinted(address indexed to, uint256 amount); + + /** + * @notice Initialize MockCTC token + */ + constructor() ERC20("Mock Credit Coin", "CTC") Ownable(msg.sender) { + // Mint 100M CTC to deployer + _mint(msg.sender, 100_000_000 * 10 ** 18); + } + + /** + * @notice Mint CTC tokens (for testing) + * @param to Recipient address + * @param amount Amount to mint (with 18 decimals) + */ + function mint(address to, uint256 amount) external { + _mint(to, amount); + emit TokensMinted(to, amount); + } + + /** + * @notice Burn CTC tokens + * @param amount Amount to burn (with 18 decimals) + */ + function burn(uint256 amount) external { + _burn(msg.sender, amount); + } + + /** + * @notice Decimals for CTC (standard 18) + */ + function decimals() public pure override returns (uint8) { + return 18; + } +} diff --git a/packages/creditcoin-contracts/contracts/test/MockCTCDEX.sol b/packages/creditcoin-contracts/contracts/test/MockCTCDEX.sol new file mode 100644 index 00000000..70613a2e --- /dev/null +++ b/packages/creditcoin-contracts/contracts/test/MockCTCDEX.sol @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +/** + * @title MockCTCDEX + * @notice Mock DEX for testing CTC ↔ USDC swaps on Credit Coin + */ +contract MockCTCDEX is Ownable, ReentrancyGuard { + IERC20 public CTC; + IERC20 public USDC; + + // Exchange rate: 1 CTC = X USDC (with 6 decimals to match USDC) + uint256 public exchangeRate; + + // Liquidity reserves + uint256 public ctcReserve; + uint256 public usdcReserve; + + // Events + event ExchangeRateUpdated(uint256 oldRate, uint256 newRate); + event Swapped( + address indexed user, + address indexed tokenIn, + address indexed tokenOut, + uint256 amountIn, + uint256 amountOut + ); + event LiquidityAdded(uint256 ctcAmount, uint256 usdcAmount); + + constructor( + address _CTC, + address _USDC, + uint256 _initialExchangeRate + ) Ownable(msg.sender) { + CTC = IERC20(_CTC); + USDC = IERC20(_USDC); + exchangeRate = _initialExchangeRate; + emit ExchangeRateUpdated(0, _initialExchangeRate); + } + + function setExchangeRate(uint256 newRate) external onlyOwner { + require(newRate > 0, "Rate must be greater than 0"); + uint256 oldRate = exchangeRate; + exchangeRate = newRate; + emit ExchangeRateUpdated(oldRate, newRate); + } + + function getQuote(uint256 ctcAmount) external view returns (uint256) { + return (ctcAmount * exchangeRate) / 1e18; + } + + function swapCTCForUSDC( + uint256 ctcAmount, + uint256 minUSDCOut + ) external nonReentrant returns (uint256 usdcOut) { + require(ctcAmount > 0, "Amount must be greater than 0"); + usdcOut = (ctcAmount * exchangeRate) / 1e18; + require(usdcOut >= minUSDCOut, "Slippage tolerance exceeded"); + require(usdcReserve >= usdcOut, "Insufficient USDC liquidity"); + + require(CTC.transferFrom(msg.sender, address(this), ctcAmount), "CTC transfer failed"); + ctcReserve += ctcAmount; + usdcReserve -= usdcOut; + require(USDC.transfer(msg.sender, usdcOut), "USDC transfer failed"); + + emit Swapped(msg.sender, address(CTC), address(USDC), ctcAmount, usdcOut); + } + + function addLiquidity(uint256 ctcAmount, uint256 usdcAmount) external onlyOwner { + if (ctcAmount > 0) { + require(CTC.transferFrom(msg.sender, address(this), ctcAmount), "CTC transfer failed"); + ctcReserve += ctcAmount; + } + if (usdcAmount > 0) { + require(USDC.transferFrom(msg.sender, address(this), usdcAmount), "USDC transfer failed"); + usdcReserve += usdcAmount; + } + emit LiquidityAdded(ctcAmount, usdcAmount); + } +} diff --git a/packages/creditcoin-contracts/contracts/test/MockUSDC.sol b/packages/creditcoin-contracts/contracts/test/MockUSDC.sol new file mode 100644 index 00000000..6c7eb6ca --- /dev/null +++ b/packages/creditcoin-contracts/contracts/test/MockUSDC.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +/** + * @title MockUSDC + * @notice Mock USDC token for testing purposes + */ +contract MockUSDC is ERC20 { + uint8 private _decimals = 6; + + constructor() ERC20("USD Coin", "USDC") { + // Mint 100 billion USDC to deployer for testing + _mint(msg.sender, 100_000_000_000 * 10 ** _decimals); + } + + function decimals() public view virtual override returns (uint8) { + return _decimals; + } + + function mint(address to, uint256 amount) external { + _mint(to, amount); + } + + function faucet() external { + // Faucet: 1000 USDC per call + _mint(msg.sender, 1000 * 10 ** _decimals); + } +} diff --git a/packages/creditcoin-contracts/hardhat.config.ts b/packages/creditcoin-contracts/hardhat.config.ts new file mode 100644 index 00000000..86cd48e6 --- /dev/null +++ b/packages/creditcoin-contracts/hardhat.config.ts @@ -0,0 +1,30 @@ +import { HardhatUserConfig } from "hardhat/config"; +import "@nomicfoundation/hardhat-toolbox"; +// import "@nomicfoundation/hardhat-viem"; // Temporarily disabled due to module resolution issue +import "dotenv/config"; + +const config: HardhatUserConfig = { + solidity: { + version: "0.8.20", + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + viaIR: true, + }, + }, + networks: { + creditcoinTestnet: { + url: process.env.CREDITCOIN_TESTNET_RPC || "https://rpc.cc3-testnet.creditcoin.network", + accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [], + chainId: 102031, + }, + }, + typechain: { + outDir: "typechain-types", + target: "ethers-v6", + }, +}; + +export default config; diff --git a/packages/creditcoin-contracts/index.ts b/packages/creditcoin-contracts/index.ts new file mode 100644 index 00000000..4e44db2b --- /dev/null +++ b/packages/creditcoin-contracts/index.ts @@ -0,0 +1,3 @@ +export * from "./typechain-types"; +export * from "./src/addresses"; +export * from "./src/abis"; diff --git a/packages/creditcoin-contracts/package.json b/packages/creditcoin-contracts/package.json new file mode 100644 index 00000000..ed6584f4 --- /dev/null +++ b/packages/creditcoin-contracts/package.json @@ -0,0 +1,39 @@ +{ + "name": "@contracts/creditcoin", + "version": "1.0.0", + "private": true, + "main": "./index.ts", + "types": "./index.ts", + "scripts": { + "generate:types": "hardhat compile", + "dev": "echo 'No dev script for contracts'", + "deploy:sepolia": "hardhat run scripts/deploy/deploy_creditcoin.ts --network creditcoinTestnet" + }, + "devDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "2.1.0", + "@nomicfoundation/hardhat-ethers": "^3.0.8", + "@nomicfoundation/hardhat-network-helpers": "^1.0.12", + "@nomicfoundation/hardhat-toolbox": "^3.0.0", + "@nomicfoundation/hardhat-verify": "^1.1.1", + "@nomicfoundation/hardhat-viem": "^3.0.1", + "@openassets/types": "*", + "@typechain/ethers-v6": "^0.5.1", + "@typechain/hardhat": "^8.0.0", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.10", + "@types/node": "^25.0.3", + "chai": "^4.3.10", + "dotenv": "^17.2.3", + "ethers": "^6.16.0", + "hardhat": "^2.22.3", + "hardhat-gas-reporter": "^1.0.10", + "solidity-coverage": "^0.8.17", + "ts-node": "^10.9.2", + "typechain": "^8.3.2", + "typescript": "^5.9.3", + "viem": "^2.43.3" + }, + "dependencies": { + "@openzeppelin/contracts": "5.4.0" + } +} diff --git a/packages/creditcoin-contracts/scripts/deploy/deploy_creditcoin.ts b/packages/creditcoin-contracts/scripts/deploy/deploy_creditcoin.ts new file mode 100644 index 00000000..0abded79 --- /dev/null +++ b/packages/creditcoin-contracts/scripts/deploy/deploy_creditcoin.ts @@ -0,0 +1,236 @@ +import { ethers } from "hardhat"; +import * as fs from "fs"; + +/** + * Deploy Credit Coin Leverage Stack + * + * This script deploys the full CTC-based leverage system for Credit Coin: + * - MockCTC (collateral token) + * - MockUSDC (loan token) + * - SeniorPool (USDC lending pool) + * - MockCTCDEX (CTC/USDC swap) + * - CTCDEXIntegration (slippage-protected swaps) + * - CTCLeverageVault (core vault) + * - Platform infrastructure contracts + */ + +async function main() { + const [deployer] = await ethers.getSigners(); + + console.log("Deploying Credit Coin Leverage Stack"); + console.log("Deployer:", deployer.address); + // console.log("Balance:", ethers.formatEther(await ethers.provider.getBalance(deployer.address)), "CTC"); + + const deployedContracts: Record = {}; + + // Step 1: Deploy base tokens + console.log("[1] Deploying base tokens..."); + + const MockUSDC = await ethers.getContractFactory("MockUSDC"); + const usdc = await MockUSDC.deploy(); + await usdc.waitForDeployment(); + deployedContracts.MockUSDC = await usdc.getAddress(); + console.log(" [OK] MockUSDC:", deployedContracts.MockUSDC); + + const MockCTC = await ethers.getContractFactory("MockCTC"); + const ctc = await MockCTC.deploy(); + await ctc.waitForDeployment(); + deployedContracts.MockCTC = await ctc.getAddress(); + console.log(" [OK] MockCTC:", deployedContracts.MockCTC); + + // Step 2: Deploy SeniorPool + console.log("\n[2] Deploying SeniorPool..."); + + const SeniorPool = await ethers.getContractFactory("SeniorPool"); + const seniorPool = await SeniorPool.deploy(deployedContracts.MockUSDC); + await seniorPool.waitForDeployment(); + deployedContracts.SeniorPool = await seniorPool.getAddress(); + console.log(" [OK] SeniorPool:", deployedContracts.SeniorPool); + + // Fund SeniorPool with USDC + console.log(" [FUND] Funding SeniorPool with 1M USDC..."); + const fundAmount = ethers.parseUnits("1000000", 6); // 1M USDC + const mintTx = await usdc.mint(deployer.address, fundAmount); + await mintTx.wait(); + const approveTx = await usdc.approve(deployedContracts.SeniorPool, fundAmount); + await approveTx.wait(); + const depositTx = await seniorPool.depositLiquidity(fundAmount); + await depositTx.wait(); + console.log(" [OK] SeniorPool funded"); + + // Step 3: Deploy DEX infrastructure + console.log("\n[3] Deploying DEX infrastructure..."); + + const initialExchangeRate = ethers.parseUnits("0.5", 6); // 1 CTC = 0.5 USDC (placeholder) + const MockCTCDEX = await ethers.getContractFactory("MockCTCDEX"); + const dex = await MockCTCDEX.deploy( + deployedContracts.MockCTC, + deployedContracts.MockUSDC, + initialExchangeRate + ); + await dex.waitForDeployment(); + deployedContracts.MockCTCDEX = await dex.getAddress(); + console.log(" [OK] MockCTCDEX:", deployedContracts.MockCTCDEX); + + // Fund DEX with USDC liquidity + console.log(" [FUND] Funding DEX with 500K USDC liquidity..."); + const dexFundAmount = ethers.parseUnits("500000", 6); + const mintDexTx = await usdc.mint(deployer.address, dexFundAmount); + await mintDexTx.wait(); + const approveDexTx = await usdc.approve(deployedContracts.MockCTCDEX, dexFundAmount); + await approveDexTx.wait(); + const addLiqTx = await dex.addLiquidity(0, dexFundAmount); + await addLiqTx.wait(); + console.log(" [OK] DEX funded"); + + // Step 4: Deploy CTCDEXIntegration + console.log("\n[4] Deploying CTCDEXIntegration..."); + + const CTCDEXIntegration = await ethers.getContractFactory("CTCDEXIntegration"); + const swapIntegration = await CTCDEXIntegration.deploy( + deployedContracts.MockCTC, + deployedContracts.MockUSDC, + deployedContracts.MockCTCDEX + ); + await swapIntegration.waitForDeployment(); + deployedContracts.CTCDEXIntegration = await swapIntegration.getAddress(); + console.log(" [OK] CTCDEXIntegration:", deployedContracts.CTCDEXIntegration); + + // Step 5: Deploy platform infrastructure + console.log("\n[5] Deploying platform infrastructure..."); + + const AttestationRegistry = await ethers.getContractFactory("AttestationRegistry"); + const attestationRegistry = await AttestationRegistry.deploy(); + await attestationRegistry.waitForDeployment(); + deployedContracts.AttestationRegistry = await attestationRegistry.getAddress(); + console.log(" [OK] AttestationRegistry:", deployedContracts.AttestationRegistry); + + const TrustedIssuersRegistry = await ethers.getContractFactory("TrustedIssuersRegistry"); + const trustedIssuersRegistry = await TrustedIssuersRegistry.deploy(); + await trustedIssuersRegistry.waitForDeployment(); + deployedContracts.TrustedIssuersRegistry = await trustedIssuersRegistry.getAddress(); + console.log(" [OK] TrustedIssuersRegistry:", deployedContracts.TrustedIssuersRegistry); + + const IdentityRegistry = await ethers.getContractFactory("IdentityRegistry"); + const identityRegistry = await IdentityRegistry.deploy(deployedContracts.TrustedIssuersRegistry); + await identityRegistry.waitForDeployment(); + deployedContracts.IdentityRegistry = await identityRegistry.getAddress(); + console.log(" [OK] IdentityRegistry:", deployedContracts.IdentityRegistry); + + const YieldVault = await ethers.getContractFactory("YieldVault"); + const yieldVault = await YieldVault.deploy(deployedContracts.MockUSDC, deployer.address); + await yieldVault.waitForDeployment(); + deployedContracts.YieldVault = await yieldVault.getAddress(); + console.log(" [OK] YieldVault:", deployedContracts.YieldVault); + + const TokenFactory = await ethers.getContractFactory("TokenFactory"); + const tokenFactory = await TokenFactory.deploy( + deployedContracts.AttestationRegistry, + deployedContracts.IdentityRegistry, + deployedContracts.TrustedIssuersRegistry, + deployer.address, + deployedContracts.YieldVault + ); + await tokenFactory.waitForDeployment(); + deployedContracts.TokenFactory = await tokenFactory.getAddress(); + console.log(" [OK] TokenFactory:", deployedContracts.TokenFactory); + + const PrimaryMarket = await ethers.getContractFactory("PrimaryMarket"); + const primaryMarket = await PrimaryMarket.deploy( + deployedContracts.TokenFactory, + deployer.address, + deployedContracts.MockUSDC + ); + await primaryMarket.waitForDeployment(); + deployedContracts.PrimaryMarket = await primaryMarket.getAddress(); + console.log(" [OK] PrimaryMarket:", deployedContracts.PrimaryMarket); + + const SecondaryMarket = await ethers.getContractFactory("SecondaryMarket"); + const secondaryMarket = await SecondaryMarket.deploy( + deployedContracts.MockUSDC, + deployedContracts.IdentityRegistry + ); + await secondaryMarket.waitForDeployment(); + deployedContracts.SecondaryMarket = await secondaryMarket.getAddress(); + console.log(" [OK] SecondaryMarket:", deployedContracts.SecondaryMarket); + + const OAID = await ethers.getContractFactory("OAID"); + const oaid = await OAID.deploy(); + await oaid.waitForDeployment(); + deployedContracts.OAID = await oaid.getAddress(); + console.log(" [OK] OAID:", deployedContracts.OAID); + + const SolvencyVault = await ethers.getContractFactory("SolvencyVault"); + const solvencyVault = await SolvencyVault.deploy( + deployedContracts.MockUSDC, + deployedContracts.SeniorPool + ); + await solvencyVault.waitForDeployment(); + deployedContracts.SolvencyVault = await solvencyVault.getAddress(); + console.log(" [OK] SolvencyVault:", deployedContracts.SolvencyVault); + + // Step 6: Deploy CTCLeverageVault + console.log("\n[6] Deploying CTCLeverageVault..."); + + const CTCLeverageVault = await ethers.getContractFactory("CTCLeverageVault"); + const leverageVault = await CTCLeverageVault.deploy( + deployedContracts.MockCTC, + deployedContracts.MockUSDC, + deployedContracts.SeniorPool, + deployedContracts.CTCDEXIntegration + ); + await leverageVault.waitForDeployment(); + deployedContracts.CTCLeverageVault = await leverageVault.getAddress(); + console.log(" [OK] CTCLeverageVault:", deployedContracts.CTCLeverageVault); + + // Step 7: Post-deployment configuration + console.log("\n[7] Configuring contracts..."); + + await yieldVault.setFactory(deployedContracts.TokenFactory); + console.log(" [OK] TokenFactory set as factory on YieldVault"); + + await leverageVault.setYieldVault(deployedContracts.YieldVault); + console.log(" [OK] YieldVault address set on CTCLeverageVault"); + + await leverageVault.setPrimaryMarket(deployedContracts.PrimaryMarket); + console.log(" [OK] PrimaryMarket address set on CTCLeverageVault"); + + await seniorPool.setLeverageVault(deployedContracts.CTCLeverageVault); + console.log(" [OK] CTCLeverageVault authorized on SeniorPool"); + + await seniorPool.setSolvencyVault(deployedContracts.SolvencyVault); + console.log(" [OK] SolvencyVault authorized on SeniorPool"); + + await solvencyVault.setPrimaryMarket(deployedContracts.PrimaryMarket); + console.log(" [OK] PrimaryMarket set on SolvencyVault"); + + await oaid.setSolvencyVault(deployedContracts.SolvencyVault); + console.log(" [OK] SolvencyVault set on OAID"); + + // Step 8: Save deployment manifest + console.log("\n[8] Saving deployment manifest..."); + + const manifest = { + network: "creditcoin", + chainId: (await ethers.provider.getNetwork()).chainId.toString(), + deployer: deployer.address, + timestamp: new Date().toISOString(), + contracts: deployedContracts + }; + + fs.writeFileSync( + "./deployed_contracts_creditcoin.json", + JSON.stringify(manifest, null, 2) + ); + console.log(" [OK] Manifest saved to deployed_contracts_creditcoin.json"); + + // Summary + console.log("\n[SUCCESS] Deployment complete!"); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/packages/creditcoin-contracts/src/abis/index.ts b/packages/creditcoin-contracts/src/abis/index.ts new file mode 100644 index 00000000..9dd23f41 --- /dev/null +++ b/packages/creditcoin-contracts/src/abis/index.ts @@ -0,0 +1,45 @@ +import AttestationRegistry from '../../artifacts/contracts/core/AttestationRegistry.sol/AttestationRegistry.json'; +import IdentityRegistry from '../../artifacts/contracts/core/IdentityRegistry.sol/IdentityRegistry.json'; +import TokenFactory from '../../artifacts/contracts/core/TokenFactory.sol/TokenFactory.json'; +import YieldVault from '../../artifacts/contracts/core/YieldVault.sol/YieldVault.json'; +import PrimaryMarket from '../../artifacts/contracts/marketplace/PrimaryMarket.sol/PrimaryMarket.json'; +import SecondaryMarket from '../../artifacts/contracts/marketplace/SecondaryMarket.sol/SecondaryMarket.json'; +import TrustedIssuersRegistry from '../../artifacts/contracts/core/TrustedIssuersRegistry.sol/TrustedIssuersRegistry.json'; +import SolvencyVault from '../../artifacts/contracts/core/SolvencyVault.sol/SolvencyVault.json'; +import CTCLeverageVault from '../../artifacts/contracts/core/CTCLeverageVault.sol/CTCLeverageVault.json'; +import SeniorPool from '../../artifacts/contracts/core/SeniorPool.sol/SeniorPool.json'; +import OAID from '../../artifacts/contracts/integrations/OAID.sol/OAID.json'; +import MockUSDC from '../../artifacts/contracts/test/MockUSDC.sol/MockUSDC.json'; +import CTCDEXIntegration from '../../artifacts/contracts/integrations/CTCDEXIntegration.sol/CTCDEXIntegration.json'; +import MockCTCDEX from '../../artifacts/contracts/test/MockCTCDEX.sol/MockCTCDEX.json'; +import MockCTC from '../../artifacts/contracts/test/MockCTC.sol/MockCTC.json'; +import CTCFaucet from '../../artifacts/contracts/test/CTCFaucet.sol/CTCFaucet.json'; +import Faucet from '../../artifacts/contracts/test/Faucet.sol/Faucet.json'; +import RWAToken from '../../artifacts/contracts/core/RWAToken.sol/RWAToken.json'; +import PrivateAssetToken from '../../artifacts/contracts/core/PrivateAssetToken.sol/PrivateAssetToken.json'; +import ComplianceModule from '../../artifacts/contracts/core/ComplianceModule.sol/ComplianceModule.json'; + +import { ContractName } from '@openassets/types'; + +export const CreditCoinAbis: Partial> = { + AttestationRegistry: AttestationRegistry.abi, + IdentityRegistry: IdentityRegistry.abi, + TokenFactory: TokenFactory.abi, + YieldVault: YieldVault.abi, + PrimaryMarket: PrimaryMarket.abi, + SecondaryMarket: SecondaryMarket.abi, + TrustedIssuersRegistry: TrustedIssuersRegistry.abi, + SolvencyVault: SolvencyVault.abi, + CTCLeverageVault: CTCLeverageVault.abi, + SeniorPool: SeniorPool.abi, + OAID: OAID.abi, + MockUSDC: MockUSDC.abi, + CTCDEXIntegration: CTCDEXIntegration.abi, + MockCTCDEX: MockCTCDEX.abi, + MockCTC: MockCTC.abi, + CTCFaucet: CTCFaucet.abi, + Faucet: Faucet.abi, + RWAToken: RWAToken.abi, + PrivateAssetToken: PrivateAssetToken.abi, + ComplianceModule: ComplianceModule.abi, +}; diff --git a/packages/creditcoin-contracts/src/addresses.ts b/packages/creditcoin-contracts/src/addresses.ts new file mode 100644 index 00000000..add19582 --- /dev/null +++ b/packages/creditcoin-contracts/src/addresses.ts @@ -0,0 +1,21 @@ +import { ContractName } from '@openassets/types'; + +export const CreditCoinContracts: Partial> = { + AttestationRegistry: '0x0000000000000000000000000000000000000000', // Placeholder + TrustedIssuersRegistry: '0x0000000000000000000000000000000000000000', + IdentityRegistry: '0x0000000000000000000000000000000000000000', + YieldVault: '0x0000000000000000000000000000000000000000', + TokenFactory: '0x0000000000000000000000000000000000000000', + PrimaryMarket: '0x0000000000000000000000000000000000000000', + MockUSDC: '0x0000000000000000000000000000000000000000', + MockCTC: '0x0000000000000000000000000000000000000000', + CTCFaucet: '0x0000000000000000000000000000000000000000', + MockCTCDEX: '0x0000000000000000000000000000000000000000', + SeniorPool: '0x0000000000000000000000000000000000000000', + CTCDEXIntegration: '0x0000000000000000000000000000000000000000', + CTCLeverageVault: '0x0000000000000000000000000000000000000000', + Faucet: '0x0000000000000000000000000000000000000000', + OAID: '0x0000000000000000000000000000000000000000', + SolvencyVault: '0x0000000000000000000000000000000000000000', + SecondaryMarket: '0x0000000000000000000000000000000000000000' +} as const; diff --git a/packages/creditcoin-contracts/tsconfig.json b/packages/creditcoin-contracts/tsconfig.json new file mode 100644 index 00000000..c4e2c590 --- /dev/null +++ b/packages/creditcoin-contracts/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "baseUrl": ".", + "paths": { + "@contracts/creditcoin/*": ["./src/*"] + } + }, + "include": ["./src/**/*", "scripts/**/*", "hardhat.config.ts", "index.ts"] +} diff --git a/packages/types/src/blockchain/contracts.ts b/packages/types/src/blockchain/contracts.ts index 5b34a405..b2b0eace 100644 --- a/packages/types/src/blockchain/contracts.ts +++ b/packages/types/src/blockchain/contracts.ts @@ -31,6 +31,13 @@ export const ContractNameRegistry = { MockStARB: 'MockStARB', MockArbitrumDEX: 'MockArbitrumDEX', + // Credit Coin-only + CTCLeverageVault: 'CTCLeverageVault', + CTCDEXIntegration: 'CTCDEXIntegration', + MockCTC: 'MockCTC', + MockCTCDEX: 'MockCTCDEX', + CTCFaucet: 'CTCFaucet', + // Stellar-only AssetRegistry: 'AssetRegistry', } as const; diff --git a/yarn.lock b/yarn.lock index 20dd2342..e301daf8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -487,6 +487,36 @@ __metadata: languageName: unknown linkType: soft +"@contracts/creditcoin@workspace:packages/creditcoin-contracts": + version: 0.0.0-use.local + resolution: "@contracts/creditcoin@workspace:packages/creditcoin-contracts" + dependencies: + "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" + "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" + "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" + "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" + "@nomicfoundation/hardhat-verify": "npm:^1.1.1" + "@nomicfoundation/hardhat-viem": "npm:^3.0.1" + "@openassets/types": "npm:*" + "@openzeppelin/contracts": "npm:5.4.0" + "@typechain/ethers-v6": "npm:^0.5.1" + "@typechain/hardhat": "npm:^8.0.0" + "@types/chai": "npm:^4.3.11" + "@types/mocha": "npm:^10.0.10" + "@types/node": "npm:^25.0.3" + chai: "npm:^4.3.10" + dotenv: "npm:^17.2.3" + ethers: "npm:^6.16.0" + hardhat: "npm:^2.22.3" + hardhat-gas-reporter: "npm:^1.0.10" + solidity-coverage: "npm:^0.8.17" + ts-node: "npm:^10.9.2" + typechain: "npm:^8.3.2" + typescript: "npm:^5.9.3" + viem: "npm:^2.43.3" + languageName: unknown + linkType: soft + "@contracts/mantle@npm:*, @contracts/mantle@workspace:packages/contracts": version: 0.0.0-use.local resolution: "@contracts/mantle@workspace:packages/contracts" From fe9267b0c1e2dcb12d398ae2c34e33a89e770060 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 13:33:03 +0530 Subject: [PATCH 12/21] "types fix" --- .../adapters/evm/evm-wallet.adapter.ts | 4 +-- .../blockchain/services/blockchain.service.ts | 26 +++++++++++----- .../blockchain/services/wallet.service.ts | 4 +-- .../modules/faucet/services/faucet.service.ts | 2 ++ .../services/leverage-blockchain.service.ts | 13 ++++++-- .../partners/services/partner-loan.service.ts | 5 ++-- .../services/secondary-market.service.ts | 1 + .../services/private-asset.service.ts | 3 ++ .../services/solvency-blockchain.service.ts | 30 +++++++++++-------- 9 files changed, 59 insertions(+), 29 deletions(-) diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts index 86b0d249..cc6f575e 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts @@ -45,7 +45,7 @@ export class EvmWalletAdapter implements WalletAdapter { getAdminWallet(): WalletClient { return createWalletClient({ - account: this.adminAccount, + account: this.adminAccount as any, chain: this.chain, transport: http(this.rpcUrl), }); @@ -53,7 +53,7 @@ export class EvmWalletAdapter implements WalletAdapter { getPlatformWallet(): WalletClient { return createWalletClient({ - account: this.platformAccount, + account: this.platformAccount as any, chain: this.chain, transport: http(this.rpcUrl), }); diff --git a/packages/backend/src/modules/blockchain/services/blockchain.service.ts b/packages/backend/src/modules/blockchain/services/blockchain.service.ts index 173cd479..2b6235f5 100644 --- a/packages/backend/src/modules/blockchain/services/blockchain.service.ts +++ b/packages/backend/src/modules/blockchain/services/blockchain.service.ts @@ -77,6 +77,7 @@ export class BlockchainService { abi, functionName: 'registerAsset', args: [assetId, attestationHash, blobId, payload, signature], + account: wallet.account!, }), 'registerAsset write'); // Don't wait for receipt - return immediately @@ -99,6 +100,7 @@ export class BlockchainService { abi, functionName: 'registerIdentity', args: [walletAddress], + account: wallet.account!, }), 'registerIdentity write'); this.logger.log(`Transaction submitted: ${hash}, waiting for confirmation...`); @@ -156,16 +158,16 @@ export class BlockchainService { totalSupplyWei = fromCanonical(asset.tokenParams.totalSupply, 18); this.logger.log(`Using asset's totalSupply: ${asset.tokenParams.totalSupply} → ${totalSupplyWei} wei`); } - const issuer = dto.issuer || wallet.account.address; // Default to admin wallet + const issuer = dto.issuer || wallet.account!.address; // Default to admin wallet this.logger.log(`Token params: supply=${Number(totalSupplyWei) / 1e18} tokens (${totalSupplyWei} wei), name=${dto.name}, symbol=${dto.symbol}, issuer=${issuer}`); // Check wallet balance before submitting transaction - const balance = await this.publicClient.getBalance({ address: wallet.account.address as Address }); - this.logger.log(`Admin wallet ${wallet.account.address} balance: ${Number(balance) / 1e18} MNT`); + const balance = await this.publicClient.getBalance({ address: wallet.account!.address as Address }); + this.logger.log(`Admin wallet ${wallet.account!.address} balance: ${Number(balance) / 1e18} MNT`); if (balance === BigInt(0)) { - throw new Error(`Admin wallet has no MNT for gas. Please fund ${wallet.account.address}`); + throw new Error(`Admin wallet has no MNT for gas. Please fund ${wallet.account!.address}`); } this.logger.log(`Submitting transaction to TokenFactory at ${address}...`); @@ -177,6 +179,7 @@ export class BlockchainService { abi, functionName: 'deployTokenSuite', args: [assetIdBytes32, totalSupplyWei, dto.name, dto.symbol, issuer], + account: wallet.account!, }), 'deployTokenSuite write'); this.logger.log(`Transaction submitted successfully: ${hash}`); @@ -250,6 +253,7 @@ export class BlockchainService { abi: usdcAbi, functionName: 'approve', args: [yieldVaultAddress, BigInt(amount)], + account: wallet.account!, }), 'approve USDC write'); await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ @@ -267,6 +271,7 @@ export class BlockchainService { abi: yieldVaultAbi, functionName: 'depositYield', args: [tokenAddress, BigInt(amount)], + account: wallet.account!, }), 'depositYield write'); await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ @@ -290,6 +295,7 @@ export class BlockchainService { abi, functionName: 'distributeYieldBatch', args: [tokenAddress, holders, amountBigInts], + account: wallet.account!, }), 'distributeYieldBatch write'); await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ @@ -316,7 +322,7 @@ export class BlockchainService { this.logger.log(`========== Starting listOnMarketplace ==========`); this.logger.log(`Input params: tokenAddress=${tokenAddress}, type=${type}, price=${price}, minInvestment=${minInvestment}, duration=${duration}, minPrice=${minPrice}`); this.logger.log(`Marketplace contract: ${address}`); - this.logger.log(`Admin wallet: ${wallet.account.address}`); + this.logger.log(`Admin wallet: ${wallet.account!.address}`); // Get asset info from database to extract assetId and totalSupply this.logger.log(`Querying database for asset with token.address: ${tokenAddress}`); @@ -372,6 +378,7 @@ export class BlockchainService { totalSupplyWei, // totalSupply in token wei (18 decimals) fromCanonical(minInvestment, 6), // minInvestment in USDC wei (6 decimals) ], + account: wallet.account!, }), 'createListing write'); this.logger.log(`āœ“ Transaction submitted: ${hash}`); @@ -442,7 +449,7 @@ export class BlockchainService { address: tokenAddress as Address, abi: tokenAbi, functionName: 'allowance', - args: [wallet.account.address, marketplaceAddress as Address], + args: [wallet.account!.address, marketplaceAddress as Address], }), 'allowance check') as bigint; if (currentAllowance > 0n) { @@ -458,6 +465,7 @@ export class BlockchainService { abi: tokenAbi, functionName: 'approve', args: [marketplaceAddress as Address, maxApproval], + account: wallet.account!, }), 'approve marketplace write'); await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ @@ -484,6 +492,7 @@ export class BlockchainService { abi, functionName: 'endAuction', args: [assetIdBytes32, BigInt(clearingPrice)], + account: wallet.account!, }), 'endAuction write'); await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ @@ -505,6 +514,7 @@ export class BlockchainService { abi, functionName: 'revokeAsset', args: [assetId, reason], + account: wallet.account!, }), 'revokeAsset write'); await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ hash }), 'revokeAsset receipt'); @@ -560,7 +570,7 @@ export class BlockchainService { this.logger.log(`šŸ”„ Burning ${Number(unsoldBalance) / 1e18} unsold tokens from custody wallet...`); let hash: Hash; - if (wallet.account.address.toLowerCase() === custodyWalletAddress.toLowerCase()) { + if (wallet.account!.address.toLowerCase() === custodyWalletAddress.toLowerCase()) { // If platform wallet IS custody wallet, use burn() directly // This avoids allowance requirement for self-burn hash = await this.executeWithRetry(() => wallet.writeContract({ @@ -568,6 +578,7 @@ export class BlockchainService { abi: tokenAbi, functionName: 'burn', args: [unsoldBalance], + account: wallet.account!, }), 'burn write'); } else { // If different, use burnFrom (requires allowance) @@ -576,6 +587,7 @@ export class BlockchainService { abi: tokenAbi, functionName: 'burnFrom', args: [custodyWalletAddress as Address, unsoldBalance], + account: wallet.account!, }), 'burnFrom write'); } diff --git a/packages/backend/src/modules/blockchain/services/wallet.service.ts b/packages/backend/src/modules/blockchain/services/wallet.service.ts index 696801d3..02cb90a8 100644 --- a/packages/backend/src/modules/blockchain/services/wallet.service.ts +++ b/packages/backend/src/modules/blockchain/services/wallet.service.ts @@ -28,7 +28,7 @@ export class WalletService { const account = privateKeyToAccount(pk as `0x${string}`); return createWalletClient({ - account, + account: account as any, chain: this.getChain(), transport: http(this.configService.get('blockchain.rpcUrl')) }); @@ -40,7 +40,7 @@ export class WalletService { const account = privateKeyToAccount(pk as `0x${string}`); return createWalletClient({ - account, + account: account as any, chain: this.getChain(), transport: http(this.configService.get('blockchain.rpcUrl')) }); diff --git a/packages/backend/src/modules/faucet/services/faucet.service.ts b/packages/backend/src/modules/faucet/services/faucet.service.ts index 1de2cf5a..574229ec 100644 --- a/packages/backend/src/modules/faucet/services/faucet.service.ts +++ b/packages/backend/src/modules/faucet/services/faucet.service.ts @@ -62,6 +62,7 @@ export class FaucetService { abi: faucetAbi, functionName: 'requestUSDC', args: [receiverAddress as Address, this.USDC_AMOUNT], + account: wallet.account!, }); this.logger.log(`Faucet transaction submitted: ${requestHash}`); @@ -125,6 +126,7 @@ export class FaucetService { abi: methFaucetAbi, functionName: 'requestMETH', args: [receiverAddress as Address, this.METH_AMOUNT], + account: wallet.account!, }); this.logger.log(`Faucet transaction submitted: ${requestHash}`); diff --git a/packages/backend/src/modules/leverage/services/leverage-blockchain.service.ts b/packages/backend/src/modules/leverage/services/leverage-blockchain.service.ts index a3cb3501..f96c72d1 100644 --- a/packages/backend/src/modules/leverage/services/leverage-blockchain.service.ts +++ b/packages/backend/src/modules/leverage/services/leverage-blockchain.service.ts @@ -146,6 +146,7 @@ export class LeverageBlockchainService { assetIdBytes, // Pass bytes32 assetId mETHPriceUSD18, ], + account: wallet.account!, }), 'createPosition write'); // Wait for transaction and parse event to get positionId @@ -215,6 +216,7 @@ export class LeverageBlockchainService { abi, functionName: 'harvestYield', args: [BigInt(positionId), collateralPriceUSD], + account: wallet.account!, }), 'harvestYield write'); const receipt = await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ @@ -309,6 +311,7 @@ export class LeverageBlockchainService { abi, functionName: 'liquidatePosition', args: [BigInt(positionId), methPriceUSD], + account: wallet.account!, }), 'liquidatePosition write'); this.logger.log(`ā³ Waiting for confirmation... TX: ${hash}`); @@ -448,7 +451,7 @@ export class LeverageBlockchainService { const hash = await this.executeWithRetry(async () => { const nonce = await this.publicClient.getTransactionCount({ - address: wallet.account.address, + address: wallet.account!.address, }); return wallet.writeContract({ address: leverageVaultAddress as Address, @@ -456,6 +459,7 @@ export class LeverageBlockchainService { functionName: 'claimYieldFromBurn', args: [BigInt(positionId), yieldVaultAddress, rwaToken, tokenAmount], nonce, + account: wallet.account!, }); }, 'claimYieldFromBurn write'); @@ -543,7 +547,7 @@ export class LeverageBlockchainService { const hash = await this.executeWithRetry(async () => { const nonce = await this.publicClient.getTransactionCount({ - address: wallet.account.address, + address: wallet.account!.address, }); return wallet.writeContract({ address: address as Address, @@ -551,6 +555,7 @@ export class LeverageBlockchainService { functionName: 'processSettlement', args: [BigInt(positionId), settlementUSDC], nonce, + account: wallet.account!, }); }, 'processSettlement write'); @@ -638,7 +643,7 @@ export class LeverageBlockchainService { try { const hash = await this.executeWithRetry(async () => { const nonce = await this.publicClient.getTransactionCount({ - address: wallet.account.address, + address: wallet.account!.address, }); return wallet.writeContract({ address: address as Address, @@ -646,6 +651,7 @@ export class LeverageBlockchainService { functionName: 'settleLiquidation', args: [BigInt(positionId)], nonce, + account: wallet.account!, }); }, 'settleLiquidation write'); @@ -836,6 +842,7 @@ export class LeverageBlockchainService { abi, functionName: 'addCollateral', args: [BigInt(positionId), mETHAmount], + account: wallet.account!, }), 'addCollateral write'); await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ diff --git a/packages/backend/src/modules/partners/services/partner-loan.service.ts b/packages/backend/src/modules/partners/services/partner-loan.service.ts index e498bfc0..e4aa3e8a 100644 --- a/packages/backend/src/modules/partners/services/partner-loan.service.ts +++ b/packages/backend/src/modules/partners/services/partner-loan.service.ts @@ -124,6 +124,7 @@ export class PartnerLoanService { abi: usdcAbi, functionName: 'transfer', args: [partner.settlementAddress as Address, netAmount], + account: platformWallet.account!, }); await this.publicClient.waitForTransactionReceipt({ hash: transferHash }); @@ -427,12 +428,12 @@ export class PartnerLoanService { const matchingTransfer = transferLogs.find( (log) => log.args.from?.toLowerCase() === fromAddress.toLowerCase() && - log.args.to?.toLowerCase() === platformWallet.account.address.toLowerCase() + log.args.to?.toLowerCase() === platformWallet.account!.address.toLowerCase() ); if (!matchingTransfer) { throw new BadRequestException( - `No USDC transfer found from ${fromAddress} to platform wallet ${platformWallet.account.address} in transaction ${txHash}` + `No USDC transfer found from ${fromAddress} to platform wallet ${platformWallet.account!.address} in transaction ${txHash}` ); } diff --git a/packages/backend/src/modules/secondary-market/services/secondary-market.service.ts b/packages/backend/src/modules/secondary-market/services/secondary-market.service.ts index 60b0bd7a..7c11baf4 100644 --- a/packages/backend/src/modules/secondary-market/services/secondary-market.service.ts +++ b/packages/backend/src/modules/secondary-market/services/secondary-market.service.ts @@ -634,6 +634,7 @@ export class SecondaryMarketService { tokenAddress, orderIds, ], + account: wallet.account!, }); this.logger.log(`[P2P Service] ā³ Waiting for transaction confirmation: ${hash}`); diff --git a/packages/backend/src/modules/solvency/services/private-asset.service.ts b/packages/backend/src/modules/solvency/services/private-asset.service.ts index 7366df7c..1273eeaa 100644 --- a/packages/backend/src/modules/solvency/services/private-asset.service.ts +++ b/packages/backend/src/modules/solvency/services/private-asset.service.ts @@ -84,6 +84,7 @@ export class PrivateAssetService { BigInt(params.valuation), params.documentHash || '', ], + account: wallet.account!, }); this.logger.log(`Deployment transaction submitted: ${hash}`); @@ -239,6 +240,7 @@ export class PrivateAssetService { abi: tokenAbi, functionName: 'updateValuation', args: [BigInt(newValuation)], + account: wallet.account!, }); this.logger.log(`Valuation update transaction submitted: ${hash}`); @@ -283,6 +285,7 @@ export class PrivateAssetService { abi: tokenAbi, functionName: 'setActive', args: [isActive], + account: wallet.account!, }); await this.publicClient.waitForTransactionReceipt({ hash, timeout: 180000 }); diff --git a/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts b/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts index 24de69ee..b52f5b53 100644 --- a/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts +++ b/packages/backend/src/modules/solvency/services/solvency-blockchain.service.ts @@ -87,7 +87,7 @@ export class SolvencyBlockchainService { abi: tokenAbi, functionName: 'approve', args: [vaultAddress, BigInt(collateralAmount)], - account: wallet.account, + account: wallet.account!, })); await this.publicClient.waitForTransactionReceipt({ hash: approveHash }); @@ -106,7 +106,7 @@ export class SolvencyBlockchainService { tokenTypeEnum, issueOAID, ], - account: wallet.account, + account: wallet.account!, })); this.logger.log(`Deposit transaction submitted: ${hash}`); @@ -228,7 +228,7 @@ export class SolvencyBlockchainService { BigInt(loanDuration), BigInt(numberOfInstallments), ], - account: wallet.account, + account: wallet.account!, })); this.logger.log(`Borrow transaction submitted: ${hash}`); @@ -274,7 +274,7 @@ export class SolvencyBlockchainService { abi: usdcAbi, functionName: 'approve', args: [vaultAddress, BigInt(amount)], - account: wallet.account, + account: wallet.account!, })); await this.publicClient.waitForTransactionReceipt({ hash: approveHash }); @@ -286,7 +286,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'repayLoan', args: [BigInt(positionId), BigInt(amount)], - account: wallet.account, + account: wallet.account!, })); this.logger.log(`Repay transaction submitted: ${hash}`); @@ -349,7 +349,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'withdrawCollateral', args: [BigInt(positionId), BigInt(amount)], - account: wallet.account, + account: wallet.account!, })); this.logger.log(`Withdraw transaction submitted: ${hash}`); @@ -389,7 +389,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'liquidatePosition', args: [BigInt(positionId)], - account: wallet.account, + account: wallet.account!, })); this.logger.log(`Liquidation transaction submitted: ${hash}`); @@ -447,7 +447,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'settleLiquidation', args: [BigInt(positionId)], - account: wallet.account, + account: wallet.account!, })); const receipt = await this.publicClient.waitForTransactionReceipt({ @@ -688,7 +688,7 @@ export class SolvencyBlockchainService { abi: oaidAbi, functionName: 'registerUser', args: [userAddress as Address], - account: wallet.account, + account: wallet.account!, })); this.logger.log(`OAID registration transaction submitted: ${hash}`); @@ -830,7 +830,7 @@ export class SolvencyBlockchainService { abi: usdcAbi, functionName: 'approve', args: [vaultAddress, BigInt(purchaseAmountUSDC)], - account: wallet.account, + account: wallet.account!, })); await this.publicClient.waitForTransactionReceipt({ hash: approveHash }); @@ -841,7 +841,9 @@ export class SolvencyBlockchainService { address: vaultAddress as Address, abi: vaultAbi, functionName: 'purchaseAndSettleLiquidation', - args: [BigInt(positionId), BigInt(purchaseAmountUSDC)], account: wallet.account, })); + args: [BigInt(positionId), BigInt(purchaseAmountUSDC)], + account: wallet.account!, + })); this.logger.log(`Purchase and settlement transaction submitted: ${hash}`); @@ -906,7 +908,7 @@ export class SolvencyBlockchainService { abi: vaultAbi, functionName: 'markMissedPayment', args: [BigInt(positionId)], - account: wallet.account, + account: wallet.account!, })); await this.publicClient.waitForTransactionReceipt({ hash }); @@ -928,7 +930,9 @@ export class SolvencyBlockchainService { address: vaultAddress as Address, abi: vaultAbi, functionName: 'markDefaulted', - args: [BigInt(positionId)], account: wallet.account, })); + args: [BigInt(positionId)], + account: wallet.account!, + })); await this.publicClient.waitForTransactionReceipt({ hash }); this.logger.log(`Position defaulted: ${hash}`); From 78573c220c5e0a226ad67d4539bc9a4105b6a2b7 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 14:16:52 +0530 Subject: [PATCH 13/21] "contract addresses updated" --- .../deployed_contracts_creditcoin.json | 23 +++++++++++++ .../scripts/deploy/deploy_creditcoin.ts | 16 +++++++++ .../creditcoin-contracts/src/addresses.ts | 34 +++++++++---------- 3 files changed, 56 insertions(+), 17 deletions(-) create mode 100644 packages/creditcoin-contracts/deployed_contracts_creditcoin.json diff --git a/packages/creditcoin-contracts/deployed_contracts_creditcoin.json b/packages/creditcoin-contracts/deployed_contracts_creditcoin.json new file mode 100644 index 00000000..5b19ecd8 --- /dev/null +++ b/packages/creditcoin-contracts/deployed_contracts_creditcoin.json @@ -0,0 +1,23 @@ +{ + "network": "creditcoin", + "chainId": "102031", + "deployer": "0x23e67597f0898f747Fa3291C8920168adF9455D0", + "timestamp": "2026-03-04T08:21:43.737Z", + "contracts": { + "MockUSDC": "0x32223cA0BDDb1c1fD68f21de3FF64C147F2B2fC1", + "MockCTC": "0x1A600404AE282CF1A0c4Ec3320Df2055017CDE93", + "SeniorPool": "0xA5D08Fb40041CD0a349dcbEF31f9F50FBdE215F1", + "MockCTCDEX": "0x9a2C50770E0d518938eaCf9A8C745A095A722604", + "CTCDEXIntegration": "0x381451DE548C76b351e718c253f9790CDdD2b819", + "AttestationRegistry": "0x5D18b955FceE3e5a5c6CCF2F321cD28E76910662", + "TrustedIssuersRegistry": "0xde336BA92db0a667F3EF1DCc2A093B4b7B1629dA", + "IdentityRegistry": "0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238", + "YieldVault": "0x03FE7d3736402D140659e7bD92B64808E31C3f51", + "TokenFactory": "0xf63B563b6D438122cBC87f4356e60b8BB3Bc53E2", + "PrimaryMarket": "0x2E310C62A225033055E88B690F8d054ece8bcbC4", + "SecondaryMarket": "0xb9BfaEDe01f0f2b2162072b73e2b2038Fb42b5cD", + "OAID": "0x89C70bB202341c28e7a8dF333b4981BfB49b3c21", + "SolvencyVault": "0x77bB1944E2a2FC0e5D0F587699041ee09900ADA8", + "CTCLeverageVault": "0x96183D507Bbb0dA7d78192dce7FBC8C1f209061C" + } +} \ No newline at end of file diff --git a/packages/creditcoin-contracts/scripts/deploy/deploy_creditcoin.ts b/packages/creditcoin-contracts/scripts/deploy/deploy_creditcoin.ts index 0abded79..d4930f0b 100644 --- a/packages/creditcoin-contracts/scripts/deploy/deploy_creditcoin.ts +++ b/packages/creditcoin-contracts/scripts/deploy/deploy_creditcoin.ts @@ -224,6 +224,22 @@ async function main() { ); console.log(" [OK] Manifest saved to deployed_contracts_creditcoin.json"); + // Step 9: Update addresses.ts file + console.log("\n[9] Updating addresses.ts file..."); + + const addressesPath = "./src/addresses.ts"; + let addressesContent = fs.readFileSync(addressesPath, "utf8"); + + // Update each contract address in the CreditCoinContracts object + for (const [contractName, address] of Object.entries(deployedContracts)) { + // Create regex to match the specific contract line + const regex = new RegExp(`(${contractName}:\\s*)'0x[0-9a-fA-F]{40}'`, 'g'); + addressesContent = addressesContent.replace(regex, `$1'${address}'`); + } + + fs.writeFileSync(addressesPath, addressesContent); + console.log(" [OK] addresses.ts updated with deployed contract addresses"); + // Summary console.log("\n[SUCCESS] Deployment complete!"); } diff --git a/packages/creditcoin-contracts/src/addresses.ts b/packages/creditcoin-contracts/src/addresses.ts index add19582..448bd696 100644 --- a/packages/creditcoin-contracts/src/addresses.ts +++ b/packages/creditcoin-contracts/src/addresses.ts @@ -1,21 +1,21 @@ import { ContractName } from '@openassets/types'; export const CreditCoinContracts: Partial> = { - AttestationRegistry: '0x0000000000000000000000000000000000000000', // Placeholder - TrustedIssuersRegistry: '0x0000000000000000000000000000000000000000', - IdentityRegistry: '0x0000000000000000000000000000000000000000', - YieldVault: '0x0000000000000000000000000000000000000000', - TokenFactory: '0x0000000000000000000000000000000000000000', - PrimaryMarket: '0x0000000000000000000000000000000000000000', - MockUSDC: '0x0000000000000000000000000000000000000000', - MockCTC: '0x0000000000000000000000000000000000000000', - CTCFaucet: '0x0000000000000000000000000000000000000000', - MockCTCDEX: '0x0000000000000000000000000000000000000000', - SeniorPool: '0x0000000000000000000000000000000000000000', - CTCDEXIntegration: '0x0000000000000000000000000000000000000000', - CTCLeverageVault: '0x0000000000000000000000000000000000000000', - Faucet: '0x0000000000000000000000000000000000000000', - OAID: '0x0000000000000000000000000000000000000000', - SolvencyVault: '0x0000000000000000000000000000000000000000', - SecondaryMarket: '0x0000000000000000000000000000000000000000' + AttestationRegistry: '0x5D18b955FceE3e5a5c6CCF2F321cD28E76910662', + TrustedIssuersRegistry: '0xde336BA92db0a667F3EF1DCc2A093B4b7B1629dA', + IdentityRegistry: '0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238', + YieldVault: '0x03FE7d3736402D140659e7bD92B64808E31C3f51', + TokenFactory: '0xf63B563b6D438122cBC87f4356e60b8BB3Bc53E2', + PrimaryMarket: '0x2E310C62A225033055E88B690F8d054ece8bcbC4', + MockUSDC: '0x32223cA0BDDb1c1fD68f21de3FF64C147F2B2fC1', + MockCTC: '0x1A600404AE282CF1A0c4Ec3320Df2055017CDE93', + CTCFaucet: '0x0000000000000000000000000000000000000000', // Not deployed in this run + MockCTCDEX: '0x9a2C50770E0d518938eaCf9A8C745A095A722604', + SeniorPool: '0xA5D08Fb40041CD0a349dcbEF31f9F50FBdE215F1', + CTCDEXIntegration: '0x381451DE548C76b351e718c253f9790CDdD2b819', + CTCLeverageVault: '0x96183D507Bbb0dA7d78192dce7FBC8C1f209061C', + Faucet: '0x0000000000000000000000000000000000000000', // Not deployed in this run + OAID: '0x89C70bB202341c28e7a8dF333b4981BfB49b3c21', + SolvencyVault: '0x77bB1944E2a2FC0e5D0F587699041ee09900ADA8', + SecondaryMarket: '0xb9BfaEDe01f0f2b2162072b73e2b2038Fb42b5cD' } as const; From 17903b7c7adc3a029763617c32493f3a4ce61eef Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 14:29:40 +0530 Subject: [PATCH 14/21] "network added" --- packages/backend/src/main.ts | 2 ++ packages/types/src/network/network.types.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/backend/src/main.ts b/packages/backend/src/main.ts index 57dede5e..86dd8ca5 100644 --- a/packages/backend/src/main.ts +++ b/packages/backend/src/main.ts @@ -29,12 +29,14 @@ async function bootstrap() { 'Cache-Control', 'Accept', 'X-Requested-With', + 'x-network' ], exposedHeaders: [ 'Content-Type', 'Cache-Control', 'Connection', 'X-Accel-Buffering', + 'x-network', ], credentials: true, }); diff --git a/packages/types/src/network/network.types.ts b/packages/types/src/network/network.types.ts index b53ced4b..e2a25a4c 100644 --- a/packages/types/src/network/network.types.ts +++ b/packages/types/src/network/network.types.ts @@ -2,5 +2,6 @@ export enum NetworkType { MANTLE = 'mantle', STELLAR = 'stellar', ARBITRUM = 'arbitrum', + CREDITCOIN = 'creditcoin', UNKNOWN = 'unknown', } From 20cd2f53d5e7f5dd2136903e5592274c09a507ef Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 15:06:01 +0530 Subject: [PATCH 15/21] "generate types fixed " --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d546aa88..0a43bb68 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "build": "yarn workspaces foreach -A -pt run build", "lint": "eslint .", "type-check": "tsc --noEmit", - "generate:types": "yarn workspace @mantle/contracts generate:types", + "generate:types": "yarn workspaces foreach -A -pt --include '@contracts/*' run generate:types", "sync-env": "cp .env packages/backend/.env && cp .env packages/contracts/.env" }, "devDependencies": { From df1b74b4abfb14f1c231386e6484df028575f475 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 16:11:24 +0530 Subject: [PATCH 16/21] "wip admin deployment c1" --- packages/backend/.env.example | 11 + packages/backend/package.json | 2 +- .../backend/src/modules/admin/admin.module.ts | 12 +- .../implementations/creditcoin/context.md | 24 + .../creditcoin-admin-strategy.service.ts | 296 + .../src/modules/assets/assets.module.ts | 12 +- .../implementations/creditcoin/context.md | 16 + .../creditcoin-asset-origination.service.ts | 61 + .../evm/evm-contract-loader.adapter.ts | 20 +- .../blockchain/managers/creditcoin.manager.ts | 37 + .../chain-manager-registry.service.ts | 6 + .../modules/registry/registry.constants.ts | 2 + .../services/module-registry.service.ts | 93 +- packages/backend/tsconfig.json | 6 + yarn.lock | 23763 +++++++--------- 15 files changed, 10326 insertions(+), 14035 deletions(-) create mode 100644 packages/backend/src/modules/admin/implementations/creditcoin/context.md create mode 100644 packages/backend/src/modules/admin/implementations/creditcoin/creditcoin-admin-strategy.service.ts create mode 100644 packages/backend/src/modules/assets/implementations/creditcoin/context.md create mode 100644 packages/backend/src/modules/assets/implementations/creditcoin/creditcoin-asset-origination.service.ts create mode 100644 packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts diff --git a/packages/backend/.env.example b/packages/backend/.env.example index 717db040..1e24e2d3 100644 --- a/packages/backend/.env.example +++ b/packages/backend/.env.example @@ -57,6 +57,17 @@ SeniorPool= OAID= SolvencyVault= +# ============================================================================= +# CREDIT COIN CONFIGURATION +# ============================================================================= + +# --- Credit Coin Configuration (Required only if ENABLED_NETWORKS=creditcoin) --- +CREDITCOIN_RPC_URL= +CREDITCOIN_CHAIN_ID= +CREDITCOIN_ADMIN_PRIVATE_KEY= +CREDITCOIN_PLATFORM_PRIVATE_KEY= +CREDITCOIN_POLL_INTERVAL_MS=3000 + # ============================================================================= # STELLAR/SOROBAN CONFIGURATION # ============================================================================= diff --git a/packages/backend/package.json b/packages/backend/package.json index e7df1e57..b82e5cfa 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@contracts/arbitrum": "*", - "@contracts/mantle": "*", + "@contracts/creditcoin": "*", "@contracts/stellar": "*", "@nestjs/bullmq": "^11.0.4", "@nestjs/common": "^10.0.0", diff --git a/packages/backend/src/modules/admin/admin.module.ts b/packages/backend/src/modules/admin/admin.module.ts index 55420794..439244d8 100644 --- a/packages/backend/src/modules/admin/admin.module.ts +++ b/packages/backend/src/modules/admin/admin.module.ts @@ -22,7 +22,12 @@ import { RegistryModule } from '../registry/registry.module'; import { UserPortfolioModule } from '../user-portfolio/user-portfolio.module'; import { MantleAdminStrategy } from './implementations/mantle/mantle-admin-strategy.service'; import { StellarAdminStrategy } from './implementations/stellar/stellar-admin-strategy.service'; -import { MANTLE_ADMIN_STRATEGY_TOKEN, STELLAR_ADMIN_STRATEGY_TOKEN } from '../registry/registry.constants'; +import { CreditCoinAdminStrategy } from './implementations/creditcoin/creditcoin-admin-strategy.service'; +import { + MANTLE_ADMIN_STRATEGY_TOKEN, + STELLAR_ADMIN_STRATEGY_TOKEN, + CREDITCOIN_ADMIN_STRATEGY_TOKEN, +} from '../registry/registry.constants'; @Module({ imports: [ @@ -60,10 +65,15 @@ import { MANTLE_ADMIN_STRATEGY_TOKEN, STELLAR_ADMIN_STRATEGY_TOKEN } from '../re provide: STELLAR_ADMIN_STRATEGY_TOKEN, useClass: StellarAdminStrategy, }, + { + provide: CREDITCOIN_ADMIN_STRATEGY_TOKEN, + useClass: CreditCoinAdminStrategy, + }, ], exports: [ MANTLE_ADMIN_STRATEGY_TOKEN, STELLAR_ADMIN_STRATEGY_TOKEN, + CREDITCOIN_ADMIN_STRATEGY_TOKEN, TrustlineApprovalService, ], }) diff --git a/packages/backend/src/modules/admin/implementations/creditcoin/context.md b/packages/backend/src/modules/admin/implementations/creditcoin/context.md new file mode 100644 index 00000000..32c1ecf4 --- /dev/null +++ b/packages/backend/src/modules/admin/implementations/creditcoin/context.md @@ -0,0 +1,24 @@ +# Credit Coin Admin Implementation + +## Responsibilities +- Implements the `IAdminDomainStrategy` interface for Credit Coin. +- Handles on-chain admin operations for Credit Coin: + - Registering assets on `AttestationRegistry`. + - Deploying tokens via `TokenFactory`. + - Listing assets on `PrimaryMarket`. + - Revoking assets. + - Ending auctions. + - Approving marketplace for token spending. + - Supplying yield settlements. + +## Implementation Details +- Credit Coin is EVM-compatible and uses the same core contract architecture as Mantle. +- All on-chain calls are routed through the `BlockchainService`, which uses the `CreditCoinChainManager`'s adapter when the network context is set to Credit Coin. +- Database updates mirror the Mantle implementation to maintain state consistency across networks. + +## Dependencies +- `AssetModel`, `SettlementModel`: MongoDB access for relevant documents. +- `BlockchainService`: Interface for on-chain interactions. +- `NetworkRegistryService`: Higher-level blockchain operations (fee transfers, yield deposits). +- `AssetLifecycleService`: Shared business logic for asset-related tasks. +- `NotificationService`: Creating user and originator notifications. diff --git a/packages/backend/src/modules/admin/implementations/creditcoin/creditcoin-admin-strategy.service.ts b/packages/backend/src/modules/admin/implementations/creditcoin/creditcoin-admin-strategy.service.ts new file mode 100644 index 00000000..c614c7ce --- /dev/null +++ b/packages/backend/src/modules/admin/implementations/creditcoin/creditcoin-admin-strategy.service.ts @@ -0,0 +1,296 @@ +import { Injectable, Logger, HttpException, HttpStatus } from '@nestjs/common'; +import { InjectModel } from '@nestjs/mongoose'; +import { Model } from 'mongoose'; +import { Asset, AssetDocument } from '../../../../database/schemas/asset.schema'; +import { Settlement, SettlementDocument } from '../../../../database/schemas/settlement.schema'; +import { BlockchainService } from '../../../blockchain/services/blockchain.service'; +import { AssetLifecycleService } from '../../../assets/services/asset-lifecycle.service'; +import { NotificationService } from '../../../notifications/services/notification.service'; +import { IAdminDomainStrategy } from '../../../registry/interfaces/admin-domain.interface'; +import { DeployTokenDto } from '../../../blockchain/dto/deploy-token.dto'; +import { ListOnMarketplaceDto } from '../../../blockchain/dto/list-on-marketplace.dto'; +import { NetworkRegistryService } from '../../../blockchain/services/network-registry.service'; +import { ConfigService } from '@nestjs/config'; +import { privateKeyToAccount } from 'viem/accounts'; +import { + AssetStatus, + NotificationType, + NotificationSeverity, + NotificationAction +} from '@openassets/types'; + +@Injectable() +export class CreditCoinAdminStrategy implements IAdminDomainStrategy { + private readonly logger = new Logger(CreditCoinAdminStrategy.name); + + constructor( + @InjectModel(Asset.name) private assetModel: Model, + @InjectModel(Settlement.name) private settlementModel: Model, + private readonly blockchainService: BlockchainService, + private readonly networkRegistryService: NetworkRegistryService, + private readonly assetLifecycleService: AssetLifecycleService, + private readonly notificationService: NotificationService, + private readonly configService: ConfigService, + ) { } + + async registerAsset(assetId: string): Promise { + const payload = await this.assetLifecycleService.getRegisterAssetPayload(assetId); + const txHash = await this.blockchainService.registerAsset(payload); + + await this.assetModel.updateOne( + { assetId }, + { + $set: { + status: AssetStatus.REGISTERED, + 'registry.transactionHash': txHash, + 'registry.registeredAt': new Date(), + 'checkpoints.registered': true, + }, + }, + ); + + const asset = await this.assetModel.findOne({ assetId }); + if (asset) { + await this.notificationService.create({ + userId: asset.originator, + walletAddress: asset.originator, + header: 'Asset Registered On-Chain (Credit Coin)', + detail: `Your asset ${asset.metadata.invoiceNumber} has been successfully registered on Credit Coin.`, + type: NotificationType.ASSET_STATUS, + severity: NotificationSeverity.SUCCESS, + action: NotificationAction.VIEW_ASSET, + actionMetadata: { assetId }, + }); + } + + return { + success: true, + message: 'Asset successfully registered on Credit Coin and database updated', + assetId, + status: AssetStatus.REGISTERED, + transactionHash: txHash, + // Explorer URL would be chain specific + }; + } + + async deployToken(dto: DeployTokenDto): Promise { + const result = await this.blockchainService.deployToken(dto); + + await this.assetModel.updateOne( + { assetId: dto.assetId }, + { + $set: { + status: AssetStatus.TOKENIZED, + 'token.address': result.tokenAddress, + 'token.deployedAt': new Date(), + 'token.transactionHash': result.hash, + 'token.supply': dto.totalSupply, + 'checkpoints.tokenized': true, + }, + }, + ); + + const asset = await this.assetModel.findOne({ assetId: dto.assetId }); + if (asset) { + await this.notificationService.create({ + userId: asset.originator, + walletAddress: asset.originator, + header: 'Token Deployment Complete (Credit Coin)', + detail: `Your asset ${asset.metadata.invoiceNumber} has been tokenized on Credit Coin. Token address: ${result.tokenAddress}`, + type: NotificationType.TOKEN_DEPLOYED, + severity: NotificationSeverity.SUCCESS, + action: NotificationAction.VIEW_ASSET, + actionMetadata: { assetId: dto.assetId, tokenAddress: result.tokenAddress }, + }); + } + + return { + success: true, + message: 'Token deployed successfully on Credit Coin and database updated', + assetId: dto.assetId, + status: AssetStatus.TOKENIZED, + tokenAddress: result.tokenAddress, + complianceAddress: result.complianceAddress, + transactionHash: result.hash, + }; + } + + async listOnMarketplace(dto: ListOnMarketplaceDto): Promise { + const asset = await this.assetModel.findOne({ assetId: dto.assetId }); + if (!asset || !asset.token?.address) { + throw new HttpException('Asset or token not found', HttpStatus.NOT_FOUND); + } + + const listingType = asset.assetType; + const price = asset.tokenParams?.pricePerToken; + const minInvestment = asset.tokenParams?.minInvestment; + const duration = dto.duration; + + if (listingType === 'AUCTION' && !duration) { + throw new HttpException('Duration is required for AUCTION listings', HttpStatus.BAD_REQUEST); + } + + if (!listingType || !price || !minInvestment) { + throw new HttpException('Required listing parameters missing in database', HttpStatus.BAD_REQUEST); + } + + const minPrice = listingType === 'AUCTION' + ? (asset.listing?.priceRange?.min || price) + : '0'; + + const txHash = await this.blockchainService.listOnMarketplace( + asset.token.address, + listingType, + price, + minInvestment, + duration, + minPrice, + ); + + await this.assetModel.updateOne( + { assetId: dto.assetId }, + { + $set: { + status: AssetStatus.LISTED, + 'listing.type': listingType, + 'listing.price': price, + 'listing.active': true, + 'listing.listedAt': new Date(), + 'listing.sold': '0', + 'listing.phase': listingType === 'AUCTION' ? 'BIDDING' : undefined, + 'listing.duration': duration, + }, + }, + ); + + await this.notificationService.create({ + userId: asset.originator, + walletAddress: asset.originator, + header: 'Asset Listed on Marketplace (Credit Coin)', + detail: `Your asset ${asset.metadata.invoiceNumber} is now live on the Credit Coin marketplace.`, + type: NotificationType.MARKETPLACE_LISTING, + severity: NotificationSeverity.SUCCESS, + action: NotificationAction.VIEW_MARKETPLACE, + actionMetadata: { assetId: dto.assetId, tokenAddress: asset.token.address }, + }); + + return { + success: true, + message: 'Token listed on Credit Coin marketplace', + assetId: dto.assetId, + transactionHash: txHash, + }; + } + + async revokeAsset(assetId: string, reason: string): Promise { + const txHash = await this.blockchainService.revokeAsset(assetId, reason); + await this.assetModel.updateOne( + { assetId }, + { $set: { status: AssetStatus.REVOKED } } + ); + return { + success: true, + message: 'Asset revoked on-chain (Credit Coin)', + assetId, + transactionHash: txHash, + }; + } + + async endAuctionOnChain(assetId: string, clearingPrice: string): Promise { + const asset = await this.assetModel.findOne({ assetId }); + if (!asset || !asset.token?.address) { + throw new HttpException('Asset or token not found', HttpStatus.NOT_FOUND); + } + + const resultOrStatus: any = await this.networkRegistryService.endAuctionOnMarketplace(asset.token.address, clearingPrice); + + if (resultOrStatus.skipped) { + throw new HttpException(`Auction end skipped: ${resultOrStatus.reason}`, HttpStatus.BAD_REQUEST); + } + + const txId = resultOrStatus.txId; + const result = await this.assetLifecycleService.endAuction(assetId, clearingPrice, txId); + return { + ...result, + transactionHash: txId, + }; + } + + async approveMarketplace(assetId: string): Promise { + const asset = await this.assetModel.findOne({ assetId }); + if (!asset || !asset.token?.address) { + throw new HttpException('Asset or token not found', HttpStatus.NOT_FOUND); + } + + const txHash = await this.blockchainService.approveMarketplace(asset.token.address); + + return { + success: true, + message: 'Marketplace approved to spend tokens on Credit Coin', + assetId, + transactionHash: txHash, + }; + } + + async supplyYieldSettlement(settlementId: string): Promise { + const settlement = await this.settlementModel.findById(settlementId).exec(); + if (!settlement) { + throw new HttpException('Settlement not found', HttpStatus.NOT_FOUND); + } + + if (!settlement.usdcAmount) { + throw new HttpException('Settlement USDC amount not confirmed', HttpStatus.BAD_REQUEST); + } + + const asset = await this.assetModel.findOne({ assetId: settlement.assetId }).exec(); + if (!asset || !asset.token?.address) { + throw new HttpException('Asset or token not found', HttpStatus.NOT_FOUND); + } + + const tokenAddress = asset.token.address; + const platformFeeUsdcWei = Math.floor(settlement.platformFee * 1e6); // Convert USD to USDC wei (6 decimals) + const netDistributionUsdcWei = Math.floor(settlement.netDistribution * 1e6); + + this.logger.log(`[Credit Coin] Supplying yield settlement:`); + this.logger.log(` Settlement ID: ${settlementId}`); + this.logger.log(` Token: ${tokenAddress}`); + this.logger.log(` Platform Fee: $${settlement.platformFee.toFixed(2)} (${platformFeeUsdcWei} USDC wei)`); + this.logger.log(` Net Distribution: $${settlement.netDistribution.toFixed(2)} (${netDistributionUsdcWei} USDC wei)`); + + // Get admin wallet address for fee transfer + let adminWalletAddress = this.configService.get('blockchain.adminWallet'); + if (!adminWalletAddress) { + const pk = this.configService.get('blockchain.adminPrivateKey'); + if (!pk) { + throw new HttpException('Admin wallet address not configured', HttpStatus.INTERNAL_SERVER_ERROR); + } + adminWalletAddress = privateKeyToAccount(pk as `0x${string}`).address; + } + + // Step 1: Transfer platform fee to admin wallet + const feeResult = await this.networkRegistryService.transferUSDCForFee( + adminWalletAddress, + platformFeeUsdcWei.toString(), + ); + + // Step 2: Deposit net distribution to YieldVault + const vaultResult = await this.networkRegistryService.depositYieldToVault( + tokenAddress, + netDistributionUsdcWei.toString(), + ); + + // Update settlement record with transaction hashes + await this.settlementModel.findByIdAndUpdate(settlementId, { + feeTransferTxHash: feeResult.txId, + vaultDepositTxHash: vaultResult.txId, + }); + + return { + success: true, + feeTransferTxHash: feeResult.txId, + vaultDepositTxHash: vaultResult.txId, + feeSkipped: feeResult.skipped, + vaultSkipped: vaultResult.skipped, + }; + } +} diff --git a/packages/backend/src/modules/assets/assets.module.ts b/packages/backend/src/modules/assets/assets.module.ts index 944b84a2..eb5207d6 100644 --- a/packages/backend/src/modules/assets/assets.module.ts +++ b/packages/backend/src/modules/assets/assets.module.ts @@ -16,7 +16,12 @@ import { AnnouncementsModule } from '../announcements/announcements.module'; import { NotificationsModule } from '../notifications/notifications.module'; import { MantleAssetOriginationService } from './implementations/mantle/mantle-asset-origination.service'; import { StellarAssetOriginationService } from './implementations/stellar/stellar-asset-origination.service'; -import { MANTLE_ASSET_ORIGINATION_TOKEN, STELLAR_ASSET_ORIGINATION_TOKEN } from '../registry/registry.constants'; +import { CreditCoinAssetOriginationService } from './implementations/creditcoin/creditcoin-asset-origination.service'; +import { + MANTLE_ASSET_ORIGINATION_TOKEN, + STELLAR_ASSET_ORIGINATION_TOKEN, + CREDITCOIN_ASSET_ORIGINATION_TOKEN, +} from '../registry/registry.constants'; @Module({ imports: [ @@ -51,11 +56,16 @@ import { MANTLE_ASSET_ORIGINATION_TOKEN, STELLAR_ASSET_ORIGINATION_TOKEN } from provide: STELLAR_ASSET_ORIGINATION_TOKEN, useClass: StellarAssetOriginationService, }, + { + provide: CREDITCOIN_ASSET_ORIGINATION_TOKEN, + useClass: CreditCoinAssetOriginationService, + }, ], exports: [ AssetLifecycleService, MANTLE_ASSET_ORIGINATION_TOKEN, STELLAR_ASSET_ORIGINATION_TOKEN, + CREDITCOIN_ASSET_ORIGINATION_TOKEN, ], }) export class AssetModule {} diff --git a/packages/backend/src/modules/assets/implementations/creditcoin/context.md b/packages/backend/src/modules/assets/implementations/creditcoin/context.md new file mode 100644 index 00000000..963d7227 --- /dev/null +++ b/packages/backend/src/modules/assets/implementations/creditcoin/context.md @@ -0,0 +1,16 @@ +# Credit Coin Assets Implementation + +## Responsibilities +- Implements the `IAssetOriginationService` interface for Credit Coin. +- Manages the asset lifecycle for Credit Coin assets. + +## Implementation Details +- Asset origination on Credit Coin is currently a database-only operation. +- Most methods delegate directly to the shared `AssetLifecycleService`. +- On-chain operations (registering assets, deploying tokens, listing on marketplace) are handled by the `CreditCoinAdminStrategy`. + +## Dependencies +- `AssetLifecycleService`: Shared business logic for asset lifecycle. +- `AssetModel`: MongoDB access for asset documents. +- `BlockchainService`: Shared blockchain interactions (for legacy support if needed). +- `NotificationService`: Creating user notifications. diff --git a/packages/backend/src/modules/assets/implementations/creditcoin/creditcoin-asset-origination.service.ts b/packages/backend/src/modules/assets/implementations/creditcoin/creditcoin-asset-origination.service.ts new file mode 100644 index 00000000..936fc095 --- /dev/null +++ b/packages/backend/src/modules/assets/implementations/creditcoin/creditcoin-asset-origination.service.ts @@ -0,0 +1,61 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { InjectModel } from '@nestjs/mongoose'; +import { Model } from 'mongoose'; +import { Asset, AssetDocument } from '../../../../database/schemas/asset.schema'; +import { AssetLifecycleService } from '../../services/asset-lifecycle.service'; +import { IAssetOriginationService } from '../../../registry/interfaces/asset-origination.interface'; +import { CreateAssetDto } from '../../dto/create-asset.dto'; +import { BlockchainService } from '../../../blockchain/services/blockchain.service'; +import { NotificationService } from '../../../notifications/services/notification.service'; + +@Injectable() +export class CreditCoinAssetOriginationService implements IAssetOriginationService { + private readonly logger = new Logger(CreditCoinAssetOriginationService.name); + + constructor( + @InjectModel(Asset.name) private assetModel: Model, + private assetLifecycleService: AssetLifecycleService, + private blockchainService: BlockchainService, + private notificationService: NotificationService, + ) { } + + async createAsset(userWallet: string, dto: CreateAssetDto, file: Express.Multer.File): Promise { + return this.assetLifecycleService.createAsset(userWallet, dto, file); + } + + async approveAsset(assetId: string, adminWallet: string): Promise { + return this.assetLifecycleService.approveAsset(assetId, adminWallet); + } + + async registerAsset(assetId: string): Promise { + throw new Error('registerAsset should be called via AdminDomainStrategy'); + } + + async deployToken(assetId: string, totalSupply: string): Promise { + throw new Error('deployToken should be called via AdminDomainStrategy'); + } + + async listOnMarketplace(assetId: string, duration?: number): Promise { + throw new Error('listOnMarketplace should be called via AdminDomainStrategy'); + } + + async payoutOriginator(assetId: string): Promise { + return this.assetLifecycleService.payoutOriginator(assetId); + } + + async getAsset(assetId: string): Promise { + return this.assetLifecycleService.getAsset(assetId); + } + + async getAssetsByOriginator(originator: string): Promise { + return this.assetLifecycleService.getAssetsByOriginator(originator); + } + + async getAllAssets(filters?: any): Promise { + return this.assetLifecycleService.getAllAssets(filters); + } + + async rejectAsset(assetId: string, reason: string): Promise { + return this.assetLifecycleService.rejectAsset(assetId, reason); + } +} diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts index a3da575a..f4adb774 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-contract-loader.adapter.ts @@ -10,8 +10,18 @@ export class EvmContractAdapter implements ContractAdapter { private contracts: Partial> = {}; private abis: Partial> = {}; - constructor(private configService: ConfigService) { - this.loadContracts(); + constructor( + private configService: ConfigService, + initialContracts?: Record, + initialAbis?: Record, + ) { + if (initialContracts && initialAbis) { + this.contracts = { ...initialContracts }; + this.abis = { ...initialAbis }; + this.addStandardAliases(); + } else { + this.loadContracts(); + } } private loadContracts() { @@ -38,6 +48,12 @@ export class EvmContractAdapter implements ContractAdapter { this.contracts = { ...this.contracts, ...envContracts }; } + private addStandardAliases() { + this.addAlias('PrimaryMarketplace', 'PrimaryMarket'); + this.addAlias('USDC', 'MockUSDC'); + // LeverageVault alias is added context-specifically if needed + } + private addAlias(alias: string, canonical: string) { if (this.contracts[canonical as any] && !this.contracts[alias]) { this.contracts[alias] = this.contracts[canonical as any]; diff --git a/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts b/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts new file mode 100644 index 00000000..6c3517be --- /dev/null +++ b/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts @@ -0,0 +1,37 @@ +import { Logger } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { NetworkType } from '@openassets/types'; +import { ChainManager } from '../interfaces/chain-manager.interface'; +import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { EvmContractAdapter } from '../adapters/evm/evm-contract-loader.adapter'; +import { CreditCoinContracts, CreditCoinAbis } from '@contracts/creditcoin'; + +export class CreditCoinChainManager implements ChainManager { + private readonly logger = new Logger(CreditCoinChainManager.name); + private readonly contractAdapter: ContractAdapter; + + constructor(private configService: ConfigService) { + this.contractAdapter = new EvmContractAdapter( + this.configService, + CreditCoinContracts as Record, + CreditCoinAbis as Record, + ); + } + + getType(): NetworkType { + return NetworkType.CREDITCOIN; + } + + getContractAdapter(): ContractAdapter { + return this.contractAdapter; + } + + async startBackgroundOperations(): Promise { + this.logger.log('Starting Credit Coin background operations...'); + // Block polling and event processing to be added here + } + + async stopBackgroundOperations(): Promise { + this.logger.log('Stopping Credit Coin background operations...'); + } +} diff --git a/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts b/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts index 2668536e..9014d384 100644 --- a/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts +++ b/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts @@ -5,6 +5,7 @@ import { ChainManager } from '../interfaces/chain-manager.interface'; import { MantleChainManager } from '../managers/mantle.manager'; import { ArbitrumChainManager } from '../managers/arbitrum.manager'; import { StellarChainManager } from '../managers/stellar.manager'; +import { CreditCoinChainManager } from '../managers/creditcoin.manager'; @Injectable() export class ChainManagerRegistry implements OnModuleInit, OnModuleDestroy { @@ -44,6 +45,11 @@ export class ChainManagerRegistry implements OnModuleInit, OnModuleDestroy { this.managers.set(NetworkType.STELLAR, new StellarChainManager()); this.logger.log('StellarChainManager initialized'); } + + if (enabledNetworks.includes(NetworkType.CREDITCOIN)) { + this.managers.set(NetworkType.CREDITCOIN, new CreditCoinChainManager(this.configService)); + this.logger.log('CreditCoinChainManager initialized'); + } } private async startOperations() { diff --git a/packages/backend/src/modules/registry/registry.constants.ts b/packages/backend/src/modules/registry/registry.constants.ts index 0125ce12..2c7580af 100644 --- a/packages/backend/src/modules/registry/registry.constants.ts +++ b/packages/backend/src/modules/registry/registry.constants.ts @@ -6,6 +6,8 @@ export const ADMIN_DOMAIN_STRATEGY = 'ADMIN_DOMAIN_STRATEGY'; export const MANTLE_ASSET_ORIGINATION_TOKEN = 'MANTLE_ASSET_ORIGINATION_TOKEN'; export const STELLAR_ASSET_ORIGINATION_TOKEN = 'STELLAR_ASSET_ORIGINATION_TOKEN'; +export const CREDITCOIN_ASSET_ORIGINATION_TOKEN = 'CREDITCOIN_ASSET_ORIGINATION_TOKEN'; export const MANTLE_ADMIN_STRATEGY_TOKEN = 'MANTLE_ADMIN_STRATEGY_TOKEN'; export const STELLAR_ADMIN_STRATEGY_TOKEN = 'STELLAR_ADMIN_STRATEGY_TOKEN'; +export const CREDITCOIN_ADMIN_STRATEGY_TOKEN = 'CREDITCOIN_ADMIN_STRATEGY_TOKEN'; diff --git a/packages/backend/src/modules/registry/services/module-registry.service.ts b/packages/backend/src/modules/registry/services/module-registry.service.ts index ffb23703..6e8c4b09 100644 --- a/packages/backend/src/modules/registry/services/module-registry.service.ts +++ b/packages/backend/src/modules/registry/services/module-registry.service.ts @@ -2,13 +2,16 @@ import { Injectable, Logger, OnModuleInit } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { ModuleRef } from '@nestjs/core'; import { NetworkType } from '@openassets/types'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { ASSET_ORIGINATION_SERVICE, MANTLE_ASSET_ORIGINATION_TOKEN, STELLAR_ASSET_ORIGINATION_TOKEN, + CREDITCOIN_ASSET_ORIGINATION_TOKEN, ADMIN_DOMAIN_STRATEGY, MANTLE_ADMIN_STRATEGY_TOKEN, STELLAR_ADMIN_STRATEGY_TOKEN, + CREDITCOIN_ADMIN_STRATEGY_TOKEN, } from '../registry.constants'; import { IAssetOriginationService } from '../interfaces/asset-origination.interface'; import { IAdminDomainStrategy } from '../interfaces/admin-domain.interface'; @@ -16,53 +19,80 @@ import { IAdminDomainStrategy } from '../interfaces/admin-domain.interface'; @Injectable() export class ModuleRegistryService implements OnModuleInit { private readonly logger = new Logger(ModuleRegistryService.name); - private readonly serviceMap = new Map(); - private networkType?: NetworkType; + + // Maps network -> (service key -> implementation) + private readonly implementationMap = new Map>(); constructor( private configService: ConfigService, private moduleRef: ModuleRef, + private networkContextService: NetworkContextService, ) { } async onModuleInit() { - this.networkType = this.configService.get('network.networkType') || NetworkType.MANTLE; - this.logger.log(`Initializing ModuleRegistry for network: ${this.networkType}`); - - await this.resolveServices(); + this.logger.log('Initializing ModuleRegistry for multi-network support'); + await this.resolveAllImplementations(); } - private async resolveServices() { - try { - // Resolve Asset Origination Service - const isEvm = this.networkType === NetworkType.MANTLE || this.networkType === NetworkType.ARBITRUM; - const assetToken = isEvm - ? MANTLE_ASSET_ORIGINATION_TOKEN - : STELLAR_ASSET_ORIGINATION_TOKEN; + private async resolveAllImplementations() { + const networks = Object.values(NetworkType).filter(n => n !== NetworkType.UNKNOWN); + + for (const network of networks) { + const networkMap = new Map(); + this.implementationMap.set(network, networkMap); - await this.resolveService(ASSET_ORIGINATION_SERVICE, assetToken); + // Resolve Asset Origination + const assetToken = this.getAssetOriginationToken(network); + if (assetToken) { + await this.resolveAndRegister(network, ASSET_ORIGINATION_SERVICE, assetToken); + } - // Resolve Admin Domain Strategy - const adminToken = isEvm - ? MANTLE_ADMIN_STRATEGY_TOKEN - : STELLAR_ADMIN_STRATEGY_TOKEN; + // Resolve Admin Strategy + const adminToken = this.getAdminStrategyToken(network); + if (adminToken) { + await this.resolveAndRegister(network, ADMIN_DOMAIN_STRATEGY, adminToken); + } + } + } - await this.resolveService(ADMIN_DOMAIN_STRATEGY, adminToken); + private getAssetOriginationToken(network: NetworkType): string | null { + switch (network) { + case NetworkType.MANTLE: + case NetworkType.ARBITRUM: + return MANTLE_ASSET_ORIGINATION_TOKEN; + case NetworkType.STELLAR: + return STELLAR_ASSET_ORIGINATION_TOKEN; + case NetworkType.CREDITCOIN: + return CREDITCOIN_ASSET_ORIGINATION_TOKEN; + default: + return null; + } + } - // Add other services as they are implemented... - } catch (error: any) { - this.logger.error(`Error resolving services in ModuleRegistry: ${error.message}`); + private getAdminStrategyToken(network: NetworkType): string | null { + switch (network) { + case NetworkType.MANTLE: + case NetworkType.ARBITRUM: + return MANTLE_ADMIN_STRATEGY_TOKEN; + case NetworkType.STELLAR: + return STELLAR_ADMIN_STRATEGY_TOKEN; + case NetworkType.CREDITCOIN: + return CREDITCOIN_ADMIN_STRATEGY_TOKEN; + default: + return null; } } - private async resolveService(key: string, token: string) { + private async resolveAndRegister(network: NetworkType, key: string, token: string) { try { const service = this.moduleRef.get(token, { strict: false }); if (service) { - this.serviceMap.set(key, service); - this.logger.log(`Resolved ${key}: ${token}`); + this.implementationMap.get(network)?.set(key, service); + this.logger.debug(`Registered ${key} for ${network}: ${token}`); } } catch (e) { - this.logger.warn(`Could not resolve ${token}. This is expected if the network-specific implementation is not loaded.`); + // Expected if implementation is not registered in the module + this.logger.warn(`Could not resolve ${token} for ${network}. Implementation might not be loaded.`); } } @@ -75,13 +105,18 @@ export class ModuleRegistryService implements OnModuleInit { } /** - * Generic getter for any registered service + * Generic getter for any registered service, resolving by current context network */ getService(token: string): T { - const service = this.serviceMap.get(token); + const network = this.networkContextService.getNetwork(); + const networkMap = this.implementationMap.get(network); + const service = networkMap?.get(token); + if (!service) { - throw new Error(`Service ${token} not available for network ${this.networkType}`); + this.logger.error(`Service ${token} not available for network ${network}`); + throw new Error(`Service ${token} not available for network ${network}`); } + return service as T; } } diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json index 176053f5..f5a5ff75 100644 --- a/packages/backend/tsconfig.json +++ b/packages/backend/tsconfig.json @@ -23,6 +23,12 @@ "@contracts/arbitrum/*": [ "../arbitrum-contracts/*" ], + "@contracts/creditcoin": [ + "../creditcoin-contracts/index.ts" + ], + "@contracts/creditcoin/*": [ + "../creditcoin-contracts/*" + ], "@contracts/stellar": [ "../stellar-contracts/index.ts" ], diff --git a/yarn.lock b/yarn.lock index e301daf8..c155dce3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,14001 +1,9762 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 8 - cacheKey: 10c0 - -"@adraffy/ens-normalize@npm:1.10.1": - version: 1.10.1 - resolution: "@adraffy/ens-normalize@npm:1.10.1" - checksum: 10c0/fdd647604e8fac6204921888aaf5a6bc65eabf0d2921bc5f93b64d01f4bc33ead167c1445f7de05468d05cd92ac31b74c68d2be840c62b79d73693308f885c06 - languageName: node - linkType: hard - -"@adraffy/ens-normalize@npm:^1.11.0": - version: 1.11.1 - resolution: "@adraffy/ens-normalize@npm:1.11.1" - checksum: 10c0/b364e2a57131db278ebf2f22d1a1ac6d8aea95c49dd2bbbc1825870b38aa91fd8816aba580a1f84edc50a45eb6389213dacfd1889f32893afc8549a82d304767 - languageName: node - linkType: hard - -"@angular-devkit/core@npm:17.3.11": - version: 17.3.11 - resolution: "@angular-devkit/core@npm:17.3.11" - dependencies: - ajv: "npm:8.12.0" - ajv-formats: "npm:2.1.1" - jsonc-parser: "npm:3.2.1" - picomatch: "npm:4.0.1" - rxjs: "npm:7.8.1" - source-map: "npm:0.7.4" - peerDependencies: - chokidar: ^3.5.2 - peerDependenciesMeta: - chokidar: - optional: true - checksum: 10c0/c6d3ed77e98568d3f2126e5682631ceec32cdc6bb1c642bf0c8bcbd5a71ee521941e6ff981ec104703e668cfb886043e0bd239442645bef6151d265799128521 - languageName: node - linkType: hard - -"@angular-devkit/schematics-cli@npm:17.3.11": - version: 17.3.11 - resolution: "@angular-devkit/schematics-cli@npm:17.3.11" - dependencies: - "@angular-devkit/core": "npm:17.3.11" - "@angular-devkit/schematics": "npm:17.3.11" - ansi-colors: "npm:4.1.3" - inquirer: "npm:9.2.15" - symbol-observable: "npm:4.0.0" - yargs-parser: "npm:21.1.1" - bin: - schematics: bin/schematics.js - checksum: 10c0/042c8a740f20ff4e5675a49d74551e936311b82a6f22d9d3eaefe032dc4ac61ad679004524bf4a69fbf394c9d1eb562d20cc5abd5571131cd6e8bbbe3f3bb768 - languageName: node - linkType: hard - -"@angular-devkit/schematics@npm:17.3.11": - version: 17.3.11 - resolution: "@angular-devkit/schematics@npm:17.3.11" - dependencies: - "@angular-devkit/core": "npm:17.3.11" - jsonc-parser: "npm:3.2.1" - magic-string: "npm:0.30.8" - ora: "npm:5.4.1" - rxjs: "npm:7.8.1" - checksum: 10c0/981c674e724408294faa271492e49719c5854aeadfab454c0bdbe761d2ffb1e611881a236f520f6c712fe11bac7283d1edb267d8bdc2ff1b1ddc57dcd99bfaf4 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/code-frame@npm:7.27.1" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.27.1" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.1.1" - checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.27.2": - version: 7.28.5 - resolution: "@babel/compat-data@npm:7.28.5" - checksum: 10c0/702a25de73087b0eba325c1d10979eed7c9b6662677386ba7b5aa6eace0fc0676f78343bae080a0176ae26f58bd5535d73b9d0fbb547fef377692e8b249353a7 - languageName: node - linkType: hard - -"@babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": - version: 7.28.5 - resolution: "@babel/core@npm:7.28.5" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.5" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-module-transforms": "npm:^7.28.3" - "@babel/helpers": "npm:^7.28.4" - "@babel/parser": "npm:^7.28.5" - "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" - "@jridgewell/remapping": "npm:^2.3.5" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10c0/535f82238027621da6bdffbdbe896ebad3558b311d6f8abc680637a9859b96edbf929ab010757055381570b29cf66c4a295b5618318d27a4273c0e2033925e72 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/generator@npm:7.28.5" - dependencies: - "@babel/parser": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" - "@jridgewell/gen-mapping": "npm:^0.3.12" - "@jridgewell/trace-mapping": "npm:^0.3.28" - jsesc: "npm:^3.0.2" - checksum: 10c0/9f219fe1d5431b6919f1a5c60db8d5d34fe546c0d8f5a8511b32f847569234ffc8032beb9e7404649a143f54e15224ecb53a3d11b6bb85c3203e573d91fca752 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/helper-compilation-targets@npm:7.27.2" - dependencies: - "@babel/compat-data": "npm:^7.27.2" - "@babel/helper-validator-option": "npm:^7.27.1" - browserslist: "npm:^4.24.0" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 - languageName: node - linkType: hard - -"@babel/helper-globals@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/helper-globals@npm:7.28.0" - checksum: 10c0/5a0cd0c0e8c764b5f27f2095e4243e8af6fa145daea2b41b53c0c1414fe6ff139e3640f4e2207ae2b3d2153a1abd346f901c26c290ee7cb3881dd922d4ee9232 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-module-imports@npm:7.27.1" - dependencies: - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-module-transforms@npm:7.28.3" - dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/549be62515a6d50cd4cfefcab1b005c47f89bd9135a22d602ee6a5e3a01f27571868ada10b75b033569f24dc4a2bb8d04bfa05ee75c16da7ade2d0db1437fcdb - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.27.1 - resolution: "@babel/helper-plugin-utils@npm:7.27.1" - checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-string-parser@npm:7.27.1" - checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/helper-validator-identifier@npm:7.28.5" - checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-validator-option@npm:7.27.1" - checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/helpers@npm:7.28.4" - dependencies: - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.4" - checksum: 10c0/aaa5fb8098926dfed5f223adf2c5e4c7fbba4b911b73dfec2d7d3083f8ba694d201a206db673da2d9b3ae8c01793e795767654558c450c8c14b4c2175b4fcb44 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/parser@npm:7.28.5" - dependencies: - "@babel/types": "npm:^7.28.5" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/5bbe48bf2c79594ac02b490a41ffde7ef5aa22a9a88ad6bcc78432a6ba8a9d638d531d868bd1f104633f1f6bba9905746e15185b8276a3756c42b765d131b1ef - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 - languageName: node - linkType: hard - -"@babel/plugin-syntax-bigint@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-meta@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/bc5afe6a458d5f0492c02a54ad98c5756a0c13bd6d20609aae65acd560a9e141b0876da5f358dce34ea136f271c1016df58b461184d7ae9c4321e0f98588bc84 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/11589b4c89c66ef02d57bf56c6246267851ec0c361f58929327dc3e070b0dab644be625bbe7fb4c4df30c3634bfdfe31244e1f517be397d2def1487dbbe3c37d - languageName: node - linkType: hard - -"@babel/template@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/template@npm:7.27.2" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.2" - "@babel/types": "npm:^7.27.1" - checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/traverse@npm:7.28.5" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.5" - "@babel/helper-globals": "npm:^7.28.0" - "@babel/parser": "npm:^7.28.5" - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.5" - debug: "npm:^4.3.1" - checksum: 10c0/f6c4a595993ae2b73f2d4cd9c062f2e232174d293edd4abe1d715bd6281da8d99e47c65857e8d0917d9384c65972f4acdebc6749a7c40a8fcc38b3c7fb3e706f - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/types@npm:7.28.5" - dependencies: - "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.28.5" - checksum: 10c0/a5a483d2100befbf125793640dec26b90b95fd233a94c19573325898a5ce1e52cdfa96e495c7dcc31b5eca5b66ce3e6d4a0f5a4a62daec271455959f208ab08a - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 - languageName: node - linkType: hard - -"@borewit/text-codec@npm:^0.1.0": - version: 0.1.1 - resolution: "@borewit/text-codec@npm:0.1.1" - checksum: 10c0/c92606b355111053f9db47d485c8679cc09a5be0eb2738aad5b922d3744465f2fce47144ffb27d5106fa431d1d2e5a2e0140d0a22351dccf49693098702c0274 - languageName: node - linkType: hard - -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 - languageName: node - linkType: hard - -"@contracts/arbitrum@npm:*, @contracts/arbitrum@workspace:packages/arbitrum-contracts": - version: 0.0.0-use.local - resolution: "@contracts/arbitrum@workspace:packages/arbitrum-contracts" - dependencies: - "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" - "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" - "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" - "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" - "@nomicfoundation/hardhat-verify": "npm:^1.1.1" - "@nomicfoundation/hardhat-viem": "npm:^3.0.1" - "@openassets/types": "npm:*" - "@openzeppelin/contracts": "npm:5.4.0" - "@typechain/ethers-v6": "npm:^0.5.1" - "@typechain/hardhat": "npm:^8.0.0" - "@types/chai": "npm:^4.3.11" - "@types/mocha": "npm:^10.0.10" - "@types/node": "npm:^25.0.3" - chai: "npm:^4.3.10" - dotenv: "npm:^17.2.3" - ethers: "npm:^6.16.0" - hardhat: "npm:^2.22.3" - hardhat-gas-reporter: "npm:^1.0.10" - solidity-coverage: "npm:^0.8.17" - ts-node: "npm:^10.9.2" - typechain: "npm:^8.3.2" - typescript: "npm:^5.9.3" - viem: "npm:^2.43.3" - languageName: unknown - linkType: soft - -"@contracts/creditcoin@workspace:packages/creditcoin-contracts": - version: 0.0.0-use.local - resolution: "@contracts/creditcoin@workspace:packages/creditcoin-contracts" - dependencies: - "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" - "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" - "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" - "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" - "@nomicfoundation/hardhat-verify": "npm:^1.1.1" - "@nomicfoundation/hardhat-viem": "npm:^3.0.1" - "@openassets/types": "npm:*" - "@openzeppelin/contracts": "npm:5.4.0" - "@typechain/ethers-v6": "npm:^0.5.1" - "@typechain/hardhat": "npm:^8.0.0" - "@types/chai": "npm:^4.3.11" - "@types/mocha": "npm:^10.0.10" - "@types/node": "npm:^25.0.3" - chai: "npm:^4.3.10" - dotenv: "npm:^17.2.3" - ethers: "npm:^6.16.0" - hardhat: "npm:^2.22.3" - hardhat-gas-reporter: "npm:^1.0.10" - solidity-coverage: "npm:^0.8.17" - ts-node: "npm:^10.9.2" - typechain: "npm:^8.3.2" - typescript: "npm:^5.9.3" - viem: "npm:^2.43.3" - languageName: unknown - linkType: soft - -"@contracts/mantle@npm:*, @contracts/mantle@workspace:packages/contracts": - version: 0.0.0-use.local - resolution: "@contracts/mantle@workspace:packages/contracts" - dependencies: - "@nomicfoundation/hardhat-chai-matchers": "npm:2.1.0" - "@nomicfoundation/hardhat-ethers": "npm:^3.0.8" - "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" - "@nomicfoundation/hardhat-toolbox": "npm:^3.0.0" - "@nomicfoundation/hardhat-verify": "npm:^1.1.1" - "@nomicfoundation/hardhat-viem": "npm:^3.0.1" - "@openassets/types": "npm:*" - "@openzeppelin/contracts": "npm:5.4.0" - "@typechain/ethers-v6": "npm:^0.5.1" - "@typechain/hardhat": "npm:^8.0.0" - "@types/chai": "npm:^4.3.11" - "@types/mocha": "npm:^10.0.10" - "@types/node": "npm:^25.0.3" - chai: "npm:^4.3.10" - dotenv: "npm:^17.2.3" - ethers: "npm:^6.16.0" - hardhat: "npm:^2.22.3" - hardhat-gas-reporter: "npm:^1.0.10" - solidity-coverage: "npm:^0.8.17" - ts-node: "npm:^10.9.2" - typechain: "npm:^8.3.2" - typescript: "npm:^5.9.3" - viem: "npm:^2.43.3" - languageName: unknown - linkType: soft - -"@contracts/stellar@npm:*, @contracts/stellar@workspace:packages/stellar-contracts": - version: 0.0.0-use.local - resolution: "@contracts/stellar@workspace:packages/stellar-contracts" - dependencies: - "@openassets/types": "npm:*" - "@types/node": "npm:^20.0.0" - ts-node: "npm:^10.9.0" - typescript: "npm:^5.0.0" - languageName: unknown - linkType: soft - -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 - languageName: node - linkType: hard - -"@emnapi/core@npm:^1.4.3": - version: 1.8.1 - resolution: "@emnapi/core@npm:1.8.1" - dependencies: - "@emnapi/wasi-threads": "npm:1.1.0" - tslib: "npm:^2.4.0" - checksum: 10c0/2c242f4b49779bac403e1cbcc98edacdb1c8ad36562408ba9a20663824669e930bc8493be46a2522d9dc946b8d96cd7073970bae914928c7671b5221c85b432e - languageName: node - linkType: hard - -"@emnapi/runtime@npm:^1.4.3": - version: 1.8.1 - resolution: "@emnapi/runtime@npm:1.8.1" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/f4929d75e37aafb24da77d2f58816761fe3f826aad2e37fa6d4421dac9060cbd5098eea1ac3c9ecc4526b89deb58153852fa432f87021dc57863f2ff726d713f - languageName: node - linkType: hard - -"@emnapi/wasi-threads@npm:1.1.0": - version: 1.1.0 - resolution: "@emnapi/wasi-threads@npm:1.1.0" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/e6d54bf2b1e64cdd83d2916411e44e579b6ae35d5def0dea61a3c452d9921373044dff32a8b8473ae60c80692bdc39323e98b96a3f3d87ba6886b24dd0ef7ca1 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.8.0": - version: 4.9.0 - resolution: "@eslint-community/eslint-utils@npm:4.9.0" - dependencies: - eslint-visitor-keys: "npm:^3.4.3" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.9.1": - version: 4.9.1 - resolution: "@eslint-community/eslint-utils@npm:4.9.1" - dependencies: - eslint-visitor-keys: "npm:^3.4.3" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2, @eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.12.2 - resolution: "@eslint-community/regexpp@npm:4.12.2" - checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d - languageName: node - linkType: hard - -"@eslint/config-array@npm:^0.21.1": - version: 0.21.1 - resolution: "@eslint/config-array@npm:0.21.1" - dependencies: - "@eslint/object-schema": "npm:^2.1.7" - debug: "npm:^4.3.1" - minimatch: "npm:^3.1.2" - checksum: 10c0/2f657d4edd6ddcb920579b72e7a5b127865d4c3fb4dda24f11d5c4f445a93ca481aebdbd6bf3291c536f5d034458dbcbb298ee3b698bc6c9dd02900fe87eec3c - languageName: node - linkType: hard - -"@eslint/config-helpers@npm:^0.4.2": - version: 0.4.2 - resolution: "@eslint/config-helpers@npm:0.4.2" - dependencies: - "@eslint/core": "npm:^0.17.0" - checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4 - languageName: node - linkType: hard - -"@eslint/core@npm:^0.17.0": - version: 0.17.0 - resolution: "@eslint/core@npm:0.17.0" - dependencies: - "@types/json-schema": "npm:^7.0.15" - checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^3.3.1": - version: 3.3.3 - resolution: "@eslint/eslintrc@npm:3.3.3" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^10.0.1" - globals: "npm:^14.0.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.1" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10c0/532c7acc7ddd042724c28b1f020bd7bf148fcd4653bb44c8314168b5f772508c842ce4ee070299cac51c5c5757d2124bdcfcef5551c8c58ff9986e3e17f2260d - languageName: node - linkType: hard - -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223 - languageName: node - linkType: hard - -"@eslint/js@npm:9.39.2, @eslint/js@npm:^9.39.2": - version: 9.39.2 - resolution: "@eslint/js@npm:9.39.2" - checksum: 10c0/00f51c52b04ac79faebfaa65a9652b2093b9c924e945479f1f3945473f78aee83cbc76c8d70bbffbf06f7024626575b16d97b66eab16182e1d0d39daff2f26f5 - languageName: node - linkType: hard - -"@eslint/object-schema@npm:^2.1.7": - version: 2.1.7 - resolution: "@eslint/object-schema@npm:2.1.7" - checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87 - languageName: node - linkType: hard - -"@eslint/plugin-kit@npm:^0.4.1": - version: 0.4.1 - resolution: "@eslint/plugin-kit@npm:0.4.1" - dependencies: - "@eslint/core": "npm:^0.17.0" - levn: "npm:^0.4.1" - checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b - languageName: node - linkType: hard - -"@ethereumjs/rlp@npm:^4.0.1": - version: 4.0.1 - resolution: "@ethereumjs/rlp@npm:4.0.1" - bin: - rlp: bin/rlp - checksum: 10c0/78379f288e9d88c584c2159c725c4a667a9742981d638bad760ed908263e0e36bdbd822c0a902003e0701195fd1cbde7adad621cd97fdfbf552c45e835ce022c - languageName: node - linkType: hard - -"@ethereumjs/rlp@npm:^5.0.2": - version: 5.0.2 - resolution: "@ethereumjs/rlp@npm:5.0.2" - bin: - rlp: bin/rlp.cjs - checksum: 10c0/56162eaee96dd429f0528a9e51b453398546d57f26057b3e188f2aa09efe8bd430502971c54238ca9cc42af41b0a3f137cf67b9e020d52bc83caca043d64911b - languageName: node - linkType: hard - -"@ethereumjs/util@npm:^8.1.0": - version: 8.1.0 - resolution: "@ethereumjs/util@npm:8.1.0" - dependencies: - "@ethereumjs/rlp": "npm:^4.0.1" - ethereum-cryptography: "npm:^2.0.0" - micro-ftch: "npm:^0.3.1" - checksum: 10c0/4e6e0449236f66b53782bab3b387108f0ddc050835bfe1381c67a7c038fea27cb85ab38851d98b700957022f0acb6e455ca0c634249cfcce1a116bad76500160 - languageName: node - linkType: hard - -"@ethereumjs/util@npm:^9.1.0": - version: 9.1.0 - resolution: "@ethereumjs/util@npm:9.1.0" - dependencies: - "@ethereumjs/rlp": "npm:^5.0.2" - ethereum-cryptography: "npm:^2.2.1" - checksum: 10c0/7b55c79d90e55da873037b8283c37b61164f1712b194e2783bdb0a3401ff0999dc9d1404c7051589f71fb79e8aeb6952ec43ede21dd0028d7d9b1c07abcfff27 - languageName: node - linkType: hard - -"@ethersproject/abi@npm:5.8.0, @ethersproject/abi@npm:^5.0.9, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/abi@npm:5.8.0" - dependencies: - "@ethersproject/address": "npm:^5.8.0" - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/constants": "npm:^5.8.0" - "@ethersproject/hash": "npm:^5.8.0" - "@ethersproject/keccak256": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/strings": "npm:^5.8.0" - checksum: 10c0/6b759247a2f43ecc1548647d0447d08de1e946dfc7e71bfb014fa2f749c1b76b742a1d37394660ebab02ff8565674b3593fdfa011e16a5adcfc87ca4d85af39c - languageName: node - linkType: hard - -"@ethersproject/abstract-provider@npm:5.8.0, @ethersproject/abstract-provider@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/abstract-provider@npm:5.8.0" - dependencies: - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/networks": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/transactions": "npm:^5.8.0" - "@ethersproject/web": "npm:^5.8.0" - checksum: 10c0/9c183da1d037b272ff2b03002c3d801088d0534f88985f4983efc5f3ebd59b05f04bc05db97792fe29ddf87eeba3c73416e5699615f183126f85f877ea6c8637 - languageName: node - linkType: hard - -"@ethersproject/abstract-signer@npm:5.8.0, @ethersproject/abstract-signer@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/abstract-signer@npm:5.8.0" - dependencies: - "@ethersproject/abstract-provider": "npm:^5.8.0" - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - checksum: 10c0/143f32d7cb0bc7064e45674d4a9dffdb90d6171425d20e8de9dc95765be960534bae7246ead400e6f52346624b66569d9585d790eedd34b0b6b7f481ec331cc2 - languageName: node - linkType: hard - -"@ethersproject/address@npm:5.8.0, @ethersproject/address@npm:^5.0.2, @ethersproject/address@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/address@npm:5.8.0" - dependencies: - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/keccak256": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/rlp": "npm:^5.8.0" - checksum: 10c0/8bac8a4b567c75c1abc00eeca08c200de1a2d5cf76d595dc04fa4d7bff9ffa5530b2cdfc5e8656cfa8f6fa046de54be47620a092fb429830a8ddde410b9d50bc - languageName: node - linkType: hard - -"@ethersproject/base64@npm:5.8.0, @ethersproject/base64@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/base64@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - checksum: 10c0/60ae6d1e2367d70f4090b717852efe62075442ae59aeac9bb1054fe8306a2de8ef0b0561e7fb4666ecb1f8efa1655d683dd240675c3a25d6fa867245525a63ca - languageName: node - linkType: hard - -"@ethersproject/basex@npm:5.8.0, @ethersproject/basex@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/basex@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - checksum: 10c0/46a94ba9678fc458ab0bee4a0af9f659f1d3f5df5bb98485924fe8ecbd46eda37d81f95f882243d56f0f5efe051b0749163f5056e48ff836c5fba648754d4956 - languageName: node - linkType: hard - -"@ethersproject/bignumber@npm:5.8.0, @ethersproject/bignumber@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/bignumber@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - bn.js: "npm:^5.2.1" - checksum: 10c0/8e87fa96999d59d0ab4c814c79e3a8354d2ba914dfa78cf9ee688f53110473cec0df0db2aaf9d447e84ab2dbbfca39979abac4f2dac69fef4d080f4cc3e29613 - languageName: node - linkType: hard - -"@ethersproject/bytes@npm:5.8.0, @ethersproject/bytes@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/bytes@npm:5.8.0" - dependencies: - "@ethersproject/logger": "npm:^5.8.0" - checksum: 10c0/47ef798f3ab43b95dc74097b2c92365c919308ecabc3e34d9f8bf7f886fa4b99837ba5cf4dc8921baaaafe6899982f96b0e723b3fc49132c061f83d1ca3fed8b - languageName: node - linkType: hard - -"@ethersproject/constants@npm:5.8.0, @ethersproject/constants@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/constants@npm:5.8.0" - dependencies: - "@ethersproject/bignumber": "npm:^5.8.0" - checksum: 10c0/374b3c2c6da24f8fef62e2316eae96faa462826c0774ef588cd7313ae7ddac8eb1bb85a28dad80123148be2ba0821c217c14ecfc18e2e683c72adc734b6248c9 - languageName: node - linkType: hard - -"@ethersproject/contracts@npm:5.8.0": - version: 5.8.0 - resolution: "@ethersproject/contracts@npm:5.8.0" - dependencies: - "@ethersproject/abi": "npm:^5.8.0" - "@ethersproject/abstract-provider": "npm:^5.8.0" - "@ethersproject/abstract-signer": "npm:^5.8.0" - "@ethersproject/address": "npm:^5.8.0" - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/constants": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/transactions": "npm:^5.8.0" - checksum: 10c0/49961b92334c4f2fab5f4da8f3119e97c1dc39cc8695e3043931757968213f5e732c00bf896193cf0186dcb33101dcd6efb70690dee0dd2cfbfd3843f55485aa - languageName: node - linkType: hard - -"@ethersproject/hash@npm:5.8.0, @ethersproject/hash@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/hash@npm:5.8.0" - dependencies: - "@ethersproject/abstract-signer": "npm:^5.8.0" - "@ethersproject/address": "npm:^5.8.0" - "@ethersproject/base64": "npm:^5.8.0" - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/keccak256": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/strings": "npm:^5.8.0" - checksum: 10c0/72a287d4d70fae716827587339ffb449b8c23ef8728db6f8a661f359f7cb1e5ffba5b693c55e09d4e7162bf56af4a0e98a334784e0706d98102d1a5786241537 - languageName: node - linkType: hard - -"@ethersproject/hdnode@npm:5.8.0, @ethersproject/hdnode@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/hdnode@npm:5.8.0" - dependencies: - "@ethersproject/abstract-signer": "npm:^5.8.0" - "@ethersproject/basex": "npm:^5.8.0" - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/pbkdf2": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/sha2": "npm:^5.8.0" - "@ethersproject/signing-key": "npm:^5.8.0" - "@ethersproject/strings": "npm:^5.8.0" - "@ethersproject/transactions": "npm:^5.8.0" - "@ethersproject/wordlists": "npm:^5.8.0" - checksum: 10c0/da0ac7d60e76a76471be1f4f3bba3f28a24165dc3b63c6930a9ec24481e9f8b23936e5fc96363b3591cdfda4381d4623f25b06898b89bf5530b158cb5ea58fdd - languageName: node - linkType: hard - -"@ethersproject/json-wallets@npm:5.8.0, @ethersproject/json-wallets@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/json-wallets@npm:5.8.0" - dependencies: - "@ethersproject/abstract-signer": "npm:^5.8.0" - "@ethersproject/address": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/hdnode": "npm:^5.8.0" - "@ethersproject/keccak256": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/pbkdf2": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/random": "npm:^5.8.0" - "@ethersproject/strings": "npm:^5.8.0" - "@ethersproject/transactions": "npm:^5.8.0" - aes-js: "npm:3.0.0" - scrypt-js: "npm:3.0.1" - checksum: 10c0/6c5cac87bdfac9ac47bf6ac25168a85865dc02e398e97f83820568c568a8cb27cf13a3a5d482f71a2534c7d704a3faa46023bb7ebe8737872b376bec1b66c67b - languageName: node - linkType: hard - -"@ethersproject/keccak256@npm:5.8.0, @ethersproject/keccak256@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/keccak256@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - js-sha3: "npm:0.8.0" - checksum: 10c0/cd93ac6a5baf842313cde7de5e6e2c41feeea800db9e82955f96e7f3462d2ac6a6a29282b1c9e93b84ce7c91eec02347043c249fd037d6051214275bfc7fe99f - languageName: node - linkType: hard - -"@ethersproject/logger@npm:5.8.0, @ethersproject/logger@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/logger@npm:5.8.0" - checksum: 10c0/7f39f33e8f254ee681d4778bb71ce3c5de248e1547666f85c43bfbc1c18996c49a31f969f056b66d23012f2420f2d39173107284bc41eb98d0482ace1d06403e - languageName: node - linkType: hard - -"@ethersproject/networks@npm:5.8.0, @ethersproject/networks@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/networks@npm:5.8.0" - dependencies: - "@ethersproject/logger": "npm:^5.8.0" - checksum: 10c0/3f23bcc4c3843cc9b7e4b9f34df0a1f230b24dc87d51cdad84552302159a84d7899cd80c8a3d2cf8007b09ac373a5b10407007adde23d4c4881a4d6ee6bc4b9c - languageName: node - linkType: hard - -"@ethersproject/pbkdf2@npm:5.8.0, @ethersproject/pbkdf2@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/pbkdf2@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/sha2": "npm:^5.8.0" - checksum: 10c0/0397cf5370cfd568743c3e46ac431f1bd425239baa2691689f1430997d44d310cef5051ea9ee53fabe444f96aced8d6324b41da698e8d7021389dce36251e7e9 - languageName: node - linkType: hard - -"@ethersproject/properties@npm:5.8.0, @ethersproject/properties@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/properties@npm:5.8.0" - dependencies: - "@ethersproject/logger": "npm:^5.8.0" - checksum: 10c0/20256d7eed65478a38dabdea4c3980c6591b7b75f8c45089722b032ceb0e1cd3dd6dd60c436cfe259337e6909c28d99528c172d06fc74bbd61be8eb9e68be2e6 - languageName: node - linkType: hard - -"@ethersproject/providers@npm:5.8.0": - version: 5.8.0 - resolution: "@ethersproject/providers@npm:5.8.0" - dependencies: - "@ethersproject/abstract-provider": "npm:^5.8.0" - "@ethersproject/abstract-signer": "npm:^5.8.0" - "@ethersproject/address": "npm:^5.8.0" - "@ethersproject/base64": "npm:^5.8.0" - "@ethersproject/basex": "npm:^5.8.0" - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/constants": "npm:^5.8.0" - "@ethersproject/hash": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/networks": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/random": "npm:^5.8.0" - "@ethersproject/rlp": "npm:^5.8.0" - "@ethersproject/sha2": "npm:^5.8.0" - "@ethersproject/strings": "npm:^5.8.0" - "@ethersproject/transactions": "npm:^5.8.0" - "@ethersproject/web": "npm:^5.8.0" - bech32: "npm:1.1.4" - ws: "npm:8.18.0" - checksum: 10c0/893dba429443bbf0a3eadef850e772ad1c706cf17ae6ae48b73467a23b614a3f461e9004850e24439b5c73d30e9259bc983f0f90a911ba11af749e6384fd355a - languageName: node - linkType: hard - -"@ethersproject/random@npm:5.8.0, @ethersproject/random@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/random@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - checksum: 10c0/e44c010715668fc29383141ae16cd2ec00c34a434d47e23338e740b8c97372515d95d3b809b969eab2055c19e92b985ca591d326fbb71270c26333215f9925d1 - languageName: node - linkType: hard - -"@ethersproject/rlp@npm:5.8.0, @ethersproject/rlp@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/rlp@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - checksum: 10c0/db742ec9c1566d6441242cc2c2ae34c1e5304d48e1fe62bc4e53b1791f219df211e330d2de331e0e4f74482664e205c2e4220e76138bd71f1ec07884e7f5221b - languageName: node - linkType: hard - -"@ethersproject/sha2@npm:5.8.0, @ethersproject/sha2@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/sha2@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - hash.js: "npm:1.1.7" - checksum: 10c0/eab941907b7d40ee8436acaaedee32306ed4de2cb9ab37543bc89b1dd2a78f28c8da21efd848525fa1b04a78575be426cfca28f5392f4d28ce6c84e7c26a9421 - languageName: node - linkType: hard - -"@ethersproject/signing-key@npm:5.8.0, @ethersproject/signing-key@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/signing-key@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - bn.js: "npm:^5.2.1" - elliptic: "npm:6.6.1" - hash.js: "npm:1.1.7" - checksum: 10c0/a7ff6cd344b0609737a496b6d5b902cf5528ed5a7ce2c0db5e7b69dc491d1810d1d0cd51dddf9dc74dd562ab4961d76e982f1750359b834c53c202e85e4c8502 - languageName: node - linkType: hard - -"@ethersproject/solidity@npm:5.8.0": - version: 5.8.0 - resolution: "@ethersproject/solidity@npm:5.8.0" - dependencies: - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/keccak256": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/sha2": "npm:^5.8.0" - "@ethersproject/strings": "npm:^5.8.0" - checksum: 10c0/5b5e0531bcec1d919cfbd261694694c8999ca5c379c1bb276ec779b896d299bb5db8ed7aa5652eb2c7605fe66455832b56ef123dec07f6ddef44231a7aa6fe6c - languageName: node - linkType: hard - -"@ethersproject/strings@npm:5.8.0, @ethersproject/strings@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/strings@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/constants": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - checksum: 10c0/6db39503c4be130110612b6d593a381c62657e41eebf4f553247ebe394fda32cdf74ff645daee7b7860d209fd02c7e909a95b1f39a2f001c662669b9dfe81d00 - languageName: node - linkType: hard - -"@ethersproject/transactions@npm:5.8.0, @ethersproject/transactions@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/transactions@npm:5.8.0" - dependencies: - "@ethersproject/address": "npm:^5.8.0" - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/constants": "npm:^5.8.0" - "@ethersproject/keccak256": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/rlp": "npm:^5.8.0" - "@ethersproject/signing-key": "npm:^5.8.0" - checksum: 10c0/dd32f090df5945313aafa8430ce76834479750d6655cb786c3b65ec841c94596b14d3c8c59ee93eed7b4f32f27d321a9b8b43bc6bb51f7e1c6694f82639ffe68 - languageName: node - linkType: hard - -"@ethersproject/units@npm:5.8.0": - version: 5.8.0 - resolution: "@ethersproject/units@npm:5.8.0" - dependencies: - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/constants": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - checksum: 10c0/5f92b8379a58024078fce6a4cbf7323cfd79bc41ef8f0a7bbf8be9c816ce18783140ab0d5c8d34ed615639aef7fc3a2ed255e92809e3558a510c4f0d49e27309 - languageName: node - linkType: hard - -"@ethersproject/wallet@npm:5.8.0": - version: 5.8.0 - resolution: "@ethersproject/wallet@npm:5.8.0" - dependencies: - "@ethersproject/abstract-provider": "npm:^5.8.0" - "@ethersproject/abstract-signer": "npm:^5.8.0" - "@ethersproject/address": "npm:^5.8.0" - "@ethersproject/bignumber": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/hash": "npm:^5.8.0" - "@ethersproject/hdnode": "npm:^5.8.0" - "@ethersproject/json-wallets": "npm:^5.8.0" - "@ethersproject/keccak256": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/random": "npm:^5.8.0" - "@ethersproject/signing-key": "npm:^5.8.0" - "@ethersproject/transactions": "npm:^5.8.0" - "@ethersproject/wordlists": "npm:^5.8.0" - checksum: 10c0/6da450872dda3d9008bad3ccf8467816a63429241e51c66627647123c0fe5625494c4f6c306e098eb8419cc5702ac017d41f5161af5ff670a41fe5d199883c09 - languageName: node - linkType: hard - -"@ethersproject/web@npm:5.8.0, @ethersproject/web@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/web@npm:5.8.0" - dependencies: - "@ethersproject/base64": "npm:^5.8.0" - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/strings": "npm:^5.8.0" - checksum: 10c0/e3cd547225638db6e94fcd890001c778d77adb0d4f11a7f8c447e961041678f3fbfaffe77a962c7aa3f6597504232442e7015f2335b1788508a108708a30308a - languageName: node - linkType: hard - -"@ethersproject/wordlists@npm:5.8.0, @ethersproject/wordlists@npm:^5.8.0": - version: 5.8.0 - resolution: "@ethersproject/wordlists@npm:5.8.0" - dependencies: - "@ethersproject/bytes": "npm:^5.8.0" - "@ethersproject/hash": "npm:^5.8.0" - "@ethersproject/logger": "npm:^5.8.0" - "@ethersproject/properties": "npm:^5.8.0" - "@ethersproject/strings": "npm:^5.8.0" - checksum: 10c0/e230a2ba075006bc3a2538e096003e43ef9ba453317f37a4d99638720487ec447c1fa61a592c80483f8a8ad6466511cf4cf5c49cf84464a1679999171ce311f4 - languageName: node - linkType: hard - -"@fastify/busboy@npm:^2.0.0": - version: 2.1.1 - resolution: "@fastify/busboy@npm:2.1.1" - checksum: 10c0/6f8027a8cba7f8f7b736718b013f5a38c0476eea67034c94a0d3c375e2b114366ad4419e6a6fa7ffc2ef9c6d3e0435d76dd584a7a1cbac23962fda7650b579e3 - languageName: node - linkType: hard - -"@humanfs/core@npm:^0.19.1": - version: 0.19.1 - resolution: "@humanfs/core@npm:0.19.1" - checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 - languageName: node - linkType: hard - -"@humanfs/node@npm:^0.16.6": - version: 0.16.7 - resolution: "@humanfs/node@npm:0.16.7" - dependencies: - "@humanfs/core": "npm:^0.19.1" - "@humanwhocodes/retry": "npm:^0.4.0" - checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30 - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c - languageName: node - linkType: hard - -"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": - version: 0.4.3 - resolution: "@humanwhocodes/retry@npm:0.4.3" - checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 - languageName: node - linkType: hard - -"@ioredis/commands@npm:1.4.0": - version: 1.4.0 - resolution: "@ioredis/commands@npm:1.4.0" - checksum: 10c0/99afe21fba794f84a2b84cceabcc370a7622e7b8b97a6589456c07c9fa62a15d54c5546f6f7214fb9a2458b1fa87579d5c531aaf48e06cc9be156d5923892c8d - languageName: node - linkType: hard - -"@ioredis/commands@npm:1.5.0": - version: 1.5.0 - resolution: "@ioredis/commands@npm:1.5.0" - checksum: 10c0/2d192d967a21f0192e17310d27ead02b0bdd504e834c782714abe641190ebfb548ad307fd89fd2d80db97c462afdc69ab4a4383831ab64ce61fe92f130d8b466 - languageName: node - linkType: hard - -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e - languageName: node - linkType: hard - -"@isaacs/fs-minipass@npm:^4.0.0": - version: 4.0.1 - resolution: "@isaacs/fs-minipass@npm:4.0.1" - dependencies: - minipass: "npm:^7.0.4" - checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 - languageName: node - linkType: hard - -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: "npm:^5.3.1" - find-up: "npm:^4.1.0" - get-package-type: "npm:^0.1.0" - js-yaml: "npm:^3.13.1" - resolve-from: "npm:^5.0.0" - checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a - languageName: node - linkType: hard - -"@jest/console@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/console@npm:30.2.0" - dependencies: - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - jest-message-util: "npm:30.2.0" - jest-util: "npm:30.2.0" - slash: "npm:^3.0.0" - checksum: 10c0/ecf7ca43698863095500710a5aa08c38b1731c9d89ba32f4d9da7424b53ce1e86b3db8ccbbb27b695f49b4f94bc1d7d0c63c751d73c83d59488a682bc98b7e70 - languageName: node - linkType: hard - -"@jest/core@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/core@npm:30.2.0" - dependencies: - "@jest/console": "npm:30.2.0" - "@jest/pattern": "npm:30.0.1" - "@jest/reporters": "npm:30.2.0" - "@jest/test-result": "npm:30.2.0" - "@jest/transform": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.3.2" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - exit-x: "npm:^0.2.2" - graceful-fs: "npm:^4.2.11" - jest-changed-files: "npm:30.2.0" - jest-config: "npm:30.2.0" - jest-haste-map: "npm:30.2.0" - jest-message-util: "npm:30.2.0" - jest-regex-util: "npm:30.0.1" - jest-resolve: "npm:30.2.0" - jest-resolve-dependencies: "npm:30.2.0" - jest-runner: "npm:30.2.0" - jest-runtime: "npm:30.2.0" - jest-snapshot: "npm:30.2.0" - jest-util: "npm:30.2.0" - jest-validate: "npm:30.2.0" - jest-watcher: "npm:30.2.0" - micromatch: "npm:^4.0.8" - pretty-format: "npm:30.2.0" - slash: "npm:^3.0.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10c0/03b3e35df3bbbbe28e2b53c0fe82d39b748d99b3bc88bb645c76593cdca44d7115f03ef6e6a1715f0862151d0ebab496199283def248fc05eb520f6aec6b20f3 - languageName: node - linkType: hard - -"@jest/diff-sequences@npm:30.0.1": - version: 30.0.1 - resolution: "@jest/diff-sequences@npm:30.0.1" - checksum: 10c0/3a840404e6021725ef7f86b11f7b2d13dd02846481264db0e447ee33b7ee992134e402cdc8b8b0ac969d37c6c0183044e382dedee72001cdf50cfb3c8088de74 - languageName: node - linkType: hard - -"@jest/environment@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/environment@npm:30.2.0" - dependencies: - "@jest/fake-timers": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - jest-mock: "npm:30.2.0" - checksum: 10c0/56a9f1b82ee2623c13eece7d58188be35bd6e5c3c4ee3fbaedb1c4d7242c1b57d020f1a26ab127fa9496fdc11306c7ad1c4a2b7eba1fc726a27ae0873e907e47 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/expect-utils@npm:30.2.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - checksum: 10c0/e25a809ff2ab62292e2569f8d97f89168d27d078903f0306af5f70f1771b7efc62c458eca1dcb491ab1ed96cefedf403bd7acbb050c997105bc29b220fd9d61a - languageName: node - linkType: hard - -"@jest/expect@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/expect@npm:30.2.0" - dependencies: - expect: "npm:30.2.0" - jest-snapshot: "npm:30.2.0" - checksum: 10c0/3984879022780dd480301c560cef465156b29d610f2c698fcdf81ad76930411d7816eff7cb721e81a1d9aaa8c2240a73c20be9385d1978c14b405a2ac6c9104a - languageName: node - linkType: hard - -"@jest/fake-timers@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/fake-timers@npm:30.2.0" - dependencies: - "@jest/types": "npm:30.2.0" - "@sinonjs/fake-timers": "npm:^13.0.0" - "@types/node": "npm:*" - jest-message-util: "npm:30.2.0" - jest-mock: "npm:30.2.0" - jest-util: "npm:30.2.0" - checksum: 10c0/b29505528e546f08489535814f7dfcd3a2318660b987d605f44d41672e91a0c8c0dfc01e3dd1302e66e511409c3012d41e2e16703b214502b54ccc023773e3dc - languageName: node - linkType: hard - -"@jest/get-type@npm:30.1.0": - version: 30.1.0 - resolution: "@jest/get-type@npm:30.1.0" - checksum: 10c0/3e65fd5015f551c51ec68fca31bbd25b466be0e8ee8075d9610fa1c686ea1e70a942a0effc7b10f4ea9a338c24337e1ad97ff69d3ebacc4681b7e3e80d1b24ac - languageName: node - linkType: hard - -"@jest/globals@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/globals@npm:30.2.0" - dependencies: - "@jest/environment": "npm:30.2.0" - "@jest/expect": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - jest-mock: "npm:30.2.0" - checksum: 10c0/7433a501e3122e94b24a7bacc44fdc3921b20abf67c9d795f5bdd169f1beac058cff8109e4fddf71fdc8b18e532cb88c55412ca9927966f354930d6bb3fcaf9c - languageName: node - linkType: hard - -"@jest/pattern@npm:30.0.1": - version: 30.0.1 - resolution: "@jest/pattern@npm:30.0.1" - dependencies: - "@types/node": "npm:*" - jest-regex-util: "npm:30.0.1" - checksum: 10c0/32c5a7bfb6c591f004dac0ed36d645002ed168971e4c89bd915d1577031672870032594767557b855c5bc330aa1e39a2f54bf150d2ee88a7a0886e9cb65318bc - languageName: node - linkType: hard - -"@jest/reporters@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/reporters@npm:30.2.0" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:30.2.0" - "@jest/test-result": "npm:30.2.0" - "@jest/transform": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@jridgewell/trace-mapping": "npm:^0.3.25" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - collect-v8-coverage: "npm:^1.0.2" - exit-x: "npm:^0.2.2" - glob: "npm:^10.3.10" - graceful-fs: "npm:^4.2.11" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^6.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^5.0.0" - istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:30.2.0" - jest-util: "npm:30.2.0" - jest-worker: "npm:30.2.0" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.2" - v8-to-istanbul: "npm:^9.0.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10c0/1f25d0896f857f220466cae3145a20f9e13e7d73aeccf87a1f8a5accb42bb7a564864ba63befa3494d76d1335b86c24d66054d62330c3dcffc9c2c5f4e740d6e - languageName: node - linkType: hard - -"@jest/schemas@npm:30.0.5": - version: 30.0.5 - resolution: "@jest/schemas@npm:30.0.5" - dependencies: - "@sinclair/typebox": "npm:^0.34.0" - checksum: 10c0/449dcd7ec5c6505e9ac3169d1143937e67044ae3e66a729ce4baf31812dfd30535f2b3b2934393c97cfdf5984ff581120e6b38f62b8560c8b5b7cc07f4175f65 - languageName: node - linkType: hard - -"@jest/snapshot-utils@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/snapshot-utils@npm:30.2.0" - dependencies: - "@jest/types": "npm:30.2.0" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - natural-compare: "npm:^1.4.0" - checksum: 10c0/df69ee3b95d64db6d1e79e39d5dc226e417b412a1d5113264b487eb3a8887366a7952c350c378e2292f8e83ec1b3be22040317b795e85eb431830cbde06d09d8 - languageName: node - linkType: hard - -"@jest/source-map@npm:30.0.1": - version: 30.0.1 - resolution: "@jest/source-map@npm:30.0.1" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.25" - callsites: "npm:^3.1.0" - graceful-fs: "npm:^4.2.11" - checksum: 10c0/e7bda2786fc9f483d9dd7566c58c4bd948830997be862dfe80a3ae5550ff3f84753abb52e705d02ebe9db9f34ba7ebec4c2db11882048cdeef7a66f6332b3897 - languageName: node - linkType: hard - -"@jest/test-result@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/test-result@npm:30.2.0" - dependencies: - "@jest/console": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@types/istanbul-lib-coverage": "npm:^2.0.6" - collect-v8-coverage: "npm:^1.0.2" - checksum: 10c0/87566d56b4f90630282c103f41ea9031f4647902f2cd9839bc49af6248301c1a95cbc4432a9512e61f6c6d778e8b925d0573588b26a211d3198c62471ba08c81 - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/test-sequencer@npm:30.2.0" - dependencies: - "@jest/test-result": "npm:30.2.0" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.2.0" - slash: "npm:^3.0.0" - checksum: 10c0/b8366e629b885bfc4b2b95f34f47405e70120eb8601f42de20ea4de308a5088d7bd9f535abf67a2a0d083a2b49864176e1333e036426a5d6b6bd02c1c4dda40b - languageName: node - linkType: hard - -"@jest/transform@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/transform@npm:30.2.0" - dependencies: - "@babel/core": "npm:^7.27.4" - "@jest/types": "npm:30.2.0" - "@jridgewell/trace-mapping": "npm:^0.3.25" - babel-plugin-istanbul: "npm:^7.0.1" - chalk: "npm:^4.1.2" - convert-source-map: "npm:^2.0.0" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.2.0" - jest-regex-util: "npm:30.0.1" - jest-util: "npm:30.2.0" - micromatch: "npm:^4.0.8" - pirates: "npm:^4.0.7" - slash: "npm:^3.0.0" - write-file-atomic: "npm:^5.0.1" - checksum: 10c0/c0f21576de9f7ad8a2647450b5cd127d7c60176c19a666230241d121b9f928b036dd19973363e4acd7db2f8b82caff2b624930f57471be6092d73a7775365606 - languageName: node - linkType: hard - -"@jest/types@npm:30.2.0": - version: 30.2.0 - resolution: "@jest/types@npm:30.2.0" - dependencies: - "@jest/pattern": "npm:30.0.1" - "@jest/schemas": "npm:30.0.5" - "@types/istanbul-lib-coverage": "npm:^2.0.6" - "@types/istanbul-reports": "npm:^3.0.4" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.33" - chalk: "npm:^4.1.2" - checksum: 10c0/ae121f6963bd9ed1cd9651db7be91bf14c05bff0d0eec4fca9fecf586bea4005e8f1de8cc9b8ef72e424ea96a309d123bef510b55a6a17a3b4b91a39d775e5cd - languageName: node - linkType: hard - -"@jimp/core@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/core@npm:1.6.0" - dependencies: - "@jimp/file-ops": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - await-to-js: "npm:^3.0.0" - exif-parser: "npm:^0.1.12" - file-type: "npm:^16.0.0" - mime: "npm:3" - checksum: 10c0/8a0b4e661ac21be553ed0374b4fd442b5178f57d52a3f67bc111bfb3d2f91ca39dd9b3062fbbe577fe0529168c8f51184928280906177ff5165f4ae077e9d47f - languageName: node - linkType: hard - -"@jimp/diff@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/diff@npm:1.6.0" - dependencies: - "@jimp/plugin-resize": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - pixelmatch: "npm:^5.3.0" - checksum: 10c0/0ee0e18fa603ce388feca22d4caf7104e839fc819a9b4008defd9f1b11caaaf52ea6f52359fcf02612a2264f786e1990797348921eea56b7f01dd8497dd9863a - languageName: node - linkType: hard - -"@jimp/file-ops@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/file-ops@npm:1.6.0" - checksum: 10c0/71829fa1896362e962f40830d13869483bdf591a9eb315b61881b221a961c390f33601f7b981948955ec922142ab9ba3e4ded1fde17af2b5bf07022e813d335d - languageName: node - linkType: hard - -"@jimp/js-bmp@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/js-bmp@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - bmp-ts: "npm:^1.0.9" - checksum: 10c0/d0101268785c1e570c3fb2986e733e6d2d9f0b2bc6dc4a4676bf661e2fc2905a90e17dac00db95c0850d406478778d05c13eac7023e2c25b519d5fb6cf2e2c5e - languageName: node - linkType: hard - -"@jimp/js-gif@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/js-gif@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - gifwrap: "npm:^0.10.1" - omggif: "npm:^1.0.10" - checksum: 10c0/0d96308076cd607371c249cdf1faa4538403fc7e8d356a53d1ec20908218b0431c2d845247a98421254133f220db82611f6f08bcdeba7f03af61c5a73504d77a - languageName: node - linkType: hard - -"@jimp/js-jpeg@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/js-jpeg@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - jpeg-js: "npm:^0.4.4" - checksum: 10c0/bc825995df309d6a4747f99a26d8a1ceeb8299f5264745cfaf9e592b7367d2de7f22e69b66b4bd4ca1a0989f8c1b667999736fbe934af1392895b3a503fe790d - languageName: node - linkType: hard - -"@jimp/js-png@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/js-png@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - pngjs: "npm:^7.0.0" - checksum: 10c0/7386abd8f4629ffb59924b249045d650737f4535ec0b6027eb2a1dae14ec5f4fe06dd1a45edfed760bba587fdf5a03394f83b0cf5dd5e70fd6fa1be49f17d941 - languageName: node - linkType: hard - -"@jimp/js-tiff@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/js-tiff@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - utif2: "npm:^4.1.0" - checksum: 10c0/20fa4f43e278cb1c9c7c65a0e5fef9942499d57d46336ac07c99314555e6c51a223eca746d3e81d2b6d811a8f0f3f4a81109176ded3b1a3314a716bd16aaa7cc - languageName: node - linkType: hard - -"@jimp/plugin-blit@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-blit@npm:1.6.0" - dependencies: - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/fa0076c25fef7dbdffdc20ef4f93edaaf0eec5387ecfe3a6c3996ac4930bafd0ff6c33772bc079b3a4102be56936a1154210768bd38325d55ceec81458c13885 - languageName: node - linkType: hard - -"@jimp/plugin-blur@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-blur@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - checksum: 10c0/ef1b5a44bfb4726de792e902215f344db3a6e69c11b3cdc3fed8e1aeeec591599fe6af61f865fcdacbd92a372d562cac227770d7b77103b014eeca8bf9cc93ea - languageName: node - linkType: hard - -"@jimp/plugin-circle@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-circle@npm:1.6.0" - dependencies: - "@jimp/types": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/bcccc16092d1101e9cd8c7aac48447b72a2dc9b9a5c8f6a9dbfa10cb69812bb5eb297638d93c393df6a85eb8ef20ee8833ddae715feb30379ba6b41f980ce0cf - languageName: node - linkType: hard - -"@jimp/plugin-color@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-color@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - tinycolor2: "npm:^1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/513105f6b2fe9e80654c7ec52b27ad025af01da4723ade42db5e1f3ffa64e2d8e2e0b2ac99bcd351cc1fed7a37f26e890c3729e4fc3ec65232a0625e63375c0d - languageName: node - linkType: hard - -"@jimp/plugin-contain@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-contain@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/plugin-blit": "npm:1.6.0" - "@jimp/plugin-resize": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/c8cc613f9dc37f58a2127753936ce0a0f93dc289a42433aeb0cae131fd86623fa090a3936139275b2d945db6ce0b8a368cb1526608b8d47afe284fc6ebb6f800 - languageName: node - linkType: hard - -"@jimp/plugin-cover@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-cover@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/plugin-crop": "npm:1.6.0" - "@jimp/plugin-resize": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/7e8310ed47bd8cfa919d9786183c4373222ab4e380cf24f2d8ba07dc5c413e0e755c4422ecb45be84ddaad351db99aa97ecabef7329c782767c674279b6b9f24 - languageName: node - linkType: hard - -"@jimp/plugin-crop@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-crop@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/82c75ce54e4b9ee7886cb192cccf81cec87e2c2c76090fa5cd8eb3821e8da946f78b972a0a40c278a33ff19e1c9ab1fe983b374c3b576d77658bf0edbe13f3d3 - languageName: node - linkType: hard - -"@jimp/plugin-displace@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-displace@npm:1.6.0" - dependencies: - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/a37164be381613b66498b8989b4ce660645bf7551247c11df84895faa880adbf32097112daea12cb6f36823ba549b05714f49e8fdcc07a1e077f0e1be92d3671 - languageName: node - linkType: hard - -"@jimp/plugin-dither@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-dither@npm:1.6.0" - dependencies: - "@jimp/types": "npm:1.6.0" - checksum: 10c0/b34e15549e9f4d0d4a3a7fca3537c9afa1a42bbfc5d21cf24f2d857bfc9ad7c8ac21efd9743aa3df8898dbcc0c68161f4056f6ebf3209517cfac13d9bb7f13dd - languageName: node - linkType: hard - -"@jimp/plugin-fisheye@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-fisheye@npm:1.6.0" - dependencies: - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/d7b7fc5814b7d6a1c0f7af8f9170177f2c81bf9bec1aab79b132babde5d057bc4b10690d5adc88ffda7d401b00406ee35eac6fdffe1993ae088ce5f17e17017e - languageName: node - linkType: hard - -"@jimp/plugin-flip@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-flip@npm:1.6.0" - dependencies: - "@jimp/types": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/87ef69740676149cd6ace1322fd82572fec6b2a787e78a736d3f75ead4555d942ee48ede2b2a16d8c03ce93e6d4748dcf1812946a4fc557ce8c8ed6cbb92b96c - languageName: node - linkType: hard - -"@jimp/plugin-hash@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-hash@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/js-bmp": "npm:1.6.0" - "@jimp/js-jpeg": "npm:1.6.0" - "@jimp/js-png": "npm:1.6.0" - "@jimp/js-tiff": "npm:1.6.0" - "@jimp/plugin-color": "npm:1.6.0" - "@jimp/plugin-resize": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - any-base: "npm:^1.1.0" - checksum: 10c0/4e615a6f66a61a6ddc7a6cb14505426f347e8ccbdfd6a4e2371cc8451a99088b4c8ad7e5ad9b3a935f2bfab2fe24f263fb90a9bbdd04d21f82a511c49cd25dbe - languageName: node - linkType: hard - -"@jimp/plugin-mask@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-mask@npm:1.6.0" - dependencies: - "@jimp/types": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/fa19ef8fcf83bcfaea48670e7f554fdd851cea78a2b1754c57dcd44e123225cdc238b45a0a973cee6afce94c568f6469b227f75bd09986dc1c4398f94fa3b5fa - languageName: node - linkType: hard - -"@jimp/plugin-print@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-print@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/js-jpeg": "npm:1.6.0" - "@jimp/js-png": "npm:1.6.0" - "@jimp/plugin-blit": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - parse-bmfont-ascii: "npm:^1.0.6" - parse-bmfont-binary: "npm:^1.0.6" - parse-bmfont-xml: "npm:^1.1.6" - simple-xml-to-json: "npm:^1.2.2" - zod: "npm:^3.23.8" - checksum: 10c0/7a3c8c651aaf94e74790fb2c68ba5363d926969097adfde8076782bda1c2d1f36380f7be9993c40eccd8e183cdd5f7d83e0e01112b8e9db7986acb149bc659fe - languageName: node - linkType: hard - -"@jimp/plugin-quantize@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-quantize@npm:1.6.0" - dependencies: - image-q: "npm:^4.0.0" - zod: "npm:^3.23.8" - checksum: 10c0/6504f48ba84771cee76396b3e3ca0d9a390ae7b9febfcdf84f2a5cc3f8578d79e030ffe86f109fd8917e00ee13340355390e5bf8ce34f391450b2b1430232c28 - languageName: node - linkType: hard - -"@jimp/plugin-resize@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-resize@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/4f96ad909c07498f6b0aa93a28341164397e771e674826a2a3f4d0a06b766bd6b86bd6ac9256fe5ab026e611d839b88f54118ebc6e0ed82b88a6e35e25a4ba4e - languageName: node - linkType: hard - -"@jimp/plugin-rotate@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-rotate@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/plugin-crop": "npm:1.6.0" - "@jimp/plugin-resize": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/9ac811c119941b0577197f22d604d5e13e8c365dde6e6d20d8f62e21b76da77992e5d093f6aa617383527e5bf89c605d69915e10891a9a7a25173459ec632011 - languageName: node - linkType: hard - -"@jimp/plugin-threshold@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/plugin-threshold@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/plugin-color": "npm:1.6.0" - "@jimp/plugin-hash": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - zod: "npm:^3.23.8" - checksum: 10c0/427b62fdb6f71b407fa2501a89cba1c16b1bcad23e78493d044d9be7bc11fa303e21847161f69ae3217fb4a9973f7331f167c43b2f4434de25cb71d5372a7d51 - languageName: node - linkType: hard - -"@jimp/types@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/types@npm:1.6.0" - dependencies: - zod: "npm:^3.23.8" - checksum: 10c0/b974bd6d776499036dd8606ca642c62f497cc4c10a1f4032cf2383b1ca8f0a8948da8b1a848956b2dd69cf5e186c65f2d75d6159d7b6386a49fcfcef7fd0a73a - languageName: node - linkType: hard - -"@jimp/utils@npm:1.6.0": - version: 1.6.0 - resolution: "@jimp/utils@npm:1.6.0" - dependencies: - "@jimp/types": "npm:1.6.0" - tinycolor2: "npm:^1.6.0" - checksum: 10c0/3d4b5b08675abc5c9ab3d962b8e9c7328bd0f2d300c7a04e042097187c8ba4b7b885fb3e9dc807a4e69e3ea54aa2d57dc9905b42b61ac13215776877dd9e7892 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.13 - resolution: "@jridgewell/gen-mapping@npm:0.3.13" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b - languageName: node - linkType: hard - -"@jridgewell/remapping@npm:^2.3.5": - version: 2.3.5 - resolution: "@jridgewell/remapping@npm:2.3.5" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e - languageName: node - linkType: hard - -"@jridgewell/source-map@npm:^0.3.3": - version: 0.3.11 - resolution: "@jridgewell/source-map@npm:0.3.11" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - checksum: 10c0/50a4fdafe0b8f655cb2877e59fe81320272eaa4ccdbe6b9b87f10614b2220399ae3e05c16137a59db1f189523b42c7f88bd097ee991dbd7bc0e01113c583e844 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0": - version: 1.5.5 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" - checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28": - version: 0.3.31 - resolution: "@jridgewell/trace-mapping@npm:0.3.31" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 - languageName: node - linkType: hard - -"@ljharb/through@npm:^2.3.12": - version: 2.3.14 - resolution: "@ljharb/through@npm:2.3.14" - dependencies: - call-bind: "npm:^1.0.8" - checksum: 10c0/7c5c22ed668f51193b82e4a352c7a44f777f537ef47f37befb49032f4827a766ea74c2972e5a0185bdfe355431ae50722d9fb57fa63553ba36aa4aeb941f0e70 - languageName: node - linkType: hard - -"@lukeed/csprng@npm:^1.0.0": - version: 1.1.0 - resolution: "@lukeed/csprng@npm:1.1.0" - checksum: 10c0/5d6dcf478af732972083ab2889c294b57f1028fa13c2c240d7a4aaa079c2c75df7ef0dcbdda5419147fc6704b4adf96b2de92f1a9a72ac21c6350c4014fffe6c - languageName: node - linkType: hard - -"@mantle/backend@workspace:packages/backend": - version: 0.0.0-use.local - resolution: "@mantle/backend@workspace:packages/backend" - dependencies: - "@contracts/arbitrum": "npm:*" - "@contracts/mantle": "npm:*" - "@contracts/stellar": "npm:*" - "@nestjs/bullmq": "npm:^11.0.4" - "@nestjs/cli": "npm:^10.0.0" - "@nestjs/common": "npm:^10.0.0" - "@nestjs/config": "npm:^4.0.2" - "@nestjs/core": "npm:^10.0.0" - "@nestjs/jwt": "npm:^11.0.2" - "@nestjs/mongoose": "npm:^11.0.4" - "@nestjs/passport": "npm:^11.0.5" - "@nestjs/platform-express": "npm:^10.0.0" - "@nestjs/schedule": "npm:^6.1.0" - "@nestjs/schematics": "npm:^10.0.0" - "@nestjs/swagger": "npm:^7.4.2" - "@nestjs/testing": "npm:^10.0.0" - "@octokit/rest": "npm:^22.0.1" - "@openassets/types": "npm:*" - "@stellar/stellar-sdk": "npm:^14.5.0" - "@types/express": "npm:^4.17.17" - "@types/jest": "npm:^30.0.0" - "@types/multer": "npm:^2.0.0" - "@types/node": "npm:^20.3.1" - "@types/passport": "npm:^1.0.17" - "@types/passport-jwt": "npm:^4.0.1" - "@types/pdf-parse": "npm:^1.1.5" - "@types/supertest": "npm:^6.0.3" - "@types/uuid": "npm:^11.0.0" - "@types/xml2js": "npm:^0.4.14" - "@typescript-eslint/eslint-plugin": "npm:^6.0.0" - "@typescript-eslint/parser": "npm:^6.0.0" - axios: "npm:^1.6.0" - bullmq: "npm:^5.66.2" - class-transformer: "npm:^0.5.1" - class-validator: "npm:^0.14.3" - eslint: "npm:^8.42.0" - eslint-config-prettier: "npm:^9.0.0" - eslint-plugin-prettier: "npm:^5.0.0" - fast-levenshtein: "npm:^3.0.0" - ioredis: "npm:^5.8.2" - jest: "npm:^30.2.0" - jest-mock-extended: "npm:^4.0.0" - jest-util: "npm:^30.2.0" - jimp: "npm:^1.6.0" - jsqr: "npm:^1.4.0" - mongoose: "npm:^9.0.2" - passport: "npm:^0.7.0" - passport-jwt: "npm:^4.0.1" - pdf-parse: "npm:^2.4.5" - prettier: "npm:^3.0.0" - reflect-metadata: "npm:^0.1.13" - rxjs: "npm:^7.8.1" - source-map-support: "npm:^0.5.21" - supertest: "npm:^7.1.4" - swagger-ui-express: "npm:^5.0.1" - ts-jest: "npm:^29.4.6" - ts-loader: "npm:^9.4.3" - ts-node: "npm:^10.9.1" - tsconfig-paths: "npm:^4.2.0" - typescript: "npm:^5.1.3" - uuid: "npm:^13.0.0" - viem: "npm:^2.43.2" - webpack: "npm:^5.0.0" - xml2js: "npm:^0.6.2" - languageName: unknown - linkType: soft - -"@microsoft/tsdoc@npm:^0.15.0": - version: 0.15.1 - resolution: "@microsoft/tsdoc@npm:0.15.1" - checksum: 10c0/09948691fac56c45a0d1920de478d66a30371a325bd81addc92eea5654d95106ce173c440fea1a1bd5bb95b3a544b6d4def7bb0b5a846c05d043575d8369a20c - languageName: node - linkType: hard - -"@mongodb-js/saslprep@npm:^1.3.0": - version: 1.4.4 - resolution: "@mongodb-js/saslprep@npm:1.4.4" - dependencies: - sparse-bitfield: "npm:^3.0.3" - checksum: 10c0/04a42b50129ec9c43dfeb01ebfc64883eddad925ac90190fbf928c1b5fb7a9320762c3647295fc1066b100ac6e98941fa09f9ca35467f7d828e90e878bd86d3c - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3": - version: 3.0.3 - resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@napi-rs/canvas-android-arm64@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-android-arm64@npm:0.1.80" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@napi-rs/canvas-android-arm64@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-android-arm64@npm:0.1.94" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@napi-rs/canvas-darwin-arm64@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-darwin-arm64@npm:0.1.80" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@napi-rs/canvas-darwin-arm64@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-darwin-arm64@npm:0.1.94" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@napi-rs/canvas-darwin-x64@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-darwin-x64@npm:0.1.80" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@napi-rs/canvas-darwin-x64@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-darwin-x64@npm:0.1.94" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-arm-gnueabihf@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-linux-arm-gnueabihf@npm:0.1.80" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-arm-gnueabihf@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-linux-arm-gnueabihf@npm:0.1.94" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-arm64-gnu@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-linux-arm64-gnu@npm:0.1.80" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-arm64-gnu@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-linux-arm64-gnu@npm:0.1.94" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-arm64-musl@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-linux-arm64-musl@npm:0.1.80" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-arm64-musl@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-linux-arm64-musl@npm:0.1.94" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-riscv64-gnu@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-linux-riscv64-gnu@npm:0.1.80" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-riscv64-gnu@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-linux-riscv64-gnu@npm:0.1.94" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-x64-gnu@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-linux-x64-gnu@npm:0.1.80" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-x64-gnu@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-linux-x64-gnu@npm:0.1.94" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-x64-musl@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-linux-x64-musl@npm:0.1.80" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@napi-rs/canvas-linux-x64-musl@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-linux-x64-musl@npm:0.1.94" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@napi-rs/canvas-win32-arm64-msvc@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-win32-arm64-msvc@npm:0.1.94" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@napi-rs/canvas-win32-x64-msvc@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas-win32-x64-msvc@npm:0.1.80" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@napi-rs/canvas-win32-x64-msvc@npm:0.1.94": - version: 0.1.94 - resolution: "@napi-rs/canvas-win32-x64-msvc@npm:0.1.94" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@napi-rs/canvas@npm:0.1.80": - version: 0.1.80 - resolution: "@napi-rs/canvas@npm:0.1.80" - dependencies: - "@napi-rs/canvas-android-arm64": "npm:0.1.80" - "@napi-rs/canvas-darwin-arm64": "npm:0.1.80" - "@napi-rs/canvas-darwin-x64": "npm:0.1.80" - "@napi-rs/canvas-linux-arm-gnueabihf": "npm:0.1.80" - "@napi-rs/canvas-linux-arm64-gnu": "npm:0.1.80" - "@napi-rs/canvas-linux-arm64-musl": "npm:0.1.80" - "@napi-rs/canvas-linux-riscv64-gnu": "npm:0.1.80" - "@napi-rs/canvas-linux-x64-gnu": "npm:0.1.80" - "@napi-rs/canvas-linux-x64-musl": "npm:0.1.80" - "@napi-rs/canvas-win32-x64-msvc": "npm:0.1.80" - dependenciesMeta: - "@napi-rs/canvas-android-arm64": - optional: true - "@napi-rs/canvas-darwin-arm64": - optional: true - "@napi-rs/canvas-darwin-x64": - optional: true - "@napi-rs/canvas-linux-arm-gnueabihf": - optional: true - "@napi-rs/canvas-linux-arm64-gnu": - optional: true - "@napi-rs/canvas-linux-arm64-musl": - optional: true - "@napi-rs/canvas-linux-riscv64-gnu": - optional: true - "@napi-rs/canvas-linux-x64-gnu": - optional: true - "@napi-rs/canvas-linux-x64-musl": - optional: true - "@napi-rs/canvas-win32-x64-msvc": - optional: true - checksum: 10c0/41c60ee5cb96571561a6d72a5cebc2bebbc775096ccb0fb7cc06e0665f327d9396dc30740f1466bd91a10147fc5783979570a4dde7530be9e05d88d6fa6a73ae - languageName: node - linkType: hard - -"@napi-rs/canvas@npm:^0.1.80": - version: 0.1.94 - resolution: "@napi-rs/canvas@npm:0.1.94" - dependencies: - "@napi-rs/canvas-android-arm64": "npm:0.1.94" - "@napi-rs/canvas-darwin-arm64": "npm:0.1.94" - "@napi-rs/canvas-darwin-x64": "npm:0.1.94" - "@napi-rs/canvas-linux-arm-gnueabihf": "npm:0.1.94" - "@napi-rs/canvas-linux-arm64-gnu": "npm:0.1.94" - "@napi-rs/canvas-linux-arm64-musl": "npm:0.1.94" - "@napi-rs/canvas-linux-riscv64-gnu": "npm:0.1.94" - "@napi-rs/canvas-linux-x64-gnu": "npm:0.1.94" - "@napi-rs/canvas-linux-x64-musl": "npm:0.1.94" - "@napi-rs/canvas-win32-arm64-msvc": "npm:0.1.94" - "@napi-rs/canvas-win32-x64-msvc": "npm:0.1.94" - dependenciesMeta: - "@napi-rs/canvas-android-arm64": - optional: true - "@napi-rs/canvas-darwin-arm64": - optional: true - "@napi-rs/canvas-darwin-x64": - optional: true - "@napi-rs/canvas-linux-arm-gnueabihf": - optional: true - "@napi-rs/canvas-linux-arm64-gnu": - optional: true - "@napi-rs/canvas-linux-arm64-musl": - optional: true - "@napi-rs/canvas-linux-riscv64-gnu": - optional: true - "@napi-rs/canvas-linux-x64-gnu": - optional: true - "@napi-rs/canvas-linux-x64-musl": - optional: true - "@napi-rs/canvas-win32-arm64-msvc": - optional: true - "@napi-rs/canvas-win32-x64-msvc": - optional: true - checksum: 10c0/8f6b99cfc21d1f177e71f494490af4f9dadcc28478b02c8d88be38c35a16f2a907435a9769dbc721a3c51870a6340f0ef8315869345ca1613f617dafcdb7b591 - languageName: node - linkType: hard - -"@napi-rs/wasm-runtime@npm:^0.2.11": - version: 0.2.12 - resolution: "@napi-rs/wasm-runtime@npm:0.2.12" - dependencies: - "@emnapi/core": "npm:^1.4.3" - "@emnapi/runtime": "npm:^1.4.3" - "@tybys/wasm-util": "npm:^0.10.0" - checksum: 10c0/6d07922c0613aab30c6a497f4df297ca7c54e5b480e00035e0209b872d5c6aab7162fc49477267556109c2c7ed1eb9c65a174e27e9b87568106a87b0a6e3ca7d - languageName: node - linkType: hard - -"@nestjs/bull-shared@npm:^11.0.4": - version: 11.0.4 - resolution: "@nestjs/bull-shared@npm:11.0.4" - dependencies: - tslib: "npm:2.8.1" - peerDependencies: - "@nestjs/common": ^10.0.0 || ^11.0.0 - "@nestjs/core": ^10.0.0 || ^11.0.0 - checksum: 10c0/88b819fa8e24033f41b9764712ebe130b1c6b78c9dfecbda1dbdf6c97f9f63a70fd0eb1cde870d2839590f8c712612c3d46ed30732361afe066c93bf320834fd - languageName: node - linkType: hard - -"@nestjs/bullmq@npm:^11.0.4": - version: 11.0.4 - resolution: "@nestjs/bullmq@npm:11.0.4" - dependencies: - "@nestjs/bull-shared": "npm:^11.0.4" - tslib: "npm:2.8.1" - peerDependencies: - "@nestjs/common": ^10.0.0 || ^11.0.0 - "@nestjs/core": ^10.0.0 || ^11.0.0 - bullmq: ^3.0.0 || ^4.0.0 || ^5.0.0 - checksum: 10c0/be2aed53e06d1c66a9f93e22553973b7037529c376a8d4922ff6d33255edf1e1af1e813a1bd450bcac9375ea56619c301a37cee72bcaef7f5593086eb6350aa1 - languageName: node - linkType: hard - -"@nestjs/cli@npm:^10.0.0": - version: 10.4.9 - resolution: "@nestjs/cli@npm:10.4.9" - dependencies: - "@angular-devkit/core": "npm:17.3.11" - "@angular-devkit/schematics": "npm:17.3.11" - "@angular-devkit/schematics-cli": "npm:17.3.11" - "@nestjs/schematics": "npm:^10.0.1" - chalk: "npm:4.1.2" - chokidar: "npm:3.6.0" - cli-table3: "npm:0.6.5" - commander: "npm:4.1.1" - fork-ts-checker-webpack-plugin: "npm:9.0.2" - glob: "npm:10.4.5" - inquirer: "npm:8.2.6" - node-emoji: "npm:1.11.0" - ora: "npm:5.4.1" - tree-kill: "npm:1.2.2" - tsconfig-paths: "npm:4.2.0" - tsconfig-paths-webpack-plugin: "npm:4.2.0" - typescript: "npm:5.7.2" - webpack: "npm:5.97.1" - webpack-node-externals: "npm:3.0.0" - peerDependencies: - "@swc/cli": ^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 - "@swc/core": ^1.3.62 - peerDependenciesMeta: - "@swc/cli": - optional: true - "@swc/core": - optional: true - bin: - nest: bin/nest.js - checksum: 10c0/82f4ba6c6be2fa5f6a78fb561f1c32b392279a358a05ca052224f88e128c09b4994cfbf7a946cf0b0e39f56da707c9221542b933c1001fd012d0f4ae7bedd565 - languageName: node - linkType: hard - -"@nestjs/common@npm:^10.0.0": - version: 10.4.20 - resolution: "@nestjs/common@npm:10.4.20" - dependencies: - file-type: "npm:20.4.1" - iterare: "npm:1.2.1" - tslib: "npm:2.8.1" - uid: "npm:2.0.2" - peerDependencies: - class-transformer: "*" - class-validator: "*" - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true - checksum: 10c0/d1a1b3d67798a8a07e5dfe7c55c6d499ac4750531cad0ef5fd5ceef0e2cfc01ae0adcba501d27987e7f4044af0f41fec05d4391d047baa6069419c49daff7e8c - languageName: node - linkType: hard - -"@nestjs/config@npm:^4.0.2": - version: 4.0.2 - resolution: "@nestjs/config@npm:4.0.2" - dependencies: - dotenv: "npm:16.4.7" - dotenv-expand: "npm:12.0.1" - lodash: "npm:4.17.21" - peerDependencies: - "@nestjs/common": ^10.0.0 || ^11.0.0 - rxjs: ^7.1.0 - checksum: 10c0/549bc8d784f68742c8020954be250639cd8d37a0dd233d01ebe511f67268e5fd109ffb1ae546ca9792a8484ef4cbb79374ae7e2a9587f59b13db1e9a16d443d6 - languageName: node - linkType: hard - -"@nestjs/core@npm:^10.0.0": - version: 10.4.20 - resolution: "@nestjs/core@npm:10.4.20" - dependencies: - "@nuxtjs/opencollective": "npm:0.3.2" - fast-safe-stringify: "npm:2.1.1" - iterare: "npm:1.2.1" - path-to-regexp: "npm:3.3.0" - tslib: "npm:2.8.1" - uid: "npm:2.0.2" - peerDependencies: - "@nestjs/common": ^10.0.0 - "@nestjs/microservices": ^10.0.0 - "@nestjs/platform-express": ^10.0.0 - "@nestjs/websockets": ^10.0.0 - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - "@nestjs/microservices": - optional: true - "@nestjs/platform-express": - optional: true - "@nestjs/websockets": - optional: true - checksum: 10c0/cb9f68a35d0e45684989c2ac1402617d2159d45abd49bf986b7a76931d5452d15fdf99ae8ac0fbca3c0f329a07a7802223e9dcaa3f834dfa9e96f2e7514c9aee - languageName: node - linkType: hard - -"@nestjs/jwt@npm:^11.0.2": - version: 11.0.2 - resolution: "@nestjs/jwt@npm:11.0.2" - dependencies: - "@types/jsonwebtoken": "npm:9.0.10" - jsonwebtoken: "npm:9.0.3" - peerDependencies: - "@nestjs/common": ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 - checksum: 10c0/3010253608209728bea0222c98e590765e7cf43b12a23acfae90b0c1f03993383e7a7dc27d2cbc3b2465e7c9fdac4795fadf18f96888740d23d51603f480d9d8 - languageName: node - linkType: hard - -"@nestjs/mapped-types@npm:2.0.5": - version: 2.0.5 - resolution: "@nestjs/mapped-types@npm:2.0.5" - peerDependencies: - "@nestjs/common": ^8.0.0 || ^9.0.0 || ^10.0.0 - class-transformer: ^0.4.0 || ^0.5.0 - class-validator: ^0.13.0 || ^0.14.0 - reflect-metadata: ^0.1.12 || ^0.2.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true - checksum: 10c0/f92743cb4c0fe3b1eecdf0c7c6a40f0e7478574a9e1a25ebdbd29db29a7319c2ae608c08d07f7b9525bea01a5e20dbd73222100204d3a13500db4f56676446a1 - languageName: node - linkType: hard - -"@nestjs/mongoose@npm:^11.0.4": - version: 11.0.4 - resolution: "@nestjs/mongoose@npm:11.0.4" - peerDependencies: - "@nestjs/common": ^10.0.0 || ^11.0.0 - "@nestjs/core": ^10.0.0 || ^11.0.0 - mongoose: ^7.0.0 || ^8.0.0 || ^9.0.0 - rxjs: ^7.0.0 - checksum: 10c0/291f2e06e5b14ddf53bb3f04fee894613c5c2134ff1b13ed2c82d0ee43d519c987fbf4a287e667004ac56c6bd2bd1b1496ef8d28c0639e7f80a9b646b651f55a - languageName: node - linkType: hard - -"@nestjs/passport@npm:^11.0.5": - version: 11.0.5 - resolution: "@nestjs/passport@npm:11.0.5" - peerDependencies: - "@nestjs/common": ^10.0.0 || ^11.0.0 - passport: ^0.5.0 || ^0.6.0 || ^0.7.0 - checksum: 10c0/24175f6791abf02b70c3c0705ce56fefd3981fdece0da7e58325f790ce71aa6932b31a87a2ceaa52b6d9d8edab3a7c049f6081e4b4d59bcdfcaa00383b64ae02 - languageName: node - linkType: hard - -"@nestjs/platform-express@npm:^10.0.0": - version: 10.4.20 - resolution: "@nestjs/platform-express@npm:10.4.20" - dependencies: - body-parser: "npm:1.20.3" - cors: "npm:2.8.5" - express: "npm:4.21.2" - multer: "npm:2.0.2" - tslib: "npm:2.8.1" - peerDependencies: - "@nestjs/common": ^10.0.0 - "@nestjs/core": ^10.0.0 - checksum: 10c0/c6f4b528b8a9419f85d21317d019e4cdc408372ba0d86968d36a13994ee6744a450c81cea16e44b847944320f074696a8d94bc52eab2f31f3a28a629fb2da3c2 - languageName: node - linkType: hard - -"@nestjs/schedule@npm:^6.1.0": - version: 6.1.0 - resolution: "@nestjs/schedule@npm:6.1.0" - dependencies: - cron: "npm:4.3.5" - peerDependencies: - "@nestjs/common": ^10.0.0 || ^11.0.0 - "@nestjs/core": ^10.0.0 || ^11.0.0 - checksum: 10c0/05465d7e42caad248e7550c3ff9c4cc5d8a29f87d30738bc4df593344576f83e99cac4b3f0694f4db3062ae22827b3cb252bf7c8370a824ead38a3c04401171c - languageName: node - linkType: hard - -"@nestjs/schematics@npm:^10.0.0, @nestjs/schematics@npm:^10.0.1": - version: 10.2.3 - resolution: "@nestjs/schematics@npm:10.2.3" - dependencies: - "@angular-devkit/core": "npm:17.3.11" - "@angular-devkit/schematics": "npm:17.3.11" - comment-json: "npm:4.2.5" - jsonc-parser: "npm:3.3.1" - pluralize: "npm:8.0.0" - peerDependencies: - typescript: ">=4.8.2" - checksum: 10c0/c883c10605c20f6a774f7439d2a296a13e2dd0d33b8628cf33a31fe8779e29ec27138509501b08f6b5c42fa4701ea970155d84cc85b99aae25c3039c7cce1b2d - languageName: node - linkType: hard - -"@nestjs/swagger@npm:^7.4.2": - version: 7.4.2 - resolution: "@nestjs/swagger@npm:7.4.2" - dependencies: - "@microsoft/tsdoc": "npm:^0.15.0" - "@nestjs/mapped-types": "npm:2.0.5" - js-yaml: "npm:4.1.0" - lodash: "npm:4.17.21" - path-to-regexp: "npm:3.3.0" - swagger-ui-dist: "npm:5.17.14" - peerDependencies: - "@fastify/static": ^6.0.0 || ^7.0.0 - "@nestjs/common": ^9.0.0 || ^10.0.0 - "@nestjs/core": ^9.0.0 || ^10.0.0 - class-transformer: "*" - class-validator: "*" - reflect-metadata: ^0.1.12 || ^0.2.0 - peerDependenciesMeta: - "@fastify/static": - optional: true - class-transformer: - optional: true - class-validator: - optional: true - checksum: 10c0/fda99b154933bb23d3b818fddf0338f74389a2bea42089de419c03203f18450faaa3840f1601b1994b312879903395ed34a98772e2decb0aab20c09910c2910c - languageName: node - linkType: hard - -"@nestjs/testing@npm:^10.0.0": - version: 10.4.20 - resolution: "@nestjs/testing@npm:10.4.20" - dependencies: - tslib: "npm:2.8.1" - peerDependencies: - "@nestjs/common": ^10.0.0 - "@nestjs/core": ^10.0.0 - "@nestjs/microservices": ^10.0.0 - "@nestjs/platform-express": ^10.0.0 - peerDependenciesMeta: - "@nestjs/microservices": - optional: true - "@nestjs/platform-express": - optional: true - checksum: 10c0/128e8608fc54f26fc07db5ff6c8230da50269d4d55a64a4ab3a5018c268b97b8c3d79233cbd36d70e9d872920680375be2650a0dcc6338a190c26e024fe5e2f2 - languageName: node - linkType: hard - -"@noble/ciphers@npm:^1.3.0": - version: 1.3.0 - resolution: "@noble/ciphers@npm:1.3.0" - checksum: 10c0/3ba6da645ce45e2f35e3b2e5c87ceba86b21dfa62b9466ede9edfb397f8116dae284f06652c0cd81d99445a2262b606632e868103d54ecc99fd946ae1af8cd37 - languageName: node - linkType: hard - -"@noble/curves@npm:1.2.0": - version: 1.2.0 - resolution: "@noble/curves@npm:1.2.0" - dependencies: - "@noble/hashes": "npm:1.3.2" - checksum: 10c0/0bac7d1bbfb3c2286910b02598addd33243cb97c3f36f987ecc927a4be8d7d88e0fcb12b0f0ef8a044e7307d1844dd5c49bb724bfa0a79c8ec50ba60768c97f6 - languageName: node - linkType: hard - -"@noble/curves@npm:1.4.2, @noble/curves@npm:~1.4.0": - version: 1.4.2 - resolution: "@noble/curves@npm:1.4.2" - dependencies: - "@noble/hashes": "npm:1.4.0" - checksum: 10c0/65620c895b15d46e8087939db6657b46a1a15cd4e0e4de5cd84b97a0dfe0af85f33a431bb21ac88267e3dc508618245d4cb564213959d66a84d690fe18a63419 - languageName: node - linkType: hard - -"@noble/curves@npm:1.9.1": - version: 1.9.1 - resolution: "@noble/curves@npm:1.9.1" - dependencies: - "@noble/hashes": "npm:1.8.0" - checksum: 10c0/39c84dbfecdca80cfde2ecea4b06ef2ec1255a4df40158d22491d1400057a283f57b2b26c8b1331006e6e061db791f31d47764961c239437032e2f45e8888c1e - languageName: node - linkType: hard - -"@noble/curves@npm:^1.9.6, @noble/curves@npm:~1.9.0": - version: 1.9.7 - resolution: "@noble/curves@npm:1.9.7" - dependencies: - "@noble/hashes": "npm:1.8.0" - checksum: 10c0/150014751ebe8ca06a8654ca2525108452ea9ee0be23430332769f06808cddabfe84f248b6dbf836916bc869c27c2092957eec62c7506d68a1ed0a624017c2a3 - languageName: node - linkType: hard - -"@noble/curves@npm:~1.8.1": - version: 1.8.2 - resolution: "@noble/curves@npm:1.8.2" - dependencies: - "@noble/hashes": "npm:1.7.2" - checksum: 10c0/e7ef119b114681d6b7530b29a21f9bbea6fa6973bc369167da2158d05054cc6e6dbfb636ba89fad7707abacc150de30188b33192f94513911b24bdb87af50bbd - languageName: node - linkType: hard - -"@noble/hashes@npm:1.2.0, @noble/hashes@npm:~1.2.0": - version: 1.2.0 - resolution: "@noble/hashes@npm:1.2.0" - checksum: 10c0/8bd3edb7bb6a9068f806a9a5a208cc2144e42940a21c049d8e9a0c23db08bef5cf1cfd844a7e35489b5ab52c6fa6299352075319e7f531e0996d459c38cfe26a - languageName: node - linkType: hard - -"@noble/hashes@npm:1.3.2": - version: 1.3.2 - resolution: "@noble/hashes@npm:1.3.2" - checksum: 10c0/2482cce3bce6a596626f94ca296e21378e7a5d4c09597cbc46e65ffacc3d64c8df73111f2265444e36a3168208628258bbbaccba2ef24f65f58b2417638a20e7 - languageName: node - linkType: hard - -"@noble/hashes@npm:1.4.0, @noble/hashes@npm:~1.4.0": - version: 1.4.0 - resolution: "@noble/hashes@npm:1.4.0" - checksum: 10c0/8c3f005ee72e7b8f9cff756dfae1241485187254e3f743873e22073d63906863df5d4f13d441b7530ea614b7a093f0d889309f28b59850f33b66cb26a779a4a5 - languageName: node - linkType: hard - -"@noble/hashes@npm:1.7.2, @noble/hashes@npm:~1.7.1": - version: 1.7.2 - resolution: "@noble/hashes@npm:1.7.2" - checksum: 10c0/b1411eab3c0b6691d847e9394fe7f1fcd45eeb037547c8f97e7d03c5068a499b4aef188e8e717eee67389dca4fee17d69d7e0f58af6c092567b0b76359b114b2 - languageName: node - linkType: hard - -"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.1.5, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.8.0, @noble/hashes@npm:~1.8.0": - version: 1.8.0 - resolution: "@noble/hashes@npm:1.8.0" - checksum: 10c0/06a0b52c81a6fa7f04d67762e08b2c476a00285858150caeaaff4037356dd5e119f45b2a530f638b77a5eeca013168ec1b655db41bae3236cb2e9d511484fc77 - languageName: node - linkType: hard - -"@noble/secp256k1@npm:1.7.1": - version: 1.7.1 - resolution: "@noble/secp256k1@npm:1.7.1" - checksum: 10c0/48091801d39daba75520012027d0ff0b1719338d96033890cfe0d287ad75af00d82769c0194a06e7e4fbd816ae3f204f4a59c9e26f0ad16b429f7e9b5403ccd5 - languageName: node - linkType: hard - -"@noble/secp256k1@npm:~1.7.0": - version: 1.7.2 - resolution: "@noble/secp256k1@npm:1.7.2" - checksum: 10c0/dda1eea78ee6d4d9ef968bd63d3f7ed387332fa1670af2c9c4c75a69bb6a0ca396bc95b5bab437e40f6f47548a12037094bda55453e30b4a23054922a13f3d27 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 - languageName: node - linkType: hard - -"@nomicfoundation/edr-darwin-arm64@npm:0.12.0-next.23": - version: 0.12.0-next.23 - resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.12.0-next.23" - checksum: 10c0/218a5d56a768234a6342833c933663aae3be2202d9b41af4a50bae27dfa69f6423490987f55f2e7d378a008cf9c932d870bbac0ac1f412746042c208c2050365 - languageName: node - linkType: hard - -"@nomicfoundation/edr-darwin-x64@npm:0.12.0-next.23": - version: 0.12.0-next.23 - resolution: "@nomicfoundation/edr-darwin-x64@npm:0.12.0-next.23" - checksum: 10c0/f183da7c907eec4039e53b7d0a4deba36d2a5ed51fcf20daba11ced58408c25c4ab48f0a822140641bb030c488d603e42e2a5f3f034d29dcd7a5ce4476b4ed67 - languageName: node - linkType: hard - -"@nomicfoundation/edr-linux-arm64-gnu@npm:0.12.0-next.23": - version: 0.12.0-next.23 - resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.12.0-next.23" - checksum: 10c0/fc5041c7863d61fbf57641022e77f0ef045266e4ef86e366b3b5594573b6d7e935597cea342111c242c15040e6d5bf275c713c41da315ff4627f622d771b3d0d - languageName: node - linkType: hard - -"@nomicfoundation/edr-linux-arm64-musl@npm:0.12.0-next.23": - version: 0.12.0-next.23 - resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.12.0-next.23" - checksum: 10c0/a4aa4162a71527e3ff44f0013b0088f48caa9d9467766a64463f98ea256b40a99f6d5d536a7fc09b054c54c6e4b462de2eb77b5c21e33ff891da1a80b2f6e8f3 - languageName: node - linkType: hard - -"@nomicfoundation/edr-linux-x64-gnu@npm:0.12.0-next.23": - version: 0.12.0-next.23 - resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.12.0-next.23" - checksum: 10c0/18f7c1dbe9cdb14dd1649a11416f0508a560f5e49ec1e4b8d5b71fa04186594380a09cfb885719d8bcdd844e3c9eb21ac640523b42f8d58385de2ab944999135 - languageName: node - linkType: hard - -"@nomicfoundation/edr-linux-x64-musl@npm:0.12.0-next.23": - version: 0.12.0-next.23 - resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.12.0-next.23" - checksum: 10c0/2c8f904ade8c99c5defe97e5bea01e7a5e7dc367cc1a6e0061cb95ee0bdd900da87239e75e9f607a88fb2bb52559a056a248320f854ecc2b4bc52ae67fa34ffa - languageName: node - linkType: hard - -"@nomicfoundation/edr-win32-x64-msvc@npm:0.12.0-next.23": - version: 0.12.0-next.23 - resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.12.0-next.23" - checksum: 10c0/0ffe70132e0d928584feb439b5dc51288a9720463f627cd4d12d5be29a0fc167d744b84896486ddac5631ee040fdcaafc8f12e3f1980cd4f39e3bb07d6747a63 - languageName: node - linkType: hard - -"@nomicfoundation/edr@npm:0.12.0-next.23": - version: 0.12.0-next.23 - resolution: "@nomicfoundation/edr@npm:0.12.0-next.23" - dependencies: - "@nomicfoundation/edr-darwin-arm64": "npm:0.12.0-next.23" - "@nomicfoundation/edr-darwin-x64": "npm:0.12.0-next.23" - "@nomicfoundation/edr-linux-arm64-gnu": "npm:0.12.0-next.23" - "@nomicfoundation/edr-linux-arm64-musl": "npm:0.12.0-next.23" - "@nomicfoundation/edr-linux-x64-gnu": "npm:0.12.0-next.23" - "@nomicfoundation/edr-linux-x64-musl": "npm:0.12.0-next.23" - "@nomicfoundation/edr-win32-x64-msvc": "npm:0.12.0-next.23" - checksum: 10c0/d0a573c6f938e6bbc7d66ac553866bafeba053e5aabf6547898f14097ddec7e97aa5275049ee094ef458919123b8d22a7b3c92b336f60b6feb34b8399fb9616a - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-chai-matchers@npm:2.1.0": - version: 2.1.0 - resolution: "@nomicfoundation/hardhat-chai-matchers@npm:2.1.0" - dependencies: - "@types/chai-as-promised": "npm:^7.1.3" - chai-as-promised: "npm:^7.1.1" - deep-eql: "npm:^4.0.1" - ordinal: "npm:^1.0.3" - peerDependencies: - "@nomicfoundation/hardhat-ethers": ^3.1.0 - chai: ^4.2.0 - ethers: ^6.14.0 - hardhat: ^2.26.0 - checksum: 10c0/e12ca86a2b7e1381f3ddd3b7122f66daec84e72ccb3650e530988072b9b3d672d883e99e7cfaf4844b79e7ef7a7a13906d01f6fd02320aaea88419580da45d0f - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-errors@npm:^3.0.0": - version: 3.0.6 - resolution: "@nomicfoundation/hardhat-errors@npm:3.0.6" - dependencies: - "@nomicfoundation/hardhat-utils": "npm:^3.0.1" - checksum: 10c0/de6c44d1339f478729826302e24993d131a9381dc8dacc08b16a2550ec43f0b0d19070a49f5af5e66f77855c9475e695e3bc5f5234fb3ff735cde72ce391c5ae - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-ethers@npm:^3.0.8": - version: 3.1.3 - resolution: "@nomicfoundation/hardhat-ethers@npm:3.1.3" - dependencies: - debug: "npm:^4.1.1" - lodash.isequal: "npm:^4.5.0" - peerDependencies: - ethers: ^6.14.0 - hardhat: ^2.28.0 - checksum: 10c0/77a20741634a4028324cf329cac28205eff4a318ab92b0f42af4e714ebaab97a760bdba551fec446f4cea171a8964a6a89d19f33105fb8c8538d779a8a975093 - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-network-helpers@npm:^1.0.12": - version: 1.1.2 - resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.1.2" - dependencies: - ethereumjs-util: "npm:^7.1.4" - peerDependencies: - hardhat: ^2.26.0 - checksum: 10c0/00fb7392bc0a0c3df635a52fe350ae5e5a71610f3718e11e6b17753f6723231c81def37a19933cd96174cbc5362c0168c8fa98ea73910d46dd9d4bbba0c7990f - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-toolbox@npm:^3.0.0": - version: 3.0.0 - resolution: "@nomicfoundation/hardhat-toolbox@npm:3.0.0" - peerDependencies: - "@nomicfoundation/hardhat-chai-matchers": ^2.0.0 - "@nomicfoundation/hardhat-ethers": ^3.0.0 - "@nomicfoundation/hardhat-network-helpers": ^1.0.0 - "@nomicfoundation/hardhat-verify": ^1.0.0 - "@typechain/ethers-v6": ^0.4.0 - "@typechain/hardhat": ^8.0.0 - "@types/chai": ^4.2.0 - "@types/mocha": ">=9.1.0" - "@types/node": ">=12.0.0" - chai: ^4.2.0 - ethers: ^6.4.0 - hardhat: ^2.11.0 - hardhat-gas-reporter: ^1.0.8 - solidity-coverage: ^0.8.1 - ts-node: ">=8.0.0" - typechain: ^8.2.0 - typescript: ">=4.5.0" - checksum: 10c0/6139efdb962c1f590c34990c4678650f3a946a0ab07076c4fc24ea1f7902d8cd629e6ee95e6a7cd3c7a3dbd4a9f415128f576fc3f13fa9483e618eb5558f8cad - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-utils@npm:^3.0.1, @nomicfoundation/hardhat-utils@npm:^3.0.5": - version: 3.0.5 - resolution: "@nomicfoundation/hardhat-utils@npm:3.0.5" - dependencies: - "@streamparser/json-node": "npm:^0.0.22" - debug: "npm:^4.3.2" - env-paths: "npm:^2.2.0" - ethereum-cryptography: "npm:^2.2.1" - fast-equals: "npm:^5.0.1" - json-stream-stringify: "npm:^3.1.6" - rfdc: "npm:^1.3.1" - undici: "npm:^6.16.1" - checksum: 10c0/fb1a3cd1062f90ce802af9c3db63887ec4d77de28396022d4a8211e6a5594ab2d29b1366f80339a0bbedc5ecf64e9b8c8fc07dda819b5364cc63a992562729e4 - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-verify@npm:^1.1.1": - version: 1.1.1 - resolution: "@nomicfoundation/hardhat-verify@npm:1.1.1" - dependencies: - "@ethersproject/abi": "npm:^5.1.2" - "@ethersproject/address": "npm:^5.0.2" - cbor: "npm:^8.1.0" - chalk: "npm:^2.4.2" - debug: "npm:^4.1.1" - lodash.clonedeep: "npm:^4.5.0" - semver: "npm:^6.3.0" - table: "npm:^6.8.0" - undici: "npm:^5.14.0" - peerDependencies: - hardhat: ^2.0.4 - checksum: 10c0/50d3903db43d0b2fbad22d06aa6d37ef3787edfadaf2f2d96cb0b70fcbd130f68499de0094df4bffc942a1dcb15354180995178ca50750908f4b192680dc59d6 - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-viem@npm:^3.0.1": - version: 3.0.1 - resolution: "@nomicfoundation/hardhat-viem@npm:3.0.1" - dependencies: - "@nomicfoundation/hardhat-errors": "npm:^3.0.0" - "@nomicfoundation/hardhat-utils": "npm:^3.0.5" - peerDependencies: - hardhat: ^3.0.0 - viem: ^2.30.0 - checksum: 10c0/e636a959237b542a3574d05685b37086ffec62d8e3522950eda60e6c16ba2eb36910a30a1e978a647b02d81d928bc237e5bf5cfdefd38fcabb05260d64824471 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.2" - checksum: 10c0/ef3b13bb2133fea6621db98f991036a3a84d2b240160edec50beafa6ce821fe2f0f5cd4aa61adb9685aff60cd0425982ffd15e0b868b7c768e90e26b8135b825 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.2" - checksum: 10c0/3cb6a00cd200b94efd6f59ed626c705c6f773b92ccf8b90471285cd0e81b35f01edb30c1aa5a4633393c2adb8f20fd34e90c51990dc4e30658e8a67c026d16c9 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.2" - checksum: 10c0/cb9725e7bdc3ba9c1feaef96dbf831c1a59c700ca633a9929fd97debdcb5ce06b5d7b4e6dbc076279978707214d01e2cd126d8e3f4cabc5c16525c031a47b95c - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.2" - checksum: 10c0/82a90b1d09ad266ddc510ece2e397f51fdaf29abf7263d2a3a85accddcba2ac24cceb670a3120800611cdcc552eed04919d071e259fdda7564818359ed541f5d - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.2" - checksum: 10c0/d1f20d4d55683bd041ead957e5461b2e43a39e959f905e8866de1d65f8d96118e9b861e994604d9002cb7f056be0844e36c241a6bb531c336b399609977c0998 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.2" - checksum: 10c0/6c17f9af3aaf184c0a217cf723076051c502d85e731dbc97f34b838f9ae1b597577abac54a2af49b3fd986b09131c52fa21fd5393b22d05e1ec7fee96a8249c2 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.2": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.2" - checksum: 10c0/da198464f5ee0d19b6decdfaa65ee0df3097b8960b8483bb7080931968815a5d60f27191229d47a198955784d763d5996f0b92bfde3551612ad972c160b0b000 - languageName: node - linkType: hard - -"@nomicfoundation/solidity-analyzer@npm:^0.1.0": - version: 0.1.2 - resolution: "@nomicfoundation/solidity-analyzer@npm:0.1.2" - dependencies: - "@nomicfoundation/solidity-analyzer-darwin-arm64": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-darwin-x64": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "npm:0.1.2" - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "npm:0.1.2" - dependenciesMeta: - "@nomicfoundation/solidity-analyzer-darwin-arm64": - optional: true - "@nomicfoundation/solidity-analyzer-darwin-x64": - optional: true - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": - optional: true - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": - optional: true - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": - optional: true - "@nomicfoundation/solidity-analyzer-linux-x64-musl": - optional: true - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": - optional: true - checksum: 10c0/e4f503e9287e18967535af669ca7e26e2682203c45a34ea85da53122da1dee1278f2b8c76c20c67fadd7c1b1a98eeecffd2cbc136860665e3afa133817c0de54 - languageName: node - linkType: hard - -"@npmcli/agent@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/agent@npm:4.0.0" - dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^11.2.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/f7b5ce0f3dd42c3f8c6546e8433573d8049f67ef11ec22aa4704bc41483122f68bf97752e06302c455ead667af5cb753e6a09bff06632bc465c1cfd4c4b75a53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^5.0.0": - version: 5.0.0 - resolution: "@npmcli/fs@npm:5.0.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/26e376d780f60ff16e874a0ac9bc3399186846baae0b6e1352286385ac134d900cc5dafaded77f38d77f86898fc923ae1cee9d7399f0275b1aa24878915d722b - languageName: node - linkType: hard - -"@nuxtjs/opencollective@npm:0.3.2": - version: 0.3.2 - resolution: "@nuxtjs/opencollective@npm:0.3.2" - dependencies: - chalk: "npm:^4.1.0" - consola: "npm:^2.15.0" - node-fetch: "npm:^2.6.1" - bin: - opencollective: bin/opencollective.js - checksum: 10c0/540268687af3289ff107585484d42201b404cdbb98b3a512487c12a6b180a8f0e1df0d701df47d3d9e0d5c0f6eb3252d80535562aedca9edf52cf7fd17ae4601 - languageName: node - linkType: hard - -"@octokit/auth-token@npm:^6.0.0": - version: 6.0.0 - resolution: "@octokit/auth-token@npm:6.0.0" - checksum: 10c0/32ecc904c5f6f4e5d090bfcc679d70318690c0a0b5040cd9a25811ad9dcd44c33f2cf96b6dbee1cd56cf58fde28fb1819c01b58718aa5c971f79c822357cb5c0 - languageName: node - linkType: hard - -"@octokit/core@npm:^7.0.6": - version: 7.0.6 - resolution: "@octokit/core@npm:7.0.6" - dependencies: - "@octokit/auth-token": "npm:^6.0.0" - "@octokit/graphql": "npm:^9.0.3" - "@octokit/request": "npm:^10.0.6" - "@octokit/request-error": "npm:^7.0.2" - "@octokit/types": "npm:^16.0.0" - before-after-hook: "npm:^4.0.0" - universal-user-agent: "npm:^7.0.0" - checksum: 10c0/95a328ff7c7223d9eb4aa778c63171828514ae0e0f588d33beb81a4dc03bbeae055382f6060ce23c979ab46272409942ff2cf3172109999e48429c47055b1fbe - languageName: node - linkType: hard - -"@octokit/endpoint@npm:^11.0.2": - version: 11.0.2 - resolution: "@octokit/endpoint@npm:11.0.2" - dependencies: - "@octokit/types": "npm:^16.0.0" - universal-user-agent: "npm:^7.0.2" - checksum: 10c0/878ac12fbccff772968689b4744590677c5a3f12bebe31544832c84761bf1c6be521e8a3af07abffc9455a74dd4d1f350d714fc46fd7ce14a0a2b5f2d4e3a84c - languageName: node - linkType: hard - -"@octokit/graphql@npm:^9.0.3": - version: 9.0.3 - resolution: "@octokit/graphql@npm:9.0.3" - dependencies: - "@octokit/request": "npm:^10.0.6" - "@octokit/types": "npm:^16.0.0" - universal-user-agent: "npm:^7.0.0" - checksum: 10c0/58588d3fb2834f64244fa5376ca7922a30117b001b621e141fab0d52806370803ab0c046ac99b120fa5f45b770f52a815157fb6ffc147fc6c1da4047c1f1af49 - languageName: node - linkType: hard - -"@octokit/openapi-types@npm:^27.0.0": - version: 27.0.0 - resolution: "@octokit/openapi-types@npm:27.0.0" - checksum: 10c0/602d1de033da180a2e982cdbd3646bd5b2e16ecf36b9955a0f23e37ae9e6cb086abb48ff2ae6f2de000fce03e8ae9051794611ae4a95a8f5f6fb63276e7b8e31 - languageName: node - linkType: hard - -"@octokit/plugin-paginate-rest@npm:^14.0.0": - version: 14.0.0 - resolution: "@octokit/plugin-paginate-rest@npm:14.0.0" - dependencies: - "@octokit/types": "npm:^16.0.0" - peerDependencies: - "@octokit/core": ">=6" - checksum: 10c0/841d79d4ccfe18fc809a4a67529b75c1dcdda13399bf4bf5b48ce7559c8b4b2cd422e3204bad4cbdea31c0cf0943521067415268e5bcfc615a3b813e058cad6b - languageName: node - linkType: hard - -"@octokit/plugin-request-log@npm:^6.0.0": - version: 6.0.0 - resolution: "@octokit/plugin-request-log@npm:6.0.0" - peerDependencies: - "@octokit/core": ">=6" - checksum: 10c0/40e46ad0c77235742d0bf698ab4e17df1ae06e0d7824ffc5867ed71e27de860875adb73d89629b823fe8647459a8f262c26ed1aa6ee374873fa94095f37df0bb - languageName: node - linkType: hard - -"@octokit/plugin-rest-endpoint-methods@npm:^17.0.0": - version: 17.0.0 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:17.0.0" - dependencies: - "@octokit/types": "npm:^16.0.0" - peerDependencies: - "@octokit/core": ">=6" - checksum: 10c0/cf9984d7cf6a36ff7ff1b86078ae45fe246e3df10fcef0bccf20c8cfd27bf5e7d98dcb9cf5a7b56332b9c6fa30be28d159c2987d272a4758f77056903d94402f - languageName: node - linkType: hard - -"@octokit/request-error@npm:^7.0.2": - version: 7.1.0 - resolution: "@octokit/request-error@npm:7.1.0" - dependencies: - "@octokit/types": "npm:^16.0.0" - checksum: 10c0/62b90a54545c36a30b5ffdda42e302c751be184d85b68ffc7f1242c51d7ca54dbd185b7d0027b491991776923a910c85c9c51269fe0d86111bac187507a5abc4 - languageName: node - linkType: hard - -"@octokit/request@npm:^10.0.6": - version: 10.0.7 - resolution: "@octokit/request@npm:10.0.7" - dependencies: - "@octokit/endpoint": "npm:^11.0.2" - "@octokit/request-error": "npm:^7.0.2" - "@octokit/types": "npm:^16.0.0" - fast-content-type-parse: "npm:^3.0.0" - universal-user-agent: "npm:^7.0.2" - checksum: 10c0/f789a75bf681b204ccd3d538921db662e148ed980005158d80ec4f16811e9ab73f375d4f30ef697852abd748a62f025060ea1b0c5198ec9c2e8d04e355064390 - languageName: node - linkType: hard - -"@octokit/rest@npm:^22.0.1": - version: 22.0.1 - resolution: "@octokit/rest@npm:22.0.1" - dependencies: - "@octokit/core": "npm:^7.0.6" - "@octokit/plugin-paginate-rest": "npm:^14.0.0" - "@octokit/plugin-request-log": "npm:^6.0.0" - "@octokit/plugin-rest-endpoint-methods": "npm:^17.0.0" - checksum: 10c0/f3abd84e887cc837973214ce70720a9bba53f5575f40601c6122aa25206e9055d859c0388437f0a137f6cd0e4ff405e1b46b903475b0db32a17bada0c6513d5b - languageName: node - linkType: hard - -"@octokit/types@npm:^16.0.0": - version: 16.0.0 - resolution: "@octokit/types@npm:16.0.0" - dependencies: - "@octokit/openapi-types": "npm:^27.0.0" - checksum: 10c0/b8d41098ba6fc194d13d641f9441347e3a3b96c0efabac0e14f57319340a2d4d1c8676e4cb37ab3062c5c323c617e790b0126916e9bf7b201b0cced0826f8ae2 - languageName: node - linkType: hard - -"@openassets/types@npm:*, @openassets/types@workspace:packages/types": - version: 0.0.0-use.local - resolution: "@openassets/types@workspace:packages/types" - languageName: unknown - linkType: soft - -"@openzeppelin/contracts@npm:5.4.0": - version: 5.4.0 - resolution: "@openzeppelin/contracts@npm:5.4.0" - checksum: 10c0/7e05646dee4905fea4493f0fb2ad208abaff84b9f5ef1b9e1a5fc61d0e74d9bc30759bdf0d09a08049cfef6a290623330d83469eadc990a7bba6c2cd09a27e1d - languageName: node - linkType: hard - -"@paralleldrive/cuid2@npm:^2.2.2": - version: 2.3.1 - resolution: "@paralleldrive/cuid2@npm:2.3.1" - dependencies: - "@noble/hashes": "npm:^1.1.5" - checksum: 10c0/6576b73de49d826b0f33cbab88424dec1f6fa454a9e59a7b621f78c2cfdd2e59d7f48175826d698940a717f45eeb5e87a508583a7316e608f6a05a861a40c129 - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd - languageName: node - linkType: hard - -"@pkgr/core@npm:^0.2.9": - version: 0.2.9 - resolution: "@pkgr/core@npm:0.2.9" - checksum: 10c0/ac8e4e8138b1a7a4ac6282873aef7389c352f1f8b577b4850778f5182e4a39a5241facbe48361fec817f56d02b51691b383010843fb08b34a8e8ea3614688fd5 - languageName: node - linkType: hard - -"@scure/base@npm:~1.1.0, @scure/base@npm:~1.1.6": - version: 1.1.9 - resolution: "@scure/base@npm:1.1.9" - checksum: 10c0/77a06b9a2db8144d22d9bf198338893d77367c51b58c72b99df990c0a11f7cadd066d4102abb15e3ca6798d1529e3765f55c4355742465e49aed7a0c01fe76e8 - languageName: node - linkType: hard - -"@scure/base@npm:~1.2.5": - version: 1.2.6 - resolution: "@scure/base@npm:1.2.6" - checksum: 10c0/49bd5293371c4e062cb6ba689c8fe3ea3981b7bb9c000400dc4eafa29f56814cdcdd27c04311c2fec34de26bc373c593a1d6ca6d754398a488d587943b7c128a - languageName: node - linkType: hard - -"@scure/bip32@npm:1.1.5": - version: 1.1.5 - resolution: "@scure/bip32@npm:1.1.5" - dependencies: - "@noble/hashes": "npm:~1.2.0" - "@noble/secp256k1": "npm:~1.7.0" - "@scure/base": "npm:~1.1.0" - checksum: 10c0/d0521f6de28278e06f2d517307b4de6c9bcb3dbdf9a5844bb57a6e4916a180e4136129ccab295c27bd1196ef77757608255afcd7cf927e03baec4479b3df74fc - languageName: node - linkType: hard - -"@scure/bip32@npm:1.4.0": - version: 1.4.0 - resolution: "@scure/bip32@npm:1.4.0" - dependencies: - "@noble/curves": "npm:~1.4.0" - "@noble/hashes": "npm:~1.4.0" - "@scure/base": "npm:~1.1.6" - checksum: 10c0/6849690d49a3bf1d0ffde9452eb16ab83478c1bc0da7b914f873e2930cd5acf972ee81320e3df1963eb247cf57e76d2d975b5f97093d37c0e3f7326581bf41bd - languageName: node - linkType: hard - -"@scure/bip32@npm:1.7.0, @scure/bip32@npm:^1.7.0": - version: 1.7.0 - resolution: "@scure/bip32@npm:1.7.0" - dependencies: - "@noble/curves": "npm:~1.9.0" - "@noble/hashes": "npm:~1.8.0" - "@scure/base": "npm:~1.2.5" - checksum: 10c0/e3d4c1f207df16abcd79babcdb74d36f89bdafc90bf02218a5140cc5cba25821d80d42957c6705f35210cc5769714ea9501d4ae34732cdd1c26c9ff182a219f7 - languageName: node - linkType: hard - -"@scure/bip39@npm:1.1.1": - version: 1.1.1 - resolution: "@scure/bip39@npm:1.1.1" - dependencies: - "@noble/hashes": "npm:~1.2.0" - "@scure/base": "npm:~1.1.0" - checksum: 10c0/821dc9d5be8362a32277390526db064860c2216a079ba51d63def9289c2b290599e93681ebbeebf0e93540799eec35784c1dfcf5167d0b280ef148e5023ce01b - languageName: node - linkType: hard - -"@scure/bip39@npm:1.3.0": - version: 1.3.0 - resolution: "@scure/bip39@npm:1.3.0" - dependencies: - "@noble/hashes": "npm:~1.4.0" - "@scure/base": "npm:~1.1.6" - checksum: 10c0/1ae1545a7384a4d9e33e12d9e9f8824f29b0279eb175b0f0657c0a782c217920054f9a1d28eb316a417dfc6c4e0b700d6fbdc6da160670107426d52fcbe017a8 - languageName: node - linkType: hard - -"@scure/bip39@npm:1.6.0, @scure/bip39@npm:^1.6.0": - version: 1.6.0 - resolution: "@scure/bip39@npm:1.6.0" - dependencies: - "@noble/hashes": "npm:~1.8.0" - "@scure/base": "npm:~1.2.5" - checksum: 10c0/73a54b5566a50a3f8348a5cfd74d2092efeefc485efbed83d7a7374ffd9a75defddf446e8e5ea0385e4adb49a94b8ae83c5bad3e16333af400e932f7da3aaff8 - languageName: node - linkType: hard - -"@sentry/core@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/core@npm:5.30.0" - dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/minimal": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/6407b9c2a6a56f90c198f5714b3257df24d89d1b4ca6726bd44760d0adabc25798b69fef2c88ccea461c7e79e3c78861aaebfd51fd3cb892aee656c3f7e11801 - languageName: node - linkType: hard - -"@sentry/hub@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/hub@npm:5.30.0" - dependencies: - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/386c91d06aa44be0465fc11330d748a113e464d41cd562a9e1d222a682cbcb14e697a3e640953e7a0239997ad8a02b223a0df3d9e1d8816cb823fd3613be3e2f - languageName: node - linkType: hard - -"@sentry/minimal@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/minimal@npm:5.30.0" - dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/34ec05503de46d01f98c94701475d5d89cc044892c86ccce30e01f62f28344eb23b718e7cf573815e46f30a4ac9da3129bed9b3d20c822938acfb40cbe72437b - languageName: node - linkType: hard - -"@sentry/node@npm:^5.18.1": - version: 5.30.0 - resolution: "@sentry/node@npm:5.30.0" - dependencies: - "@sentry/core": "npm:5.30.0" - "@sentry/hub": "npm:5.30.0" - "@sentry/tracing": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - cookie: "npm:^0.4.1" - https-proxy-agent: "npm:^5.0.0" - lru_map: "npm:^0.3.3" - tslib: "npm:^1.9.3" - checksum: 10c0/c50db7c81ace57cac17692245c2ab3c84a6149183f81d5f2dfd157eaa7b66eb4d6a727dd13a754bb129c96711389eec2944cd94126722ee1d8b11f2b627b830d - languageName: node - linkType: hard - -"@sentry/tracing@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/tracing@npm:5.30.0" - dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/minimal": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/46830265bc54a3203d7d9f0d8d9f2f7d9d2c6a977e07ccdae317fa3ea29c388b904b3bef28f7a0ba9c074845d67feab63c6d3c0ddce9aeb275b6c966253fb415 - languageName: node - linkType: hard - -"@sentry/types@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/types@npm:5.30.0" - checksum: 10c0/99c6e55c0a82c8ca95be2e9dbb35f581b29e4ff7af74b23bc62b690de4e35febfa15868184a2303480ef86babd4fea5273cf3b5ddf4a27685b841a72f13a0c88 - languageName: node - linkType: hard - -"@sentry/utils@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/utils@npm:5.30.0" - dependencies: - "@sentry/types": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10c0/ca8eebfea7ac7db6d16f6c0b8a66ac62587df12a79ce9d0d8393f4d69880bb8d40d438f9810f7fb107a9880fe0d68bbf797b89cbafd113e89a0829eb06b205f8 - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.34.0": - version: 0.34.48 - resolution: "@sinclair/typebox@npm:0.34.48" - checksum: 10c0/e09f26d8ad471a07ee64004eea7c4ec185349a1f61c03e87e71ea33cbe98e97959940076c2e52968a955ffd4c215bf5ba7035e77079511aac7935f25e989e29d - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^3.0.1": - version: 3.0.1 - resolution: "@sinonjs/commons@npm:3.0.1" - dependencies: - type-detect: "npm:4.0.8" - checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^13.0.0": - version: 13.0.5 - resolution: "@sinonjs/fake-timers@npm:13.0.5" - dependencies: - "@sinonjs/commons": "npm:^3.0.1" - checksum: 10c0/a707476efd523d2138ef6bba916c83c4a377a8372ef04fad87499458af9f01afc58f4f245c5fd062793d6d70587309330c6f96947b5bd5697961c18004dc3e26 - languageName: node - linkType: hard - -"@solidity-parser/parser@npm:^0.14.0": - version: 0.14.5 - resolution: "@solidity-parser/parser@npm:0.14.5" - dependencies: - antlr4ts: "npm:^0.5.0-alpha.4" - checksum: 10c0/d5c689d8925a18e1ceb2f6449a8263915b1676117856109b7793eda8f7dafc975b6ed0d0d73fc08257903cac383484e4c8f8cf47b069621e81ba368c4ea4cf6a - languageName: node - linkType: hard - -"@solidity-parser/parser@npm:^0.20.1": - version: 0.20.2 - resolution: "@solidity-parser/parser@npm:0.20.2" - checksum: 10c0/23b0b7ed343a4fa55cb8621cf4fc81b0bdd791a4ee7e96ced7778db07de66d4e418db2c2dc1525b1f82fc0310ac829c78382327292b37e35cb30a19961fcb429 - languageName: node - linkType: hard - -"@stellar/js-xdr@npm:^3.1.2": - version: 3.1.2 - resolution: "@stellar/js-xdr@npm:3.1.2" - checksum: 10c0/eaa1fc9341b1d1bcaf5c616b9bc0a6dc9a6c7ef7a477f6f6b4cb4206a947cdd3c7e06395ba7be30f6137179eec5f206d75b3ed66fdfe5e2ac54553b7a353130c - languageName: node - linkType: hard - -"@stellar/stellar-base@npm:^14.0.4": - version: 14.0.4 - resolution: "@stellar/stellar-base@npm:14.0.4" - dependencies: - "@noble/curves": "npm:^1.9.6" - "@stellar/js-xdr": "npm:^3.1.2" - base32.js: "npm:^0.1.0" - bignumber.js: "npm:^9.3.1" - buffer: "npm:^6.0.3" - sha.js: "npm:^2.4.12" - checksum: 10c0/e09de57639b09d18ebd51a5e872f5dc742be6ee2c81ad105f0745ac1c77a7d783bd9b37299093b30136436ca1df7827f534eccbaaf0ac4c86f9d51814421b667 - languageName: node - linkType: hard - -"@stellar/stellar-sdk@npm:^14.5.0": - version: 14.5.0 - resolution: "@stellar/stellar-sdk@npm:14.5.0" - dependencies: - "@stellar/stellar-base": "npm:^14.0.4" - axios: "npm:^1.13.3" - bignumber.js: "npm:^9.3.1" - commander: "npm:^14.0.2" - eventsource: "npm:^2.0.2" - feaxios: "npm:^0.0.23" - randombytes: "npm:^2.1.0" - toml: "npm:^3.0.0" - urijs: "npm:^1.19.1" - bin: - stellar-js: bin/stellar-js - checksum: 10c0/062ad0f071c54280060f3931545a14d86c48029b1942beedafce067a1af0a304311a1ecf2af2bbcdb25cd251f921feaef7933ef21cfdebfac207a4c636cfc3a9 - languageName: node - linkType: hard - -"@streamparser/json-node@npm:^0.0.22": - version: 0.0.22 - resolution: "@streamparser/json-node@npm:0.0.22" - dependencies: - "@streamparser/json": "npm:^0.0.22" - checksum: 10c0/3b84fbbf93f183dd00e43db5ed994cdc23993548faf8b318fff52c45ca6413ddb03e2be99e407141a8a89673bb19a84949be97b8bb1d22a25bde5c3cdac43074 - languageName: node - linkType: hard - -"@streamparser/json@npm:^0.0.22": - version: 0.0.22 - resolution: "@streamparser/json@npm:0.0.22" - checksum: 10c0/4496e286d607e37552c75e1e63ed7e722392d4d91939401ec11eb63c8c7d1fb7a2cf5733f1a60dc63ad95996f12d62f5639724b2c31584bb8ace51b1f3910ccc - languageName: node - linkType: hard - -"@tokenizer/inflate@npm:^0.2.6": - version: 0.2.7 - resolution: "@tokenizer/inflate@npm:0.2.7" - dependencies: - debug: "npm:^4.4.0" - fflate: "npm:^0.8.2" - token-types: "npm:^6.0.0" - checksum: 10c0/75bd0c510810dfd62be9d963216b5852cde021e1f8aab43b37662bc6aa75e65fd7277fcab7d463186b55cee36a5b61129916161bdb2a7d18064016156c7daf4f - languageName: node - linkType: hard - -"@tokenizer/token@npm:^0.3.0": - version: 0.3.0 - resolution: "@tokenizer/token@npm:0.3.0" - checksum: 10c0/7ab9a822d4b5ff3f5bca7f7d14d46bdd8432528e028db4a52be7fbf90c7f495cc1af1324691dda2813c6af8dc4b8eb29de3107d4508165f9aa5b53e7d501f155 - languageName: node - linkType: hard - -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.12 - resolution: "@tsconfig/node10@npm:1.0.12" - checksum: 10c0/7bbbd7408cfaced86387a9b1b71cebc91c6fd701a120369735734da8eab1a4773fc079abd9f40c9e0b049e12586c8ac0e13f0da596bfd455b9b4c3faa813ebc5 - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb - languageName: node - linkType: hard - -"@tybys/wasm-util@npm:^0.10.0": - version: 0.10.1 - resolution: "@tybys/wasm-util@npm:0.10.1" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 - languageName: node - linkType: hard - -"@typechain/ethers-v6@npm:^0.5.1": - version: 0.5.1 - resolution: "@typechain/ethers-v6@npm:0.5.1" - dependencies: - lodash: "npm:^4.17.15" - ts-essentials: "npm:^7.0.1" - peerDependencies: - ethers: 6.x - typechain: ^8.3.2 - typescript: ">=4.7.0" - checksum: 10c0/f3c80151c07e01adbf520e0854426649edb0ee540920569487dd8da7eca2fa8615710f4c0eda008e7afdf255fbb8dfdebf721a5d324a4dffeb087611d9bd64b9 - languageName: node - linkType: hard - -"@typechain/hardhat@npm:^8.0.0": - version: 8.0.3 - resolution: "@typechain/hardhat@npm:8.0.3" - dependencies: - fs-extra: "npm:^9.1.0" - peerDependencies: - "@typechain/ethers-v6": ^0.4.3 - ethers: ^6.1.0 - hardhat: ^2.9.9 - typechain: ^8.3.1 - checksum: 10c0/2b7b8d60e35b0b65884659f14bd6a354c88ec042f9af7d9f43003784ccca9a36bf8193b2cd26859b9b262acc543b1b477306bfb4d314a3de79aacff1136b97ec - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.20.5": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.27.0 - resolution: "@types/babel__generator@npm:7.27.0" - dependencies: - "@babel/types": "npm:^7.0.0" - checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*": - version: 7.28.0 - resolution: "@types/babel__traverse@npm:7.28.0" - dependencies: - "@babel/types": "npm:^7.28.2" - checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 - languageName: node - linkType: hard - -"@types/bn.js@npm:^5.1.0": - version: 5.2.0 - resolution: "@types/bn.js@npm:5.2.0" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/7a36114b8e61faba5c28b433c3e5aabded261745dabb8f3fe41b2d84e8c4c2b8282e52a88a842bd31a565ff5dbf685145ccd91171f1a8d657fb249025c17aa85 - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.6 - resolution: "@types/body-parser@npm:1.19.6" - dependencies: - "@types/connect": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/542da05c924dce58ee23f50a8b981fee36921850c82222e384931fda3e106f750f7880c47be665217d72dbe445129049db6eb1f44e7a06b09d62af8f3cca8ea7 - languageName: node - linkType: hard - -"@types/chai-as-promised@npm:^7.1.3": - version: 7.1.8 - resolution: "@types/chai-as-promised@npm:7.1.8" - dependencies: - "@types/chai": "npm:*" - checksum: 10c0/c0a19cffe8d3f406b2cb9ba17f5f0efe318b14f27896d807b3199cc2231c16a4b5b6c464fdf2a939214de481de58cffd46c240539d3d4ece18659277d71ccc23 - languageName: node - linkType: hard - -"@types/chai@npm:*": - version: 5.2.3 - resolution: "@types/chai@npm:5.2.3" - dependencies: - "@types/deep-eql": "npm:*" - assertion-error: "npm:^2.0.1" - checksum: 10c0/e0ef1de3b6f8045a5e473e867c8565788c444271409d155588504840ad1a53611011f85072188c2833941189400228c1745d78323dac13fcede9c2b28bacfb2f - languageName: node - linkType: hard - -"@types/chai@npm:^4.3.11": - version: 4.3.20 - resolution: "@types/chai@npm:4.3.20" - checksum: 10c0/4601189d611752e65018f1ecadac82e94eed29f348e1d5430e5681a60b01e1ecf855d9bcc74ae43b07394751f184f6970fac2b5561fc57a1f36e93a0f5ffb6e8 - languageName: node - linkType: hard - -"@types/concat-stream@npm:^1.6.0": - version: 1.6.1 - resolution: "@types/concat-stream@npm:1.6.1" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/838a0ec89d59a11c425b7728fdd05b17b652086a27fdf5b787778521ccf6d3133d9e9a6e6b803785b28c0a0f7a437582813e37b317ed8100870af836ad49a7a2 - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.38 - resolution: "@types/connect@npm:3.4.38" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c - languageName: node - linkType: hard - -"@types/cookiejar@npm:^2.1.5": - version: 2.1.5 - resolution: "@types/cookiejar@npm:2.1.5" - checksum: 10c0/af38c3d84aebb3ccc6e46fb6afeeaac80fb26e63a487dd4db5a8b87e6ad3d4b845ba1116b2ae90d6f886290a36200fa433d8b1f6fe19c47da6b81872ce9a2764 - languageName: node - linkType: hard - -"@types/deep-eql@npm:*": - version: 4.0.2 - resolution: "@types/deep-eql@npm:4.0.2" - checksum: 10c0/bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844 - languageName: node - linkType: hard - -"@types/eslint-scope@npm:^3.7.7": - version: 3.7.7 - resolution: "@types/eslint-scope@npm:3.7.7" - dependencies: - "@types/eslint": "npm:*" - "@types/estree": "npm:*" - checksum: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 9.6.1 - resolution: "@types/eslint@npm:9.6.1" - dependencies: - "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 10c0/69ba24fee600d1e4c5abe0df086c1a4d798abf13792d8cfab912d76817fe1a894359a1518557d21237fbaf6eda93c5ab9309143dee4c59ef54336d1b3570420e - languageName: node - linkType: hard - -"@types/estree@npm:*, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": - version: 1.0.8 - resolution: "@types/estree@npm:1.0.8" - checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.33": - version: 4.19.7 - resolution: "@types/express-serve-static-core@npm:4.19.7" - dependencies: - "@types/node": "npm:*" - "@types/qs": "npm:*" - "@types/range-parser": "npm:*" - "@types/send": "npm:*" - checksum: 10c0/c239df87863b8515e68dcb18203a9e2ba6108f86fdc385090284464a57a6dca6abb60a961cb6a73fea2110576f4f8acefa1cb06b60d14b6b0e5104478e7d57d1 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^5.0.0": - version: 5.1.0 - resolution: "@types/express-serve-static-core@npm:5.1.0" - dependencies: - "@types/node": "npm:*" - "@types/qs": "npm:*" - "@types/range-parser": "npm:*" - "@types/send": "npm:*" - checksum: 10c0/1918233c68a0c69695f78331af1aed5fb5190f91da6309318f700adeb78573be840b5d206cb8eda804b65a9989fdeccdaaf84c1e95adc3615052749224b64519 - languageName: node - linkType: hard - -"@types/express@npm:*": - version: 5.0.6 - resolution: "@types/express@npm:5.0.6" - dependencies: - "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^5.0.0" - "@types/serve-static": "npm:^2" - checksum: 10c0/f1071e3389a955d4f9a38aae38634121c7cd9b3171ba4201ec9b56bd534aba07866839d278adc0dda05b942b05a901a02fd174201c3b1f70ce22b10b6c68f24b - languageName: node - linkType: hard - -"@types/express@npm:^4.17.17": - version: 4.17.25 - resolution: "@types/express@npm:4.17.25" - dependencies: - "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^4.17.33" - "@types/qs": "npm:*" - "@types/serve-static": "npm:^1" - checksum: 10c0/f42b616d2c9dbc50352c820db7de182f64ebbfa8dba6fb6c98e5f8f0e2ef3edde0131719d9dc6874803d25ad9ca2d53471d0fec2fbc60a6003a43d015bab72c4 - languageName: node - linkType: hard - -"@types/form-data@npm:0.0.33": - version: 0.0.33 - resolution: "@types/form-data@npm:0.0.33" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/20bd8f7491d759ce613e35612aef37b3084be43466883ce83e1261905032939bc9e51e470e61bccf6d2f08a39659c44795531bbf66af177176ab0ddbd968e155 - languageName: node - linkType: hard - -"@types/glob@npm:^7.1.1": - version: 7.2.0 - resolution: "@types/glob@npm:7.2.0" - dependencies: - "@types/minimatch": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/a8eb5d5cb5c48fc58c7ca3ff1e1ddf771ee07ca5043da6e4871e6757b4472e2e73b4cfef2644c38983174a4bc728c73f8da02845c28a1212f98cabd293ecae98 - languageName: node - linkType: hard - -"@types/http-errors@npm:*": - version: 2.0.5 - resolution: "@types/http-errors@npm:2.0.5" - checksum: 10c0/00f8140fbc504f47356512bd88e1910c2f07e04233d99c88c854b3600ce0523c8cd0ba7d1897667243282eb44c59abb9245959e2428b9de004f93937f52f7c15 - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.1, @types/istanbul-lib-coverage@npm:^2.0.6": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" - dependencies: - "@types/istanbul-lib-coverage": "npm:*" - checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.4": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" - dependencies: - "@types/istanbul-lib-report": "npm:*" - checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee - languageName: node - linkType: hard - -"@types/jest@npm:^30.0.0": - version: 30.0.0 - resolution: "@types/jest@npm:30.0.0" - dependencies: - expect: "npm:^30.0.0" - pretty-format: "npm:^30.0.0" - checksum: 10c0/20c6ce574154bc16f8dd6a97afacca4b8c4921a819496a3970382031c509ebe87a1b37b152a1b8475089b82d8ca951a9e95beb4b9bf78fbf579b1536f0b65969 - languageName: node - linkType: hard - -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db - languageName: node - linkType: hard - -"@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:9.0.10": - version: 9.0.10 - resolution: "@types/jsonwebtoken@npm:9.0.10" - dependencies: - "@types/ms": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/0688ac8fb75f809201cb7e18a12b9d80ce539cb9dd27e1b01e11807cb1a337059e899b8ee3abc3f2c9417f02e363a3069d9eab9ef9724b1da1f0e10713514f94 - languageName: node - linkType: hard - -"@types/luxon@npm:~3.7.0": - version: 3.7.1 - resolution: "@types/luxon@npm:3.7.1" - checksum: 10c0/2db30c13b58adcd86daa447faa3ba59515fe907ead8ee3e6bb716d662812af0619d712f6c1eb190cdd7f9d2c00444c3ecd80af0f36e8143eb0c5e7339d6b2aca - languageName: node - linkType: hard - -"@types/methods@npm:^1.1.4": - version: 1.1.4 - resolution: "@types/methods@npm:1.1.4" - checksum: 10c0/a78534d79c300718298bfff92facd07bf38429c66191f640c1db4c9cff1e36f819304298a96f7536b6512bfc398e5c3e6b831405e138cd774b88ad7be78d682a - languageName: node - linkType: hard - -"@types/mime@npm:^1": - version: 1.3.5 - resolution: "@types/mime@npm:1.3.5" - checksum: 10c0/c2ee31cd9b993804df33a694d5aa3fa536511a49f2e06eeab0b484fef59b4483777dbb9e42a4198a0809ffbf698081fdbca1e5c2218b82b91603dfab10a10fbc - languageName: node - linkType: hard - -"@types/minimatch@npm:*": - version: 5.1.2 - resolution: "@types/minimatch@npm:5.1.2" - checksum: 10c0/83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 - languageName: node - linkType: hard - -"@types/mocha@npm:^10.0.10": - version: 10.0.10 - resolution: "@types/mocha@npm:10.0.10" - checksum: 10c0/d2b8c48138cde6923493e42b38e839695eb42edd04629abe480a8f34c0e3f50dd82a55832c2e8d2b6e6f9e4deb492d7d733e600fbbdd5a0ceccbcfc6844ff9d5 - languageName: node - linkType: hard - -"@types/ms@npm:*": - version: 2.1.0 - resolution: "@types/ms@npm:2.1.0" - checksum: 10c0/5ce692ffe1549e1b827d99ef8ff71187457e0eb44adbae38fdf7b9a74bae8d20642ee963c14516db1d35fa2652e65f47680fdf679dcbde52bbfadd021f497225 - languageName: node - linkType: hard - -"@types/multer@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/multer@npm:2.0.0" - dependencies: - "@types/express": "npm:*" - checksum: 10c0/375b0e77c4675c2ff27d1170e469df48dced928cc9fcd077ead111a20d0f2c01921fd25e20e25426604d6d3e311b37da2bc03ce47523d06adafba5c4b8077b67 - languageName: node - linkType: hard - -"@types/node@npm:*, @types/node@npm:^25.0.3": - version: 25.0.3 - resolution: "@types/node@npm:25.0.3" - dependencies: - undici-types: "npm:~7.16.0" - checksum: 10c0/b7568f0d765d9469621615e2bb257c7fd1953d95e9acbdb58dffb6627a2c4150d405a4600aa1ad8a40182a94fe5f903cafd3c0a2f5132814debd0e3bfd61f835 - languageName: node - linkType: hard - -"@types/node@npm:16.9.1": - version: 16.9.1 - resolution: "@types/node@npm:16.9.1" - checksum: 10c0/17877153b2fe748e85dd85432c7d6776cfaced7fd69f1998d005812d4865ac02e192a3adde7869ba8f449550f0a80ea6e3369e449a07c587e71222c56478e7d4 - languageName: node - linkType: hard - -"@types/node@npm:22.7.5": - version: 22.7.5 - resolution: "@types/node@npm:22.7.5" - dependencies: - undici-types: "npm:~6.19.2" - checksum: 10c0/cf11f74f1a26053ec58066616e3a8685b6bcd7259bc569738b8f752009f9f0f7f85a1b2d24908e5b0f752482d1e8b6babdf1fbb25758711ec7bb9500bfcd6e60 - languageName: node - linkType: hard - -"@types/node@npm:^10.0.3": - version: 10.17.60 - resolution: "@types/node@npm:10.17.60" - checksum: 10c0/0742294912a6e79786cdee9ed77cff6ee8ff007b55d8e21170fc3e5994ad3a8101fea741898091876f8dc32b0a5ae3d64537b7176799e92da56346028d2cbcd2 - languageName: node - linkType: hard - -"@types/node@npm:^20.0.0": - version: 20.19.33 - resolution: "@types/node@npm:20.19.33" - dependencies: - undici-types: "npm:~6.21.0" - checksum: 10c0/a1a6234a2b6fa577fbb1ccc471e5e54a79c6e1a51be10a67b034461b752a50017854810e943494f20b3c3c6d14df84c93757e0a2ec57aa81c830d6faeab72cf2 - languageName: node - linkType: hard - -"@types/node@npm:^20.3.1": - version: 20.19.27 - resolution: "@types/node@npm:20.19.27" - dependencies: - undici-types: "npm:~6.21.0" - checksum: 10c0/7599c24d80465c1aa6e29b53581fc20ad8862ff33e6eef31d05c1c706868476ee57319c89b802ea972dd4d64ce86d18020aa5344f851fb59b730ea509a63300f - languageName: node - linkType: hard - -"@types/node@npm:^8.0.0": - version: 8.10.66 - resolution: "@types/node@npm:8.10.66" - checksum: 10c0/425e0fca5bad0d6ff14336946a1e3577750dcfbb7449614786d3241ca78ff44e3beb43eace122682de1b9d8e25cf2a0456a0b3e500d78cb55cab68f892e38141 - languageName: node - linkType: hard - -"@types/passport-jwt@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/passport-jwt@npm:4.0.1" - dependencies: - "@types/jsonwebtoken": "npm:*" - "@types/passport-strategy": "npm:*" - checksum: 10c0/0ced0eaa7bb379d674821108d9bc6758223f1a5f2b9790ec78d3eaaccce6a58a424cf8ed22b53d813740ec53d929e21d92cf794ef0fb30c732866750763c0d7a - languageName: node - linkType: hard - -"@types/passport-strategy@npm:*": - version: 0.2.38 - resolution: "@types/passport-strategy@npm:0.2.38" - dependencies: - "@types/express": "npm:*" - "@types/passport": "npm:*" - checksum: 10c0/d7d2b1782a0845bd8914250aa9213a23c8d9c2225db46d854b77f2bf0129a789f46d4a5e9ad336eca277fc7e0a051c0a2942da5c864e7c6710763f102d9d4295 - languageName: node - linkType: hard - -"@types/passport@npm:*, @types/passport@npm:^1.0.17": - version: 1.0.17 - resolution: "@types/passport@npm:1.0.17" - dependencies: - "@types/express": "npm:*" - checksum: 10c0/09039429a9178117a80880c4e7d437abc83216eac5e0c97bc6f14a03a59193386cff484931dc880693f8b13a512c366ef7a51ecd8cc1a63f17366be68161f633 - languageName: node - linkType: hard - -"@types/pbkdf2@npm:^3.0.0": - version: 3.1.2 - resolution: "@types/pbkdf2@npm:3.1.2" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/4f60b0e3c73297f55023b993d3d543212aa7f61c8c0d6a2720f5dbe2cf38e2fe55ff295d550ac048dddbfc3d44c285cfe16126d65c613bd67a57662357e268d9 - languageName: node - linkType: hard - -"@types/pdf-parse@npm:^1.1.5": - version: 1.1.5 - resolution: "@types/pdf-parse@npm:1.1.5" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/68989815ca9b6321eb5ab47437edf58d4f8291d4857b4bad0d7dedf1f4535da9918bc1113f7f59763c238f35175b080d3dfa76c5f26eeeb091ac4b6604028d2e - languageName: node - linkType: hard - -"@types/prettier@npm:^2.1.1": - version: 2.7.3 - resolution: "@types/prettier@npm:2.7.3" - checksum: 10c0/0960b5c1115bb25e979009d0b44c42cf3d792accf24085e4bfce15aef5794ea042e04e70c2139a2c3387f781f18c89b5706f000ddb089e9a4a2ccb7536a2c5f0 - languageName: node - linkType: hard - -"@types/qs@npm:*, @types/qs@npm:^6.2.31": - version: 6.14.0 - resolution: "@types/qs@npm:6.14.0" - checksum: 10c0/5b3036df6e507483869cdb3858201b2e0b64b4793dc4974f188caa5b5732f2333ab9db45c08157975054d3b070788b35088b4bc60257ae263885016ee2131310 - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.7 - resolution: "@types/range-parser@npm:1.2.7" - checksum: 10c0/361bb3e964ec5133fa40644a0b942279ed5df1949f21321d77de79f48b728d39253e5ce0408c9c17e4e0fd95ca7899da36841686393b9f7a1e209916e9381a3c - languageName: node - linkType: hard - -"@types/secp256k1@npm:^4.0.1": - version: 4.0.7 - resolution: "@types/secp256k1@npm:4.0.7" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/3e4a22bb699597adc723414a841d2e8a1fa71c95c3d018c6a2dd8482500b6e9fe2d78d87e758f18c1aabe333cac22ac2a96f456e3bc147df30b7fac4e6346618 - languageName: node - linkType: hard - -"@types/semver@npm:^7.5.0": - version: 7.7.1 - resolution: "@types/semver@npm:7.7.1" - checksum: 10c0/c938aef3bf79a73f0f3f6037c16e2e759ff40c54122ddf0b2583703393d8d3127130823facb880e694caa324eb6845628186aac1997ee8b31dc2d18fafe26268 - languageName: node - linkType: hard - -"@types/send@npm:*": - version: 1.2.1 - resolution: "@types/send@npm:1.2.1" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/7673747f8c2d8e67f3b1b3b57e9d4d681801a4f7b526ecf09987bb9a84a61cf94aa411c736183884dc762c1c402a61681eb1ef200d8d45d7e5ec0ab67ea5f6c1 - languageName: node - linkType: hard - -"@types/send@npm:<1": - version: 0.17.6 - resolution: "@types/send@npm:0.17.6" - dependencies: - "@types/mime": "npm:^1" - "@types/node": "npm:*" - checksum: 10c0/a9d76797f0637738062f1b974e0fcf3d396a28c5dc18c3f95ecec5dabda82e223afbc2d56a0bca46b6326fd7bb229979916cea40de2270a98128fd94441b87c2 - languageName: node - linkType: hard - -"@types/serve-static@npm:^1": - version: 1.15.10 - resolution: "@types/serve-static@npm:1.15.10" - dependencies: - "@types/http-errors": "npm:*" - "@types/node": "npm:*" - "@types/send": "npm:<1" - checksum: 10c0/842fca14c9e80468f89b6cea361773f2dcd685d4616a9f59013b55e1e83f536e4c93d6d8e3ba5072d40c4e7e64085210edd6646b15d538ded94512940a23021f - languageName: node - linkType: hard - -"@types/serve-static@npm:^2": - version: 2.2.0 - resolution: "@types/serve-static@npm:2.2.0" - dependencies: - "@types/http-errors": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/a3c6126bdbf9685e6c7dc03ad34639666eff32754e912adeed9643bf3dd3aa0ff043002a7f69039306e310d233eb8e160c59308f95b0a619f32366bbc48ee094 - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.3": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c - languageName: node - linkType: hard - -"@types/superagent@npm:^8.1.0": - version: 8.1.9 - resolution: "@types/superagent@npm:8.1.9" - dependencies: - "@types/cookiejar": "npm:^2.1.5" - "@types/methods": "npm:^1.1.4" - "@types/node": "npm:*" - form-data: "npm:^4.0.0" - checksum: 10c0/12631f1d8b3a62e1f435bc885f6d64d1a2d1ae82b80f0c6d63d4d6372c40b6f1fee6b3da59ac18bb86250b1eb73583bf2d4b1f7882048c32468791c560c69b7c - languageName: node - linkType: hard - -"@types/supertest@npm:^6.0.3": - version: 6.0.3 - resolution: "@types/supertest@npm:6.0.3" - dependencies: - "@types/methods": "npm:^1.1.4" - "@types/superagent": "npm:^8.1.0" - checksum: 10c0/a2080f870154b09db123864a484fb633bc9e2a0f7294a194388df4c7effe5af9de36d5a5ebf819f72b404fa47b5e813c47d5a3a51354251fd2fa8589bfb64f2c - languageName: node - linkType: hard - -"@types/uuid@npm:^11.0.0": - version: 11.0.0 - resolution: "@types/uuid@npm:11.0.0" - dependencies: - uuid: "npm:*" - checksum: 10c0/6ebf1448d8fdc78d348a8a84389b74083f2f58bed75a5a6cf3be8419d33dcf757735c8b2de746b066ff8ef07f4384d02549774dc84195ffa46b24745471e9d8e - languageName: node - linkType: hard - -"@types/validator@npm:^13.15.3": - version: 13.15.10 - resolution: "@types/validator@npm:13.15.10" - checksum: 10c0/3e2e65fcd37dd6961ca3fd0535293d0c42f5911dc3ca44b96f458835e6db2392b678ccbb0c9815d8c0a14e653439e6c62c7b8758a6cd1d6e390551c9e56618ac - languageName: node - linkType: hard - -"@types/webidl-conversions@npm:*": - version: 7.0.3 - resolution: "@types/webidl-conversions@npm:7.0.3" - checksum: 10c0/ac2ccff93b95ac7c8ca73dc6064403181691bba7ea144296f462dc9108a07be16cbad7b9c704b3df706dcc5a117e1f7bf7fb27aeb75b09c0f3148de8aee11aff - languageName: node - linkType: hard - -"@types/whatwg-url@npm:^13.0.0": - version: 13.0.0 - resolution: "@types/whatwg-url@npm:13.0.0" - dependencies: - "@types/webidl-conversions": "npm:*" - checksum: 10c0/b7b53ae7b5290a0c26e2a5c6a2353af925fe9fc7ab0bbf642e8b76f65b39f638b471dadfda8da441aed3ca32cafd33b1a03459117c9ec85fd91b1e6c0e93044e - languageName: node - linkType: hard - -"@types/xml2js@npm:^0.4.14": - version: 0.4.14 - resolution: "@types/xml2js@npm:0.4.14" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/06776e7f7aec55a698795e60425417caa7d7db3ff680a7b4ccaae1567c5fec28ff49b9975e9a0d74ff4acb8f4a43730501bbe64f9f761d784c6476ba4db12e13 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.33": - version: 17.0.35 - resolution: "@types/yargs@npm:17.0.35" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:8.56.0, @typescript-eslint/eslint-plugin@npm:^8.50.0": - version: 8.56.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.56.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.56.0" - "@typescript-eslint/type-utils": "npm:8.56.0" - "@typescript-eslint/utils": "npm:8.56.0" - "@typescript-eslint/visitor-keys": "npm:8.56.0" - ignore: "npm:^7.0.5" - natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^2.4.0" - peerDependencies: - "@typescript-eslint/parser": ^8.56.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/26e56d14562b3d2d34b366859ec56668fdac909d6ea534451cdb4267846ff50dcccd0026a4eba71ca41f7c8bdef30ef1356620c1ff2363ad64bd8fad33a72b19 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/type-utils": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.4" - natural-compare: "npm:^1.4.0" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:8.56.0, @typescript-eslint/parser@npm:^8.50.0": - version: 8.56.0 - resolution: "@typescript-eslint/parser@npm:8.56.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:8.56.0" - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/typescript-estree": "npm:8.56.0" - "@typescript-eslint/visitor-keys": "npm:8.56.0" - debug: "npm:^4.4.3" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/f3a29c6fdc4e0d1a1e7ddb9909ab839c2f67591933e432c10f44aabb69ae2229f8d2072a220f63b70618cc35c67ff53de0ed110be86b33f4f354c19993f764cb - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/project-service@npm:8.56.0" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.56.0" - "@typescript-eslint/types": "npm:^8.56.0" - debug: "npm:^4.4.3" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/8302dc30ad8c0342137998ea872782cdd673f9e7ec4b244eeb0976915b86d6c44ef55485e2cdac2987dbf309d3663aaf293c85e88326093fc7656b51432369f6 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10c0/eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/scope-manager@npm:8.56.0" - dependencies: - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/visitor-keys": "npm:8.56.0" - checksum: 10c0/898b705295e0a4081702a52f98e0d1e50f8047900becd087b232bc71f8af2b87ed70a065bed0076a26abec8f4e5c6bb4a3a0de33b7ea0e3704ecdc7487043b57 - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:8.56.0, @typescript-eslint/tsconfig-utils@npm:^8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.56.0" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/20f48af8b497d8a730dcac3724314b4f49ecc436f8871f3e17f5193d83e7d290c8838a126971767cd011208969bc4ff0f4bddc40eac167348c88d29fdb379c8b - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/type-utils@npm:6.21.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/type-utils@npm:8.56.0" - dependencies: - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/typescript-estree": "npm:8.56.0" - "@typescript-eslint/utils": "npm:8.56.0" - debug: "npm:^4.4.3" - ts-api-utils: "npm:^2.4.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/4da61c36fa46f9d21a519a06b4ea6c91e9fa8a8e420fede41fb5d0f29866faa11641562b6e01c221ca6ec86bc0c3ecd7b8f11fc85b92277c3fd450ffc8fa2522 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10c0/020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.56.0, @typescript-eslint/types@npm:^8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/types@npm:8.56.0" - checksum: 10c0/5deb4ebf5fa62f9f927f6aa45f7245aa03567e88941cd76e7b083175fd59fc40368a804ba7ff7581eac75706e42ddd5c77d2a60d6b1e76ab7865d559c9af9937 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.56.0" - dependencies: - "@typescript-eslint/project-service": "npm:8.56.0" - "@typescript-eslint/tsconfig-utils": "npm:8.56.0" - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/visitor-keys": "npm:8.56.0" - debug: "npm:^4.4.3" - minimatch: "npm:^9.0.5" - semver: "npm:^7.7.3" - tinyglobby: "npm:^0.2.15" - ts-api-utils: "npm:^2.4.0" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/cc2ba5bbfabb71c1510aea8fb8bf0d8385cabb9ca5b65a621e73f3088a91089a02aea56a9d9a31bd707593b5ba4d33d0aa2fcbdeee3cc7f4eca8226107523c28 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10c0/ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/utils@npm:8.56.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.56.0" - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/typescript-estree": "npm:8.56.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/49545d399345bb4d8113d1001ec60c05c7e0d28fd44cb3c75128e58a53c9bf7ae8d0680ca089a4f37ab9eea8a3ef39011fc731eb4ad8dd4ab642849d84318645 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.56.0" - dependencies: - "@typescript-eslint/types": "npm:8.56.0" - eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/4cb7668430042da70707ac5cad826348e808af94095aca1f3d07d39d566745a33991d3defccd1e687f1b1f8aeea52eeb47591933e962452eb51c4bcd88773c12 - languageName: node - linkType: hard - -"@ungap/structured-clone@npm:^1.2.0, @ungap/structured-clone@npm:^1.3.0": - version: 1.3.0 - resolution: "@ungap/structured-clone@npm:1.3.0" - checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a - languageName: node - linkType: hard - -"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-android-arm64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-x64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" - conditions: os=linux & cpu=riscv64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" - dependencies: - "@napi-rs/wasm-runtime": "npm:^0.2.11" - conditions: cpu=wasm32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/ast@npm:1.14.1" - dependencies: - "@webassemblyjs/helper-numbers": "npm:1.13.2" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - checksum: 10c0/67a59be8ed50ddd33fbb2e09daa5193ac215bf7f40a9371be9a0d9797a114d0d1196316d2f3943efdb923a3d809175e1563a3cb80c814fb8edccd1e77494972b - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" - checksum: 10c0/0e88bdb8b50507d9938be64df0867f00396b55eba9df7d3546eb5dc0ca64d62e06f8d881ec4a6153f2127d0f4c11d102b6e7d17aec2f26bb5ff95a5e60652412 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" - checksum: 10c0/31be497f996ed30aae4c08cac3cce50c8dcd5b29660383c0155fce1753804fc55d47fcba74e10141c7dd2899033164e117b3bcfcda23a6b043e4ded4f1003dfb - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" - checksum: 10c0/0d54105dc373c0fe6287f1091e41e3a02e36cdc05e8cf8533cdc16c59ff05a646355415893449d3768cda588af451c274f13263300a251dc11a575bc4c9bd210 - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" - dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.13.2" - "@webassemblyjs/helper-api-error": "npm:1.13.2" - "@xtuc/long": "npm:4.2.2" - checksum: 10c0/9c46852f31b234a8fb5a5a9d3f027bc542392a0d4de32f1a9c0075d5e8684aa073cb5929b56df565500b3f9cc0a2ab983b650314295b9bf208d1a1651bfc825a - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" - checksum: 10c0/c4355d14f369b30cf3cbdd3acfafc7d0488e086be6d578e3c9780bd1b512932352246be96e034e2a7fcfba4f540ec813352f312bfcbbfe5bcfbf694f82ccc682 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - checksum: 10c0/1f9b33731c3c6dbac3a9c483269562fa00d1b6a4e7133217f40e83e975e636fd0f8736e53abd9a47b06b66082ecc976c7384391ab0a68e12d509ea4e4b948d64 - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/ieee754@npm:1.13.2" - dependencies: - "@xtuc/ieee754": "npm:^1.2.0" - checksum: 10c0/2e732ca78c6fbae3c9b112f4915d85caecdab285c0b337954b180460290ccd0fb00d2b1dc4bb69df3504abead5191e0d28d0d17dfd6c9d2f30acac8c4961c8a7 - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/leb128@npm:1.13.2" - dependencies: - "@xtuc/long": "npm:4.2.2" - checksum: 10c0/dad5ef9e383c8ab523ce432dfd80098384bf01c45f70eb179d594f85ce5db2f80fa8c9cba03adafd85684e6d6310f0d3969a882538975989919329ac4c984659 - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/utf8@npm:1.13.2" - checksum: 10c0/d3fac9130b0e3e5a1a7f2886124a278e9323827c87a2b971e6d0da22a2ba1278ac9f66a4f2e363ecd9fac8da42e6941b22df061a119e5c0335f81006de9ee799 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:^1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/helper-wasm-section": "npm:1.14.1" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - "@webassemblyjs/wasm-opt": "npm:1.14.1" - "@webassemblyjs/wasm-parser": "npm:1.14.1" - "@webassemblyjs/wast-printer": "npm:1.14.1" - checksum: 10c0/5ac4781086a2ca4b320bdbfd965a209655fe8a208ca38d89197148f8597e587c9a2c94fb6bd6f1a7dbd4527c49c6844fcdc2af981f8d793a97bf63a016aa86d2 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/ieee754": "npm:1.13.2" - "@webassemblyjs/leb128": "npm:1.13.2" - "@webassemblyjs/utf8": "npm:1.13.2" - checksum: 10c0/d678810d7f3f8fecb2e2bdadfb9afad2ec1d2bc79f59e4711ab49c81cec578371e22732d4966f59067abe5fba8e9c54923b57060a729d28d408e608beef67b10 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - "@webassemblyjs/wasm-parser": "npm:1.14.1" - checksum: 10c0/515bfb15277ee99ba6b11d2232ddbf22aed32aad6d0956fe8a0a0a004a1b5a3a277a71d9a3a38365d0538ac40d1b7b7243b1a244ad6cd6dece1c1bb2eb5de7ee - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-api-error": "npm:1.13.2" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/ieee754": "npm:1.13.2" - "@webassemblyjs/leb128": "npm:1.13.2" - "@webassemblyjs/utf8": "npm:1.13.2" - checksum: 10c0/95427b9e5addbd0f647939bd28e3e06b8deefdbdadcf892385b5edc70091bf9b92fa5faac3fce8333554437c5d85835afef8c8a7d9d27ab6ba01ffab954db8c6 - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wast-printer@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@xtuc/long": "npm:4.2.2" - checksum: 10c0/8d7768608996a052545251e896eac079c98e0401842af8dd4de78fba8d90bd505efb6c537e909cd6dae96e09db3fa2e765a6f26492553a675da56e2db51f9d24 - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 - languageName: node - linkType: hard - -"abbrev@npm:1": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 - languageName: node - linkType: hard - -"abbrev@npm:1.0.x": - version: 1.0.9 - resolution: "abbrev@npm:1.0.9" - checksum: 10c0/214632e37c68f71d61d2ee920644a11c7b0cee08ddde96961b02ebe95ad86de0d56bd6762ff337bd9cf6e5c1431ce724babd28c110fce4b20d35f6fa87944d00 - languageName: node - linkType: hard - -"abbrev@npm:^4.0.0": - version: 4.0.0 - resolution: "abbrev@npm:4.0.0" - checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5 - languageName: node - linkType: hard - -"abitype@npm:1.2.3, abitype@npm:^1.2.3": - version: 1.2.3 - resolution: "abitype@npm:1.2.3" - peerDependencies: - typescript: ">=5.0.4" - zod: ^3.22.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - checksum: 10c0/c8740de1ae4961723a153224a52cb9a34a57903fb5c2ad61d5082b0b79b53033c9335381aa8c663c7ec213c9955a9853f694d51e95baceedef27356f7745c634 - languageName: node - linkType: hard - -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" - dependencies: - event-target-shim: "npm:^5.0.0" - checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 - languageName: node - linkType: hard - -"accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: "npm:~2.1.34" - negotiator: "npm:0.6.3" - checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 - languageName: node - linkType: hard - -"acorn-import-phases@npm:^1.0.3": - version: 1.0.4 - resolution: "acorn-import-phases@npm:1.0.4" - peerDependencies: - acorn: ^8.14.0 - checksum: 10c0/338eb46fc1aed5544f628344cb9af189450b401d152ceadbf1f5746901a5d923016cd0e7740d5606062d374fdf6941c29bb515d2bd133c4f4242d5d4cd73a3c7 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 - languageName: node - linkType: hard - -"acorn-walk@npm:^8.1.1": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" - dependencies: - acorn: "npm:^8.11.0" - checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 - languageName: node - linkType: hard - -"acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.15.0, acorn@npm:^8.4.1, acorn@npm:^8.9.0": - version: 8.15.0 - resolution: "acorn@npm:8.15.0" - bin: - acorn: bin/acorn - checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec - languageName: node - linkType: hard - -"adm-zip@npm:^0.4.16": - version: 0.4.16 - resolution: "adm-zip@npm:0.4.16" - checksum: 10c0/c56c6e138fd19006155fc716acae14d54e07c267ae19d78c8a8cdca04762bf20170a71a41aa8d8bad2f13b70d4f3e9a191009bafa5280e05a440ee506f871a55 - languageName: node - linkType: hard - -"aes-js@npm:3.0.0": - version: 3.0.0 - resolution: "aes-js@npm:3.0.0" - checksum: 10c0/87dd5b2363534b867db7cef8bc85a90c355460783744877b2db7c8be09740aac5750714f9e00902822f692662bda74cdf40e03fbb5214ffec75c2666666288b8 - languageName: node - linkType: hard - -"aes-js@npm:4.0.0-beta.5": - version: 4.0.0-beta.5 - resolution: "aes-js@npm:4.0.0-beta.5" - checksum: 10c0/444f4eefa1e602cbc4f2a3c644bc990f93fd982b148425fee17634da510586fc09da940dcf8ace1b2d001453c07ff042e55f7a0482b3cc9372bf1ef75479090c - languageName: node - linkType: hard - -"agent-base@npm:6": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: "npm:4" - checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 - languageName: node - linkType: hard - -"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.4 - resolution: "agent-base@npm:7.1.4" - checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 - languageName: node - linkType: hard - -"ajv-formats@npm:2.1.1, ajv-formats@npm:^2.1.1": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: "npm:^8.0.0" - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 - languageName: node - linkType: hard - -"ajv-keywords@npm:^5.1.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: "npm:^3.1.3" - peerDependencies: - ajv: ^8.8.2 - checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 - languageName: node - linkType: hard - -"ajv@npm:8.12.0, ajv@npm:^8.0.0": - version: 8.12.0 - resolution: "ajv@npm:8.12.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e - languageName: node - linkType: hard - -"ajv@npm:^6.12.4, ajv@npm:^6.12.5": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: "npm:^3.1.1" - fast-json-stable-stringify: "npm:^2.0.0" - json-schema-traverse: "npm:^0.4.1" - uri-js: "npm:^4.2.2" - checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 - languageName: node - linkType: hard - -"ajv@npm:^8.0.1, ajv@npm:^8.9.0": - version: 8.17.1 - resolution: "ajv@npm:8.17.1" - dependencies: - fast-deep-equal: "npm:^3.1.3" - fast-uri: "npm:^3.0.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 - languageName: node - linkType: hard - -"amdefine@npm:>=0.0.4": - version: 1.0.1 - resolution: "amdefine@npm:1.0.1" - checksum: 10c0/ba8aa5d4ff5248b2ed067111e72644b36b5b7ae88d9a5a2c4223dddb3bdc9102db67291e0b414f59f12c6479ac6a365886bac72c7965e627cbc732e0962dd1ab - languageName: node - linkType: hard - -"ansi-align@npm:^3.0.0": - version: 3.0.1 - resolution: "ansi-align@npm:3.0.1" - dependencies: - string-width: "npm:^4.1.0" - checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 - languageName: node - linkType: hard - -"ansi-colors@npm:4.1.3, ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.2": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 - languageName: node - linkType: hard - -"ansi-regex@npm:^3.0.0": - version: 3.0.1 - resolution: "ansi-regex@npm:3.0.1" - checksum: 10c0/d108a7498b8568caf4a46eea4f1784ab4e0dfb2e3f3938c697dee21443d622d765c958f2b7e2b9f6b9e55e2e2af0584eaa9915d51782b89a841c28e744e7a167 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.2.2 - resolution: "ansi-regex@npm:6.2.2" - checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.0" - checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: "npm:^2.0.1" - checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 - languageName: node - linkType: hard - -"ansi-styles@npm:^5.2.0": - version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" - checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.3 - resolution: "ansi-styles@npm:6.2.3" - checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 - languageName: node - linkType: hard - -"antlr4ts@npm:^0.5.0-alpha.4": - version: 0.5.0-dev - resolution: "antlr4ts@npm:0.5.0-dev" - dependencies: - source-map-support: "npm:^0.5.16" - checksum: 10c0/948d95d02497a5751105cc61e9931d03a9bf0566b33a28ea8f2c72484a47ec4c5148670e1a525bfbc0069b1b86ab820417ec3fad120081211ff55f542fb4a835 - languageName: node - linkType: hard - -"any-base@npm:^1.1.0": - version: 1.1.0 - resolution: "any-base@npm:1.1.0" - checksum: 10c0/1255cccb2c2ead4aa182eca000fd8aa0c1991d91781ff54e26323c132117ed23eb10eef057c0dcf1d919ab30d78e5b11bd8d88940352fc84586ecb961cc76466 - languageName: node - linkType: hard - -"anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac - languageName: node - linkType: hard - -"append-field@npm:^1.0.0": - version: 1.0.0 - resolution: "append-field@npm:1.0.0" - checksum: 10c0/1b5abcc227e5179936a9e4f7e2af4769fa1f00eda85bbaed907f7964b0fd1f7d61f0f332b35337f391389ff13dd5310c2546ba670f8e5a743b23ec85185c73ef - languageName: node - linkType: hard - -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a - languageName: node - linkType: hard - -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: "npm:~1.0.2" - checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e - languageName: node - linkType: hard - -"array-back@npm:^3.0.1, array-back@npm:^3.1.0": - version: 3.1.0 - resolution: "array-back@npm:3.1.0" - checksum: 10c0/bb1fe86aa8b39c21e73c68c7abf8b05ed939b8951a3b17527217f6a2a84e00e4cfa4fdec823081689c5e216709bf1f214a4f5feeee6726eaff83897fa1a7b8ee - languageName: node - linkType: hard - -"array-back@npm:^4.0.1, array-back@npm:^4.0.2": - version: 4.0.2 - resolution: "array-back@npm:4.0.2" - checksum: 10c0/8beb5b4c9535eab2905d4ff7d16c4d90ee5ca080d2b26b1e637434c0fcfadb3585283524aada753bd5d06bb88a5dac9e175c3a236183741d3d795a69b6678c96 - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 - languageName: node - linkType: hard - -"array-timsort@npm:^1.0.3": - version: 1.0.3 - resolution: "array-timsort@npm:1.0.3" - checksum: 10c0/bd3a1707b621947265c89867e67c9102b9b9f4c50f5b3974220112290d8b60d26ce60595edec5deed3325207b759d70b758bed3cd310b5ddadb835657ffb6d12 - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 - languageName: node - linkType: hard - -"array-uniq@npm:1.0.3": - version: 1.0.3 - resolution: "array-uniq@npm:1.0.3" - checksum: 10c0/3acbaf9e6d5faeb1010e2db04ab171b8d265889e46c61762e502979bdc5e55656013726e9a61507de3c82d329a0dc1e8072630a3454b4f2b881cb19ba7fd8aa6 - languageName: node - linkType: hard - -"asap@npm:^2.0.0, asap@npm:~2.0.6": - version: 2.0.6 - resolution: "asap@npm:2.0.6" - checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d - languageName: node - linkType: hard - -"assertion-error@npm:^1.1.0": - version: 1.1.0 - resolution: "assertion-error@npm:1.1.0" - checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b - languageName: node - linkType: hard - -"assertion-error@npm:^2.0.1": - version: 2.0.1 - resolution: "assertion-error@npm:2.0.1" - checksum: 10c0/bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8 - languageName: node - linkType: hard - -"astral-regex@npm:^2.0.0": - version: 2.0.0 - resolution: "astral-regex@npm:2.0.0" - checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 - languageName: node - linkType: hard - -"async-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-function@npm:1.0.0" - checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 - languageName: node - linkType: hard - -"async-generator-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-generator-function@npm:1.0.0" - checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 - languageName: node - linkType: hard - -"async@npm:1.x": - version: 1.5.2 - resolution: "async@npm:1.5.2" - checksum: 10c0/9ee84592c393aad1047d1223004317ecc65a9a3f76101e0f4614a0818eac962e666510353400a3c9ea158df540579a293f486f3578e918c5e90a0f5ed52e8aea - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d - languageName: node - linkType: hard - -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 - languageName: node - linkType: hard - -"await-to-js@npm:^3.0.0": - version: 3.0.0 - resolution: "await-to-js@npm:3.0.0" - checksum: 10c0/1e6184cf4090acf24f6573a475901623ec25df494a3e4b9c27eab9cd4a9f1c0bdb8150c41dbb98e719fd2513dbf32ab8cb88d2ac2c2c4c2fa57024e82128a3db - languageName: node - linkType: hard - -"axios@npm:^1.13.3, axios@npm:^1.5.1, axios@npm:^1.6.0": - version: 1.13.5 - resolution: "axios@npm:1.13.5" - dependencies: - follow-redirects: "npm:^1.15.11" - form-data: "npm:^4.0.5" - proxy-from-env: "npm:^1.1.0" - checksum: 10c0/abf468c34f2d145f3dc7dbc0f1be67e520630624307bda69a41bbe8d386bd672d87b4405c4ee77f9ff54b235ab02f96a9968fb00e75b13ce64706e352a3068fd - languageName: node - linkType: hard - -"babel-jest@npm:30.2.0": - version: 30.2.0 - resolution: "babel-jest@npm:30.2.0" - dependencies: - "@jest/transform": "npm:30.2.0" - "@types/babel__core": "npm:^7.20.5" - babel-plugin-istanbul: "npm:^7.0.1" - babel-preset-jest: "npm:30.2.0" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.11.0 || ^8.0.0-0 - checksum: 10c0/673b8c87e5aec97c4f7372319c005d1e2b018e2f2e973378c7fb0a4f1e111f89872e6f1e49dd50aff6290cd881c865117ade67f2c78a356a8275ab21af47340d - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^7.0.1": - version: 7.0.1 - resolution: "babel-plugin-istanbul@npm:7.0.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-instrument: "npm:^6.0.2" - test-exclude: "npm:^6.0.0" - checksum: 10c0/92975e3df12503b168695463b451468da0c20e117807221652eb8e33a26c160f3b9d4c5c4e65495657420e871c6a54e5e31f539e2e1da37ef2261d7ddd4b1dfd - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:30.2.0": - version: 30.2.0 - resolution: "babel-plugin-jest-hoist@npm:30.2.0" - dependencies: - "@types/babel__core": "npm:^7.20.5" - checksum: 10c0/a2bd862aaa4875127c02e6020d3da67556a8f25981060252668dda65cf9a146202937ae80d2e8612c3c47afe19ac85577647b8cc216faa98567c685525a3f203 - languageName: node - linkType: hard - -"babel-preset-current-node-syntax@npm:^1.2.0": - version: 1.2.0 - resolution: "babel-preset-current-node-syntax@npm:1.2.0" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" - "@babel/plugin-syntax-import-meta": "npm:^7.10.4" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0 || ^8.0.0-0 - checksum: 10c0/94a4f81cddf9b051045d08489e4fff7336292016301664c138cfa3d9ffe3fe2ba10a24ad6ae589fd95af1ac72ba0216e1653555c187e694d7b17be0c002bea10 - languageName: node - linkType: hard - -"babel-preset-jest@npm:30.2.0": - version: 30.2.0 - resolution: "babel-preset-jest@npm:30.2.0" - dependencies: - babel-plugin-jest-hoist: "npm:30.2.0" - babel-preset-current-node-syntax: "npm:^1.2.0" - peerDependencies: - "@babel/core": ^7.11.0 || ^8.0.0-beta.1 - checksum: 10c0/fb2727bad450256146d63b5231b83a7638e73b96c9612296a20afd65fb8c76678ef9bc6fa56e81d1303109258aeb4fccea5b96568744059e47d3c6e3ebc98bd9 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee - languageName: node - linkType: hard - -"balanced-match@npm:^4.0.2": - version: 4.0.3 - resolution: "balanced-match@npm:4.0.3" - checksum: 10c0/4d96945d0815849934145b2cdc0ccb80fb869d909060820fde5f95da0a32040f2142560ef931584fbb6a1607d39d399707e7d2364030a720ac1dc6f78ddaf9dc - languageName: node - linkType: hard - -"base-x@npm:^3.0.2": - version: 3.0.11 - resolution: "base-x@npm:3.0.11" - dependencies: - safe-buffer: "npm:^5.0.1" - checksum: 10c0/4c5b8cd9cef285973b0460934be4fc890eedfd22a8aca527fac3527f041c5d1c912f7b9a6816f19e43e69dc7c29a5deabfa326bd3d6a57ee46af0ad46e3991d5 - languageName: node - linkType: hard - -"base32.js@npm:^0.1.0": - version: 0.1.0 - resolution: "base32.js@npm:0.1.0" - checksum: 10c0/d5f520f8082193850df798a0a64c528eb56b25d507daa94393c39342cc07c41e1e8e3fae71dc318e397b9e28cee800548f582493018d46962b20fce8735efaad - languageName: node - linkType: hard - -"base64-js@npm:^1.3.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf - languageName: node - linkType: hard - -"baseline-browser-mapping@npm:^2.9.0": - version: 2.9.11 - resolution: "baseline-browser-mapping@npm:2.9.11" - bin: - baseline-browser-mapping: dist/cli.js - checksum: 10c0/eba49fcc1b33ab994aeeb73a4848f2670e06a0886dd5b903689ae6f60d47e7f1bea9262dbb2548c48179e858f7eda2b82ddf941ae783b862f4dcc51085a246f2 - languageName: node - linkType: hard - -"bech32@npm:1.1.4": - version: 1.1.4 - resolution: "bech32@npm:1.1.4" - checksum: 10c0/5f62ca47b8df99ace9c0e0d8deb36a919d91bf40066700aaa9920a45f86bb10eb56d537d559416fd8703aa0fb60dddb642e58f049701e7291df678b2033e5ee5 - languageName: node - linkType: hard - -"before-after-hook@npm:^4.0.0": - version: 4.0.0 - resolution: "before-after-hook@npm:4.0.0" - checksum: 10c0/9f8ae8d1b06142bcfb9ef6625226b5e50348bb11210f266660eddcf9734e0db6f9afc4cb48397ee3f5ac0a3728f3ae401cdeea88413f7bed748a71db84657be2 - languageName: node - linkType: hard - -"bignumber.js@npm:^9.3.1": - version: 9.3.1 - resolution: "bignumber.js@npm:9.3.1" - checksum: 10c0/61342ba5fe1c10887f0ecf5be02ff6709271481aff48631f86b4d37d55a99b87ce441cfd54df3d16d10ee07ceab7e272fc0be430c657ffafbbbf7b7d631efb75 - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 - languageName: node - linkType: hard - -"bip39@npm:^3.1.0": - version: 3.1.0 - resolution: "bip39@npm:3.1.0" - dependencies: - "@noble/hashes": "npm:^1.2.0" - checksum: 10c0/68f9673a0d6a851e9635f3af8a85f2a1ecef9066c76d77e6f0d58d274b5bf22a67f429da3997e07c0d2cf153a4d7321f9273e656cac0526f667575ddee28ef71 - languageName: node - linkType: hard - -"bl@npm:^4.1.0": - version: 4.1.0 - resolution: "bl@npm:4.1.0" - dependencies: - buffer: "npm:^5.5.0" - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.4.0" - checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f - languageName: node - linkType: hard - -"blakejs@npm:^1.1.0": - version: 1.2.1 - resolution: "blakejs@npm:1.2.1" - checksum: 10c0/c284557ce55b9c70203f59d381f1b85372ef08ee616a90162174d1291a45d3e5e809fdf9edab6e998740012538515152471dc4f1f9dbfa974ba2b9c1f7b9aad7 - languageName: node - linkType: hard - -"bmp-ts@npm:^1.0.9": - version: 1.0.9 - resolution: "bmp-ts@npm:1.0.9" - checksum: 10c0/4b7f504d41a647e8b0560b77da3ea6c86c5dbb3b256320dde1a2c34dcc776ac3652c7aa12c32c2782f52a3be86da6bafb4178b4af5089163e22f0b4f5837a307 - languageName: node - linkType: hard - -"bn.js@npm:4.11.6": - version: 4.11.6 - resolution: "bn.js@npm:4.11.6" - checksum: 10c0/e6ee7d3f597f60722cc3361071e23ccf71d3387e166de02381f180f22d2fa79f5dbbdf9e4909e81faaf5da01c16ec6857ddff02678339ce085e2058fd0e405db - languageName: node - linkType: hard - -"bn.js@npm:^4.11.9": - version: 4.12.2 - resolution: "bn.js@npm:4.12.2" - checksum: 10c0/09a249faa416a9a1ce68b5f5ec8bbca87fe54e5dd4ef8b1cc8a4969147b80035592bddcb1e9cc814c3ba79e573503d5c5178664b722b509fb36d93620dba9b57 - languageName: node - linkType: hard - -"bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": - version: 5.2.2 - resolution: "bn.js@npm:5.2.2" - checksum: 10c0/cb97827d476aab1a0194df33cd84624952480d92da46e6b4a19c32964aa01553a4a613502396712704da2ec8f831cf98d02e74ca03398404bd78a037ba93f2ab - languageName: node - linkType: hard - -"body-parser@npm:1.20.3": - version: 1.20.3 - resolution: "body-parser@npm:1.20.3" - dependencies: - bytes: "npm:3.1.2" - content-type: "npm:~1.0.5" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - on-finished: "npm:2.4.1" - qs: "npm:6.13.0" - raw-body: "npm:2.5.2" - type-is: "npm:~1.6.18" - unpipe: "npm:1.0.0" - checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310 - languageName: node - linkType: hard - -"boxen@npm:^5.1.2": - version: 5.1.2 - resolution: "boxen@npm:5.1.2" - dependencies: - ansi-align: "npm:^3.0.0" - camelcase: "npm:^6.2.0" - chalk: "npm:^4.1.0" - cli-boxes: "npm:^2.2.1" - string-width: "npm:^4.2.2" - type-fest: "npm:^0.20.2" - widest-line: "npm:^3.1.0" - wrap-ansi: "npm:^7.0.0" - checksum: 10c0/71f31c2eb3dcacd5fce524ae509e0cc90421752e0bfbd0281fd3352871d106c462a0f810c85f2fdb02f3a9fab2d7a84e9718b4999384d651b76104ebe5d2c024 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.12 - resolution: "brace-expansion@npm:1.1.12" - dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.2 - resolution: "brace-expansion@npm:2.0.2" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf - languageName: node - linkType: hard - -"brace-expansion@npm:^5.0.2": - version: 5.0.2 - resolution: "brace-expansion@npm:5.0.2" - dependencies: - balanced-match: "npm:^4.0.2" - checksum: 10c0/60c765e5df6fc0ceca3d5703202ae6779db61f28ea3bf93a04dbf0d50c22ef8e4644e09d0459c827077cd2d09ba8f199a04d92c36419fcf874601a5565013174 - languageName: node - linkType: hard - -"braces@npm:^3.0.3, braces@npm:~3.0.2": - version: 3.0.3 - resolution: "braces@npm:3.0.3" - dependencies: - fill-range: "npm:^7.1.1" - checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 - languageName: node - linkType: hard - -"brorand@npm:^1.1.0": - version: 1.1.0 - resolution: "brorand@npm:1.1.0" - checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 - languageName: node - linkType: hard - -"browser-stdout@npm:^1.3.1": - version: 1.3.1 - resolution: "browser-stdout@npm:1.3.1" - checksum: 10c0/c40e482fd82be872b6ea7b9f7591beafbf6f5ba522fe3dade98ba1573a1c29a11101564993e4eb44e5488be8f44510af072df9a9637c739217eb155ceb639205 - languageName: node - linkType: hard - -"browserify-aes@npm:^1.2.0": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: "npm:^1.0.3" - cipher-base: "npm:^1.0.0" - create-hash: "npm:^1.1.0" - evp_bytestokey: "npm:^1.0.3" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 - languageName: node - linkType: hard - -"browserslist@npm:^4.24.0, browserslist@npm:^4.28.1": - version: 4.28.1 - resolution: "browserslist@npm:4.28.1" - dependencies: - baseline-browser-mapping: "npm:^2.9.0" - caniuse-lite: "npm:^1.0.30001759" - electron-to-chromium: "npm:^1.5.263" - node-releases: "npm:^2.0.27" - update-browserslist-db: "npm:^1.2.0" - bin: - browserslist: cli.js - checksum: 10c0/545a5fa9d7234e3777a7177ec1e9134bb2ba60a69e6b95683f6982b1473aad347c77c1264ccf2ac5dea609a9731fbfbda6b85782bdca70f80f86e28a402504bd - languageName: node - linkType: hard - -"bs-logger@npm:^0.2.6": - version: 0.2.6 - resolution: "bs-logger@npm:0.2.6" - dependencies: - fast-json-stable-stringify: "npm:2.x" - checksum: 10c0/80e89aaaed4b68e3374ce936f2eb097456a0dddbf11f75238dbd53140b1e39259f0d248a5089ed456f1158984f22191c3658d54a713982f676709fbe1a6fa5a0 - languageName: node - linkType: hard - -"bs58@npm:^4.0.0": - version: 4.0.1 - resolution: "bs58@npm:4.0.1" - dependencies: - base-x: "npm:^3.0.2" - checksum: 10c0/613a1b1441e754279a0e3f44d1faeb8c8e838feef81e550efe174ff021dd2e08a4c9ae5805b52dfdde79f97b5c0918c78dd24a0eb726c4a94365f0984a0ffc65 - languageName: node - linkType: hard - -"bs58check@npm:^2.1.2": - version: 2.1.2 - resolution: "bs58check@npm:2.1.2" - dependencies: - bs58: "npm:^4.0.0" - create-hash: "npm:^1.1.0" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/5d33f319f0d7abbe1db786f13f4256c62a076bc8d184965444cb62ca4206b2c92bee58c93bce57150ffbbbe00c48838ac02e6f384e0da8215cac219c0556baa9 - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: "npm:^0.4.0" - checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 - languageName: node - linkType: hard - -"bson@npm:^7.0.0": - version: 7.0.0 - resolution: "bson@npm:7.0.0" - checksum: 10c0/6b12fb0411f4e6f4473da878c0aa615f03439040a349f4115beae336e3922265b25d833c6cc93fcb299017904b32e4ef86e284996f1103addc5918c576b57d9d - languageName: node - linkType: hard - -"buffer-equal-constant-time@npm:^1.0.1": - version: 1.0.1 - resolution: "buffer-equal-constant-time@npm:1.0.1" - checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 - languageName: node - linkType: hard - -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c - languageName: node - linkType: hard - -"buffer@npm:^5.5.0": - version: 5.7.1 - resolution: "buffer@npm:5.7.1" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.1.13" - checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e - languageName: node - linkType: hard - -"buffer@npm:^6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.2.1" - checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 - languageName: node - linkType: hard - -"bullmq@npm:^5.66.2": - version: 5.70.0 - resolution: "bullmq@npm:5.70.0" - dependencies: - cron-parser: "npm:4.9.0" - ioredis: "npm:5.9.2" - msgpackr: "npm:1.11.5" - node-abort-controller: "npm:3.1.1" - semver: "npm:7.7.4" - tslib: "npm:2.8.1" - uuid: "npm:11.1.0" - checksum: 10c0/c5964c254031c4e1c46bfe3c5c258ee999a4cb907e29ed2ae560743b1ff45cf85e1edc065ccb35aa5e2e1999b852e8015a7a64af165eb573dff55d7c680749a8 - languageName: node - linkType: hard - -"busboy@npm:^1.6.0": - version: 1.6.0 - resolution: "busboy@npm:1.6.0" - dependencies: - streamsearch: "npm:^1.1.0" - checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f - languageName: node - linkType: hard - -"bytes@npm:3.1.2, bytes@npm:~3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e - languageName: node - linkType: hard - -"cacache@npm:^20.0.1": - version: 20.0.3 - resolution: "cacache@npm:20.0.3" - dependencies: - "@npmcli/fs": "npm:^5.0.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^13.0.0" - lru-cache: "npm:^11.1.0" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^7.0.2" - ssri: "npm:^13.0.0" - unique-filename: "npm:^5.0.0" - checksum: 10c0/c7da1ca694d20e8f8aedabd21dc11518f809a7d2b59aa76a1fc655db5a9e62379e465c157ddd2afe34b19230808882288effa6911b2de26a088a6d5645123462 - languageName: node - linkType: hard - -"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind-apply-helpers@npm:1.0.2" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.8": - version: 1.0.8 - resolution: "call-bind@npm:1.0.8" - dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.2" - checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 - languageName: node - linkType: hard - -"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": - version: 1.0.4 - resolution: "call-bound@npm:1.0.4" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - get-intrinsic: "npm:^1.3.0" - checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0, callsites@npm:^3.1.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 - languageName: node - linkType: hard - -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 - languageName: node - linkType: hard - -"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001759": - version: 1.0.30001772 - resolution: "caniuse-lite@npm:1.0.30001772" - checksum: 10c0/62a29a47e4b728f7e927301392733c3982af74293ccf523e63eafc06f70b66fe48d51a6b6272e4fe34e57af9dced8ef7a3c611f21b51b999c6bed793bb7c7ede - languageName: node - linkType: hard - -"caseless@npm:^0.12.0, caseless@npm:~0.12.0": - version: 0.12.0 - resolution: "caseless@npm:0.12.0" - checksum: 10c0/ccf64bcb6c0232cdc5b7bd91ddd06e23a4b541f138336d4725233ac538041fb2f29c2e86c3c4a7a61ef990b665348db23a047060b9414c3a6603e9fa61ad4626 - languageName: node - linkType: hard - -"cbor@npm:^8.1.0": - version: 8.1.0 - resolution: "cbor@npm:8.1.0" - dependencies: - nofilter: "npm:^3.1.0" - checksum: 10c0/a836e2e7ea0efb1b9c4e5a4be906c57113d730cc42293a34072e0164ed110bb8ac035dc7dca2e3ebb641bd4b37e00fdbbf09c951aa864b3d4888a6ed8c6243f7 - languageName: node - linkType: hard - -"chai-as-promised@npm:^7.1.1": - version: 7.1.2 - resolution: "chai-as-promised@npm:7.1.2" - dependencies: - check-error: "npm:^1.0.2" - peerDependencies: - chai: ">= 2.1.2 < 6" - checksum: 10c0/ee20ed75296d8cbf828b2f3c9ad64627cee67b1a38b8e906ca59fe788fb6965ddb10f702ae66645ed88f15a905ade4f2d9f8540029e92e2d59b229c9f912273f - languageName: node - linkType: hard - -"chai@npm:^4.3.10": - version: 4.5.0 - resolution: "chai@npm:4.5.0" - dependencies: - assertion-error: "npm:^1.1.0" - check-error: "npm:^1.0.3" - deep-eql: "npm:^4.1.3" - get-func-name: "npm:^2.0.2" - loupe: "npm:^2.3.6" - pathval: "npm:^1.1.1" - type-detect: "npm:^4.1.0" - checksum: 10c0/b8cb596bd1aece1aec659e41a6e479290c7d9bee5b3ad63d2898ad230064e5b47889a3bc367b20100a0853b62e026e2dc514acf25a3c9385f936aa3614d4ab4d - languageName: node - linkType: hard - -"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 - languageName: node - linkType: hard - -"chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: "npm:^3.2.1" - escape-string-regexp: "npm:^1.0.5" - supports-color: "npm:^5.3.0" - checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 - languageName: node - linkType: hard - -"chalk@npm:^5.3.0": - version: 5.6.2 - resolution: "chalk@npm:5.6.2" - checksum: 10c0/99a4b0f0e7991796b1e7e3f52dceb9137cae2a9dfc8fc0784a550dc4c558e15ab32ed70b14b21b52beb2679b4892b41a0aa44249bcb996f01e125d58477c6976 - languageName: node - linkType: hard - -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e - languageName: node - linkType: hard - -"chardet@npm:^0.7.0": - version: 0.7.0 - resolution: "chardet@npm:0.7.0" - checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d - languageName: node - linkType: hard - -"charenc@npm:>= 0.0.1": - version: 0.0.2 - resolution: "charenc@npm:0.0.2" - checksum: 10c0/a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 - languageName: node - linkType: hard - -"check-error@npm:^1.0.2, check-error@npm:^1.0.3": - version: 1.0.3 - resolution: "check-error@npm:1.0.3" - dependencies: - get-func-name: "npm:^2.0.2" - checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 - languageName: node - linkType: hard - -"chokidar@npm:3.6.0, chokidar@npm:^3.5.3": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 - languageName: node - linkType: hard - -"chokidar@npm:^4.0.0": - version: 4.0.3 - resolution: "chokidar@npm:4.0.3" - dependencies: - readdirp: "npm:^4.0.1" - checksum: 10c0/a58b9df05bb452f7d105d9e7229ac82fa873741c0c40ddcc7bb82f8a909fbe3f7814c9ebe9bc9a2bef9b737c0ec6e2d699d179048ef06ad3ec46315df0ebe6ad - languageName: node - linkType: hard - -"chownr@npm:^3.0.0": - version: 3.0.0 - resolution: "chownr@npm:3.0.0" - checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 - languageName: node - linkType: hard - -"chrome-trace-event@npm:^1.0.2": - version: 1.0.4 - resolution: "chrome-trace-event@npm:1.0.4" - checksum: 10c0/3058da7a5f4934b87cf6a90ef5fb68ebc5f7d06f143ed5a4650208e5d7acae47bc03ec844b29fbf5ba7e46e8daa6acecc878f7983a4f4bb7271593da91e61ff5 - languageName: node - linkType: hard - -"ci-info@npm:^2.0.0": - version: 2.0.0 - resolution: "ci-info@npm:2.0.0" - checksum: 10c0/8c5fa3830a2bcee2b53c2e5018226f0141db9ec9f7b1e27a5c57db5512332cde8a0beb769bcbaf0d8775a78afbf2bb841928feca4ea6219638a5b088f9884b46 - languageName: node - linkType: hard - -"ci-info@npm:^4.2.0": - version: 4.3.1 - resolution: "ci-info@npm:4.3.1" - checksum: 10c0/7dd82000f514d76ddfe7775e4cb0d66e5c638f5fa0e2a3be29557e898da0d32ac04f231217d414d07fb968b1fbc6d980ee17ddde0d2c516f23da9cfff608f6c1 - languageName: node - linkType: hard - -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.7 - resolution: "cipher-base@npm:1.0.7" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.2" - checksum: 10c0/53c5046a9d9b60c586479b8f13fde263c3f905e13f11e8e04c7a311ce399c91d9c3ec96642332e0de077d356e1014ee12bba96f74fbaad0de750f49122258836 - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^2.1.0": - version: 2.1.1 - resolution: "cjs-module-lexer@npm:2.1.1" - checksum: 10c0/813697c0ed1533f4a88bd8051d8ae1cb1b21d3ff1c6a5720353817d50c3f3f83bb2af6bd83922aae94b3ef90d64d01a6eb123fa8249f4dc7215e3afd89364f86 - languageName: node - linkType: hard - -"class-transformer@npm:^0.5.1": - version: 0.5.1 - resolution: "class-transformer@npm:0.5.1" - checksum: 10c0/19809914e51c6db42c036166839906420bb60367df14e15f49c45c8c1231bf25ae661ebe94736ee29cc688b77101ef851a8acca299375cc52fc141b64acde18a - languageName: node - linkType: hard - -"class-validator@npm:^0.14.3": - version: 0.14.3 - resolution: "class-validator@npm:0.14.3" - dependencies: - "@types/validator": "npm:^13.15.3" - libphonenumber-js: "npm:^1.11.1" - validator: "npm:^13.15.20" - checksum: 10c0/6d451c359aecb04479b95034b10cca02015d3b6f34480574c618c070e12f3676cb4cdfa76bfa61353356a483ff01326e9ce3f07ef584be6c31806190117f7fa4 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 - languageName: node - linkType: hard - -"cli-boxes@npm:^2.2.1": - version: 2.2.1 - resolution: "cli-boxes@npm:2.2.1" - checksum: 10c0/6111352edbb2f62dbc7bfd58f2d534de507afed7f189f13fa894ce5a48badd94b2aa502fda28f1d7dd5f1eb456e7d4033d09a76660013ef50c7f66e7a034f050 - languageName: node - linkType: hard - -"cli-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-cursor@npm:3.1.0" - dependencies: - restore-cursor: "npm:^3.1.0" - checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 - languageName: node - linkType: hard - -"cli-spinners@npm:^2.5.0": - version: 2.9.2 - resolution: "cli-spinners@npm:2.9.2" - checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 - languageName: node - linkType: hard - -"cli-table3@npm:0.6.5": - version: 0.6.5 - resolution: "cli-table3@npm:0.6.5" - dependencies: - "@colors/colors": "npm:1.5.0" - string-width: "npm:^4.2.0" - dependenciesMeta: - "@colors/colors": - optional: true - checksum: 10c0/d7cc9ed12212ae68241cc7a3133c52b844113b17856e11f4f81308acc3febcea7cc9fd298e70933e294dd642866b29fd5d113c2c098948701d0c35f09455de78 - languageName: node - linkType: hard - -"cli-table3@npm:^0.5.0": - version: 0.5.1 - resolution: "cli-table3@npm:0.5.1" - dependencies: - colors: "npm:^1.1.2" - object-assign: "npm:^4.1.0" - string-width: "npm:^2.1.1" - dependenciesMeta: - colors: - optional: true - checksum: 10c0/659c40ead17539d0665aa9dea85a7650fc161939f9d8bd3842c6cf5da51dc867057d3066fe8c962dafa163da39ce2029357754aee2c8f9513ea7a0810511d1d6 - languageName: node - linkType: hard - -"cli-width@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-width@npm:3.0.0" - checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a - languageName: node - linkType: hard - -"cli-width@npm:^4.1.0": - version: 4.1.0 - resolution: "cli-width@npm:4.1.0" - checksum: 10c0/1fbd56413578f6117abcaf858903ba1f4ad78370a4032f916745fa2c7e390183a9d9029cf837df320b0fdce8137668e522f60a30a5f3d6529ff3872d265a955f - languageName: node - linkType: hard - -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.0" - wrap-ansi: "npm:^7.0.0" - checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 - languageName: node - linkType: hard - -"cliui@npm:^8.0.1": - version: 8.0.1 - resolution: "cliui@npm:8.0.1" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.1" - wrap-ansi: "npm:^7.0.0" - checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 - languageName: node - linkType: hard - -"clone@npm:^1.0.2": - version: 1.0.4 - resolution: "clone@npm:1.0.4" - checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b - languageName: node - linkType: hard - -"cluster-key-slot@npm:^1.1.0": - version: 1.1.2 - resolution: "cluster-key-slot@npm:1.1.2" - checksum: 10c0/d7d39ca28a8786e9e801eeb8c770e3c3236a566625d7299a47bb71113fb2298ce1039596acb82590e598c52dbc9b1f088c8f587803e697cb58e1867a95ff94d3 - languageName: node - linkType: hard - -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.2": - version: 1.0.3 - resolution: "collect-v8-coverage@npm:1.0.3" - checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: "npm:~1.1.4" - checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 - languageName: node - linkType: hard - -"colors@npm:1.4.0, colors@npm:^1.1.2": - version: 1.4.0 - resolution: "colors@npm:1.4.0" - checksum: 10c0/9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: "npm:~1.0.0" - checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 - languageName: node - linkType: hard - -"command-exists@npm:^1.2.8": - version: 1.2.9 - resolution: "command-exists@npm:1.2.9" - checksum: 10c0/75040240062de46cd6cd43e6b3032a8b0494525c89d3962e280dde665103f8cc304a8b313a5aa541b91da2f5a9af75c5959dc3a77893a2726407a5e9a0234c16 - languageName: node - linkType: hard - -"command-line-args@npm:^5.1.1": - version: 5.2.1 - resolution: "command-line-args@npm:5.2.1" - dependencies: - array-back: "npm:^3.1.0" - find-replace: "npm:^3.0.0" - lodash.camelcase: "npm:^4.3.0" - typical: "npm:^4.0.0" - checksum: 10c0/a4f6a23a1e420441bd1e44dee24efd12d2e49af7efe6e21eb32fca4e843ca3d5501ddebad86a4e9d99aa626dd6dcb64c04a43695388be54e3a803dbc326cc89f - languageName: node - linkType: hard - -"command-line-usage@npm:^6.1.0": - version: 6.1.3 - resolution: "command-line-usage@npm:6.1.3" - dependencies: - array-back: "npm:^4.0.2" - chalk: "npm:^2.4.2" - table-layout: "npm:^1.0.2" - typical: "npm:^5.2.0" - checksum: 10c0/23d7577ccb6b6c004e67bb6a9a8cb77282ae7b7507ae92249a9548a39050b7602fef70f124c765000ab23b8f7e0fb7a3352419ab73ea42a2d9ea32f520cdfe9e - languageName: node - linkType: hard - -"commander@npm:4.1.1": - version: 4.1.1 - resolution: "commander@npm:4.1.1" - checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab - languageName: node - linkType: hard - -"commander@npm:^14.0.2": - version: 14.0.3 - resolution: "commander@npm:14.0.3" - checksum: 10c0/755652564bbf56ff2ff083313912b326450d3f8d8c85f4b71416539c9a05c3c67dbd206821ca72635bf6b160e2afdefcb458e86b317827d5cb333b69ce7f1a24 - languageName: node - linkType: hard - -"commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 - languageName: node - linkType: hard - -"commander@npm:^8.1.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 10c0/8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 - languageName: node - linkType: hard - -"comment-json@npm:4.2.5": - version: 4.2.5 - resolution: "comment-json@npm:4.2.5" - dependencies: - array-timsort: "npm:^1.0.3" - core-util-is: "npm:^1.0.3" - esprima: "npm:^4.0.1" - has-own-prop: "npm:^2.0.0" - repeat-string: "npm:^1.6.1" - checksum: 10c0/e22f13f18fcc484ac33c8bc02a3d69c3f9467ae5063fdfb3df7735f83a8d9a2cab6a32b7d4a0c53123413a9577de8e17c8cc88369c433326799558febb34ef9c - languageName: node - linkType: hard - -"component-emitter@npm:^1.3.1": - version: 1.3.1 - resolution: "component-emitter@npm:1.3.1" - checksum: 10c0/e4900b1b790b5e76b8d71b328da41482118c0f3523a516a41be598dc2785a07fd721098d9bf6e22d89b19f4fa4e1025160dc00317ea111633a3e4f75c2b86032 - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f - languageName: node - linkType: hard - -"concat-stream@npm:^1.6.0, concat-stream@npm:^1.6.2": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: "npm:^1.0.0" - inherits: "npm:^2.0.3" - readable-stream: "npm:^2.2.2" - typedarray: "npm:^0.0.6" - checksum: 10c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 - languageName: node - linkType: hard - -"concat-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "concat-stream@npm:2.0.0" - dependencies: - buffer-from: "npm:^1.0.0" - inherits: "npm:^2.0.3" - readable-stream: "npm:^3.0.2" - typedarray: "npm:^0.0.6" - checksum: 10c0/29565dd9198fe1d8cf57f6cc71527dbc6ad67e12e4ac9401feb389c53042b2dceedf47034cbe702dfc4fd8df3ae7e6bfeeebe732cc4fa2674e484c13f04c219a - languageName: node - linkType: hard - -"consola@npm:^2.15.0": - version: 2.15.3 - resolution: "consola@npm:2.15.3" - checksum: 10c0/34a337e6b4a1349ee4d7b4c568484344418da8fdb829d7d71bfefcd724f608f273987633b6eef465e8de510929907a092e13cb7a28a5d3acb3be446fcc79fd5e - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: "npm:5.2.1" - checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb - languageName: node - linkType: hard - -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": - version: 1.0.5 - resolution: "content-type@npm:1.0.5" - checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af - languageName: node - linkType: hard - -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 - languageName: node - linkType: hard - -"cookie@npm:0.7.1": - version: 0.7.1 - resolution: "cookie@npm:0.7.1" - checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde - languageName: node - linkType: hard - -"cookie@npm:^0.4.1": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: 10c0/beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 - languageName: node - linkType: hard - -"cookiejar@npm:^2.1.4": - version: 2.1.4 - resolution: "cookiejar@npm:2.1.4" - checksum: 10c0/2dae55611c6e1678f34d93984cbd4bda58f4fe3e5247cc4993f4a305cd19c913bbaf325086ed952e892108115073a747596453d3dc1c34947f47f731818b8ad1 - languageName: node - linkType: hard - -"core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 - languageName: node - linkType: hard - -"cors@npm:2.8.5": - version: 2.8.5 - resolution: "cors@npm:2.8.5" - dependencies: - object-assign: "npm:^4" - vary: "npm:^1" - checksum: 10c0/373702b7999409922da80de4a61938aabba6929aea5b6fd9096fefb9e8342f626c0ebd7507b0e8b0b311380744cc985f27edebc0a26e0ddb784b54e1085de761 - languageName: node - linkType: hard - -"cosmiconfig@npm:^8.2.0": - version: 8.3.6 - resolution: "cosmiconfig@npm:8.3.6" - dependencies: - import-fresh: "npm:^3.3.0" - js-yaml: "npm:^4.1.0" - parse-json: "npm:^5.2.0" - path-type: "npm:^4.0.0" - peerDependencies: - typescript: ">=4.9.5" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a - languageName: node - linkType: hard - -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: "npm:^1.0.1" - inherits: "npm:^2.0.1" - md5.js: "npm:^1.3.4" - ripemd160: "npm:^2.0.1" - sha.js: "npm:^2.4.0" - checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 - languageName: node - linkType: hard - -"create-hmac@npm:1.1.7, create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" - dependencies: - cipher-base: "npm:^1.0.3" - create-hash: "npm:^1.1.0" - inherits: "npm:^2.0.1" - ripemd160: "npm:^2.0.0" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 - languageName: node - linkType: hard - -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 - languageName: node - linkType: hard - -"cron-parser@npm:4.9.0": - version: 4.9.0 - resolution: "cron-parser@npm:4.9.0" - dependencies: - luxon: "npm:^3.2.1" - checksum: 10c0/348622bdcd1a15695b61fc33af8a60133e5913a85cf99f6344367579e7002896514ba3b0a9d6bb569b02667d6b06836722bf2295fcd101b3de378f71d37bed0b - languageName: node - linkType: hard - -"cron@npm:4.3.5": - version: 4.3.5 - resolution: "cron@npm:4.3.5" - dependencies: - "@types/luxon": "npm:~3.7.0" - luxon: "npm:~3.7.0" - checksum: 10c0/5d05afe6dd2e045709ecbc22a6ea2d5a7913cec32d4bdfff1649b32a2b0e11dafc75b1cc021aedfd1c1a8e4a813acde886ececc078207f19c90521e97a224c55 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": - version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 - languageName: node - linkType: hard - -"crypt@npm:>= 0.0.1": - version: 0.0.2 - resolution: "crypt@npm:0.0.2" - checksum: 10c0/adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 - languageName: node - linkType: hard - -"death@npm:^1.1.0": - version: 1.1.0 - resolution: "death@npm:1.1.0" - checksum: 10c0/4cf8ec37728b99cd18566e605b4c967eedaeeb1533a3003cb88cbc69e6fe1787393b21bfa8c26045222f4e7dd75044eaf6b4c566b67da84ecb81717a7e3ca391 - languageName: node - linkType: hard - -"debug@npm:2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: "npm:2.0.0" - checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7, debug@npm:^4.4.0, debug@npm:^4.4.3": - version: 4.4.3 - resolution: "debug@npm:4.4.3" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 - languageName: node - linkType: hard - -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: 10c0/e06da03fc05333e8cd2778c1487da67ffbea5b84e03ca80449519b8fa61f888714bbc6f459ea963d5641b4aa98832130eb5cd193d90ae9f0a27eee14be8e278d - languageName: node - linkType: hard - -"dedent@npm:^1.6.0": - version: 1.7.1 - resolution: "dedent@npm:1.7.1" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 10c0/ae29ec1c5bd5216c698c9f23acaa5b720260fd4cef3c8b5af887eb5f8c9e6fdd5fed8668767437b4efea35e2991bd798987717633411a1734807c28255769b78 - languageName: node - linkType: hard - -"deep-eql@npm:^4.0.1, deep-eql@npm:^4.1.3": - version: 4.1.4 - resolution: "deep-eql@npm:4.1.4" - dependencies: - type-detect: "npm:^4.0.0" - checksum: 10c0/264e0613493b43552fc908f4ff87b8b445c0e6e075656649600e1b8a17a57ee03e960156fce7177646e4d2ddaf8e5ee616d76bd79929ff593e5c79e4e5e6c517 - languageName: node - linkType: hard - -"deep-extend@npm:~0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1": - version: 4.3.1 - resolution: "deepmerge@npm:4.3.1" - checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 - languageName: node - linkType: hard - -"defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" - dependencies: - clone: "npm:^1.0.2" - checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a - languageName: node - linkType: hard - -"define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 - languageName: node - linkType: hard - -"denque@npm:^2.1.0": - version: 2.1.0 - resolution: "denque@npm:2.1.0" - checksum: 10c0/f9ef81aa0af9c6c614a727cb3bd13c5d7db2af1abf9e6352045b86e85873e629690f6222f4edd49d10e4ccf8f078bbeec0794fafaf61b659c0589d0c511ec363 - languageName: node - linkType: hard - -"depd@npm:2.0.0, depd@npm:~2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c - languageName: node - linkType: hard - -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 - languageName: node - linkType: hard - -"detect-libc@npm:^2.0.1": - version: 2.1.2 - resolution: "detect-libc@npm:2.1.2" - checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 - languageName: node - linkType: hard - -"detect-newline@npm:^3.1.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d - languageName: node - linkType: hard - -"dezalgo@npm:^1.0.4": - version: 1.0.4 - resolution: "dezalgo@npm:1.0.4" - dependencies: - asap: "npm:^2.0.0" - wrappy: "npm:1" - checksum: 10c0/8a870ed42eade9a397e6141fe5c025148a59ed52f1f28b1db5de216b4d57f0af7a257070c3af7ce3d5508c1ce9dd5009028a76f4b2cc9370dc56551d2355fad8 - languageName: node - linkType: hard - -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 - languageName: node - linkType: hard - -"diff@npm:^5.2.0": - version: 5.2.0 - resolution: "diff@npm:5.2.0" - checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 - languageName: node - linkType: hard - -"difflib@npm:^0.2.4": - version: 0.2.4 - resolution: "difflib@npm:0.2.4" - dependencies: - heap: "npm:>= 0.2.0" - checksum: 10c0/4b151f1f6d378b0837ef28f4706d89d05b78f1093253b06c975c621f7ef8b048978588baf9e8f284c64b133d0abb08303b0789519cc91e5180d420cb3bb99c05 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 - languageName: node - linkType: hard - -"dotenv-expand@npm:12.0.1": - version: 12.0.1 - resolution: "dotenv-expand@npm:12.0.1" - dependencies: - dotenv: "npm:^16.4.5" - checksum: 10c0/51996bfa670073d7a441b8fbed26ac991026fba2c05e9a937a898ce7d2a2e7166f7b6ec4eb8879e576defb5d1ad399ed1300db8f803d6977577fea55b4d82dac - languageName: node - linkType: hard - -"dotenv@npm:16.4.7": - version: 16.4.7 - resolution: "dotenv@npm:16.4.7" - checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462 - languageName: node - linkType: hard - -"dotenv@npm:^16.4.5": - version: 16.6.1 - resolution: "dotenv@npm:16.6.1" - checksum: 10c0/15ce56608326ea0d1d9414a5c8ee6dcf0fffc79d2c16422b4ac2268e7e2d76ff5a572d37ffe747c377de12005f14b3cc22361e79fc7f1061cce81f77d2c973dc - languageName: node - linkType: hard - -"dotenv@npm:^17.2.3": - version: 17.3.1 - resolution: "dotenv@npm:17.3.1" - checksum: 10c0/c78e0c2d5a549c751e544cc60e2b95e7cb67e0c551f42e094d161c6b297aa44b630a3c2dcacf5569e529a6c2a6b84e2ab9be8d37b299d425df5a18b81ce4a35f - languageName: node - linkType: hard - -"dunder-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "dunder-proto@npm:1.0.1" - dependencies: - call-bind-apply-helpers: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.2.0" - checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 - languageName: node - linkType: hard - -"ecdsa-sig-formatter@npm:1.0.11": - version: 1.0.11 - resolution: "ecdsa-sig-formatter@npm:1.0.11" - dependencies: - safe-buffer: "npm:^5.0.1" - checksum: 10c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c - languageName: node - linkType: hard - -"ed25519-hd-key@npm:^1.3.0": - version: 1.3.0 - resolution: "ed25519-hd-key@npm:1.3.0" - dependencies: - create-hmac: "npm:1.1.7" - tweetnacl: "npm:1.0.3" - checksum: 10c0/8fb2fa9a9cb90bfbd0261b1f14f2f6367c98c51d0d5b9045df6e95634372493c59fc162dd1c584f569717fc18c23067a570edc3f48506d644c81eb8fde90c1b2 - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.5.263": - version: 1.5.267 - resolution: "electron-to-chromium@npm:1.5.267" - checksum: 10c0/0732bdb891b657f2e43266a3db8cf86fff6cecdcc8d693a92beff214e136cb5c2ee7dc5945ed75fa1db16e16bad0c38695527a020d15f39e79084e0b2e447621 - languageName: node - linkType: hard - -"elliptic@npm:6.6.1, elliptic@npm:^6.5.7": - version: 6.6.1 - resolution: "elliptic@npm:6.6.1" - dependencies: - bn.js: "npm:^4.11.9" - brorand: "npm:^1.1.0" - hash.js: "npm:^1.0.0" - hmac-drbg: "npm:^1.0.1" - inherits: "npm:^2.0.4" - minimalistic-assert: "npm:^1.0.1" - minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10c0/8b24ef782eec8b472053793ea1e91ae6bee41afffdfcb78a81c0a53b191e715cbe1292aa07165958a9bbe675bd0955142560b1a007ffce7d6c765bcaf951a867 - languageName: node - linkType: hard - -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec - languageName: node - linkType: hard - -"encodeurl@npm:~2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.17.4, enhanced-resolve@npm:^5.7.0": - version: 5.18.4 - resolution: "enhanced-resolve@npm:5.18.4" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10c0/8f6d42c8a0787a746c493e724c9de5d091cfe8e3f871f2464e2f78a6c55fa1a3aaba495334f923c8ea3ac23e1472491f79feef6fc0fb46a75169cb447ffbe2dc - languageName: node - linkType: hard - -"enquirer@npm:^2.3.0": - version: 2.4.1 - resolution: "enquirer@npm:2.4.1" - dependencies: - ansi-colors: "npm:^4.1.1" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.4 - resolution: "error-ex@npm:1.3.4" - dependencies: - is-arrayish: "npm:^0.2.1" - checksum: 10c0/b9e34ff4778b8f3b31a8377e1c654456f4c41aeaa3d10a1138c3b7635d8b7b2e03eb2475d46d8ae055c1f180a1063e100bffabf64ea7e7388b37735df5328664 - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": - version: 1.0.1 - resolution: "es-define-property@npm:1.0.1" - checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c - languageName: node - linkType: hard - -"es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.2.1": - version: 1.7.0 - resolution: "es-module-lexer@npm:1.7.0" - checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b - languageName: node - linkType: hard - -"es-module-lexer@npm:^2.0.0": - version: 2.0.0 - resolution: "es-module-lexer@npm:2.0.0" - checksum: 10c0/ae78dbbd43035a4b972c46cfb6877e374ea290adfc62bc2f5a083fea242c0b2baaab25c5886af86be55f092f4a326741cb94334cd3c478c383fdc8a9ec5ff817 - languageName: node - linkType: hard - -"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": - version: 1.1.1 - resolution: "es-object-atoms@npm:1.1.1" - dependencies: - es-errors: "npm:^1.3.0" - checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.1.0": - version: 2.1.0 - resolution: "es-set-tostringtag@npm:2.1.0" - dependencies: - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.2" - checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af - languageName: node - linkType: hard - -"escalade@npm:^3.1.1, escalade@npm:^3.2.0": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 - languageName: node - linkType: hard - -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 - languageName: node - linkType: hard - -"escodegen@npm:1.8.x": - version: 1.8.1 - resolution: "escodegen@npm:1.8.1" - dependencies: - esprima: "npm:^2.7.1" - estraverse: "npm:^1.9.1" - esutils: "npm:^2.0.2" - optionator: "npm:^0.8.1" - source-map: "npm:~0.2.0" - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: ./bin/escodegen.js - esgenerate: ./bin/esgenerate.js - checksum: 10c0/ac19704975bb22e20f04d0da8b4586c11e302fd9fb48bbf945c5b9c0fd01dc85ed25975b6eaba733047e9cc7e57a4bb95c39820843d1f8f55daf88be02398d8f - languageName: node - linkType: hard - -"eslint-config-prettier@npm:^9.0.0": - version: 9.1.2 - resolution: "eslint-config-prettier@npm:9.1.2" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 10c0/d2e9dc913b1677764a4732433d83d258f40820458c65d0274cb9e3eaf6559b39f2136446f310c05abed065a4b3c2e901807ccf583dff76c6227eaebf4132c39a - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:^5.0.0": - version: 5.5.4 - resolution: "eslint-plugin-prettier@npm:5.5.4" - dependencies: - prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.11.7" - peerDependencies: - "@types/eslint": ">=8.0.0" - eslint: ">=8.0.0" - eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" - prettier: ">=3.0.0" - peerDependenciesMeta: - "@types/eslint": - optional: true - eslint-config-prettier: - optional: true - checksum: 10c0/5cc780e0ab002f838ad8057409e86de4ff8281aa2704a50fa8511abff87028060c2e45741bc9cbcbd498712e8d189de8026e70aed9e20e50fe5ba534ee5a8442 - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^4.1.1" - checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a - languageName: node - linkType: hard - -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 - languageName: node - linkType: hard - -"eslint-scope@npm:^8.4.0": - version: 8.4.0 - resolution: "eslint-scope@npm:8.4.0" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-visitor-keys@npm:4.2.1" - checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^5.0.0": - version: 5.0.1 - resolution: "eslint-visitor-keys@npm:5.0.1" - checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678 - languageName: node - linkType: hard - -"eslint@npm:^8.42.0": - version: 8.57.1 - resolution: "eslint@npm:8.57.1" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.1" - "@humanwhocodes/config-array": "npm:^0.13.0" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" - bin: - eslint: bin/eslint.js - checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1 - languageName: node - linkType: hard - -"eslint@npm:^9.39.2": - version: 9.39.2 - resolution: "eslint@npm:9.39.2" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.8.0" - "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.21.1" - "@eslint/config-helpers": "npm:^0.4.2" - "@eslint/core": "npm:^0.17.0" - "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.39.2" - "@eslint/plugin-kit": "npm:^0.4.1" - "@humanfs/node": "npm:^0.16.6" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@humanwhocodes/retry": "npm:^0.4.2" - "@types/estree": "npm:^1.0.6" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.6" - debug: "npm:^4.3.2" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.4.0" - eslint-visitor-keys: "npm:^4.2.1" - espree: "npm:^10.4.0" - esquery: "npm:^1.5.0" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^8.0.0" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - peerDependencies: - jiti: "*" - peerDependenciesMeta: - jiti: - optional: true - bin: - eslint: bin/eslint.js - checksum: 10c0/bb88ca8fd16bb7e1ac3e13804c54d41c583214460c0faa7b3e7c574e69c5600c7122295500fb4b0c06067831111db740931e98da1340329527658e1cf80073d3 - languageName: node - linkType: hard - -"espree@npm:^10.0.1, espree@npm:^10.4.0": - version: 10.4.0 - resolution: "espree@npm:10.4.0" - dependencies: - acorn: "npm:^8.15.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b - languageName: node - linkType: hard - -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: "npm:^8.9.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 - languageName: node - linkType: hard - -"esprima@npm:2.7.x, esprima@npm:^2.7.1": - version: 2.7.3 - resolution: "esprima@npm:2.7.3" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10c0/6e1e99f280eed2ecd521ae28217c5f7c7a03fd0a1ac913bffd4a4ba278caf32cb8d9fc01e41d4b4bc904617282873dea297d60e1f93ea20156f29994c348a04f - languageName: node - linkType: hard - -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 - languageName: node - linkType: hard - -"esquery@npm:^1.4.2, esquery@npm:^1.5.0": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: "npm:^5.2.0" - checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 - languageName: node - linkType: hard - -"estraverse@npm:^1.9.1": - version: 1.9.3 - resolution: "estraverse@npm:1.9.3" - checksum: 10c0/2477bab0c5cdc7534162fbb16b25282c49f434875227937726692ed105762403e9830324cc97c3ea8bf332fe91122ea321f4d4292aaf50db7a90d857e169719e - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 - languageName: node - linkType: hard - -"eth-gas-reporter@npm:^0.2.25": - version: 0.2.27 - resolution: "eth-gas-reporter@npm:0.2.27" - dependencies: - "@solidity-parser/parser": "npm:^0.14.0" - axios: "npm:^1.5.1" - cli-table3: "npm:^0.5.0" - colors: "npm:1.4.0" - ethereum-cryptography: "npm:^1.0.3" - ethers: "npm:^5.7.2" - fs-readdir-recursive: "npm:^1.1.0" - lodash: "npm:^4.17.14" - markdown-table: "npm:^1.1.3" - mocha: "npm:^10.2.0" - req-cwd: "npm:^2.0.0" - sha1: "npm:^1.1.1" - sync-request: "npm:^6.0.0" - peerDependencies: - "@codechecks/client": ^0.1.0 - peerDependenciesMeta: - "@codechecks/client": - optional: true - checksum: 10c0/62a7b8ea41d82731fe91a7741eb2362f08d55e0fece1c12e69effe1684933999961d97d1011037a54063fda20c33a61ef143f04b7ccef36c3002f40975b0415f - languageName: node - linkType: hard - -"ethereum-bloom-filters@npm:^1.0.6": - version: 1.2.0 - resolution: "ethereum-bloom-filters@npm:1.2.0" - dependencies: - "@noble/hashes": "npm:^1.4.0" - checksum: 10c0/7a0ed420cb2e85f621042d78576eb4ddea535a57f3186e314160604b29c37bcd0d3561b03695971e3a96e9c9db402b87de7248a1ac640cbc3dda1b8077cf841f - languageName: node - linkType: hard - -"ethereum-cryptography@npm:^0.1.3": - version: 0.1.3 - resolution: "ethereum-cryptography@npm:0.1.3" - dependencies: - "@types/pbkdf2": "npm:^3.0.0" - "@types/secp256k1": "npm:^4.0.1" - blakejs: "npm:^1.1.0" - browserify-aes: "npm:^1.2.0" - bs58check: "npm:^2.1.2" - create-hash: "npm:^1.2.0" - create-hmac: "npm:^1.1.7" - hash.js: "npm:^1.1.7" - keccak: "npm:^3.0.0" - pbkdf2: "npm:^3.0.17" - randombytes: "npm:^2.1.0" - safe-buffer: "npm:^5.1.2" - scrypt-js: "npm:^3.0.0" - secp256k1: "npm:^4.0.1" - setimmediate: "npm:^1.0.5" - checksum: 10c0/aa36e11fca9d67d67c96e02a98b33bae2e1add20bd11af43feb7f28cdafe0cd3bdbae3bfecc7f2d9ec8f504b10a1c8f7590f5f7fe236560fd8083dd321ad7144 - languageName: node - linkType: hard - -"ethereum-cryptography@npm:^1.0.3": - version: 1.2.0 - resolution: "ethereum-cryptography@npm:1.2.0" - dependencies: - "@noble/hashes": "npm:1.2.0" - "@noble/secp256k1": "npm:1.7.1" - "@scure/bip32": "npm:1.1.5" - "@scure/bip39": "npm:1.1.1" - checksum: 10c0/93e486a4a8b266dc2f274b69252e751345ef47551163371939b01231afb7b519133e2572b5975bb9cb4cc77ac54ccd36002c7c759a72488abeeaf216e4d55b46 - languageName: node - linkType: hard - -"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2, ethereum-cryptography@npm:^2.2.1": - version: 2.2.1 - resolution: "ethereum-cryptography@npm:2.2.1" - dependencies: - "@noble/curves": "npm:1.4.2" - "@noble/hashes": "npm:1.4.0" - "@scure/bip32": "npm:1.4.0" - "@scure/bip39": "npm:1.3.0" - checksum: 10c0/c6c7626d393980577b57f709878b2eb91f270fe56116044b1d7afb70d5c519cddc0c072e8c05e4a335e05342eb64d9c3ab39d52f78bb75f76ad70817da9645ef - languageName: node - linkType: hard - -"ethereumjs-util@npm:^7.1.4": - version: 7.1.5 - resolution: "ethereumjs-util@npm:7.1.5" - dependencies: - "@types/bn.js": "npm:^5.1.0" - bn.js: "npm:^5.1.2" - create-hash: "npm:^1.1.2" - ethereum-cryptography: "npm:^0.1.3" - rlp: "npm:^2.2.4" - checksum: 10c0/8b9487f35ecaa078bf9af6858eba6855fc61c73cc2b90c8c37486fcf94faf4fc1c5cda9758e6769f9ef2658daedaf2c18b366312ac461f8c8a122b392e3041eb - languageName: node - linkType: hard - -"ethers@npm:^5.7.2": - version: 5.8.0 - resolution: "ethers@npm:5.8.0" - dependencies: - "@ethersproject/abi": "npm:5.8.0" - "@ethersproject/abstract-provider": "npm:5.8.0" - "@ethersproject/abstract-signer": "npm:5.8.0" - "@ethersproject/address": "npm:5.8.0" - "@ethersproject/base64": "npm:5.8.0" - "@ethersproject/basex": "npm:5.8.0" - "@ethersproject/bignumber": "npm:5.8.0" - "@ethersproject/bytes": "npm:5.8.0" - "@ethersproject/constants": "npm:5.8.0" - "@ethersproject/contracts": "npm:5.8.0" - "@ethersproject/hash": "npm:5.8.0" - "@ethersproject/hdnode": "npm:5.8.0" - "@ethersproject/json-wallets": "npm:5.8.0" - "@ethersproject/keccak256": "npm:5.8.0" - "@ethersproject/logger": "npm:5.8.0" - "@ethersproject/networks": "npm:5.8.0" - "@ethersproject/pbkdf2": "npm:5.8.0" - "@ethersproject/properties": "npm:5.8.0" - "@ethersproject/providers": "npm:5.8.0" - "@ethersproject/random": "npm:5.8.0" - "@ethersproject/rlp": "npm:5.8.0" - "@ethersproject/sha2": "npm:5.8.0" - "@ethersproject/signing-key": "npm:5.8.0" - "@ethersproject/solidity": "npm:5.8.0" - "@ethersproject/strings": "npm:5.8.0" - "@ethersproject/transactions": "npm:5.8.0" - "@ethersproject/units": "npm:5.8.0" - "@ethersproject/wallet": "npm:5.8.0" - "@ethersproject/web": "npm:5.8.0" - "@ethersproject/wordlists": "npm:5.8.0" - checksum: 10c0/8f187bb6af3736fbafcb613d8fb5be31fe7667a1bae480dd0a4c31b597ed47e0693d552adcababcb05111da39a059fac22e44840ce1671b1cc972de22d6d85d9 - languageName: node - linkType: hard - -"ethers@npm:^6.16.0": - version: 6.16.0 - resolution: "ethers@npm:6.16.0" - dependencies: - "@adraffy/ens-normalize": "npm:1.10.1" - "@noble/curves": "npm:1.2.0" - "@noble/hashes": "npm:1.3.2" - "@types/node": "npm:22.7.5" - aes-js: "npm:4.0.0-beta.5" - tslib: "npm:2.7.0" - ws: "npm:8.17.1" - checksum: 10c0/65c0ff7016b1592b1961c3b68508902b89fc75e1ad025bab3a722df1b5699fd077551875a7285e65b2d0cfea9a85b2459bb84010a0fa4e4494d231848aee3a73 - languageName: node - linkType: hard - -"ethjs-unit@npm:0.1.6": - version: 0.1.6 - resolution: "ethjs-unit@npm:0.1.6" - dependencies: - bn.js: "npm:4.11.6" - number-to-bn: "npm:1.7.0" - checksum: 10c0/0115ddeb4bc932026b9cd259f6eb020a45b38be62e3786526b70e4c5fb0254184bf6e8b7b3f0c8bb80d4d596a73893e386c02221faf203895db7cb9c29b37188 - languageName: node - linkType: hard - -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b - languageName: node - linkType: hard - -"eventemitter3@npm:5.0.1": - version: 5.0.1 - resolution: "eventemitter3@npm:5.0.1" - checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 - languageName: node - linkType: hard - -"events@npm:^3.2.0, events@npm:^3.3.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 - languageName: node - linkType: hard - -"eventsource@npm:^2.0.2": - version: 2.0.2 - resolution: "eventsource@npm:2.0.2" - checksum: 10c0/0b8c70b35e45dd20f22ff64b001be9d530e33b92ca8bdbac9e004d0be00d957ab02ef33c917315f59bf2f20b178c56af85c52029bc8e6cc2d61c31d87d943573 - languageName: node - linkType: hard - -"evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" - dependencies: - md5.js: "npm:^1.3.4" - node-gyp: "npm:latest" - safe-buffer: "npm:^5.1.1" - checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 - languageName: node - linkType: hard - -"execa@npm:^5.1.1": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^6.0.0" - human-signals: "npm:^2.1.0" - is-stream: "npm:^2.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^4.0.1" - onetime: "npm:^5.1.2" - signal-exit: "npm:^3.0.3" - strip-final-newline: "npm:^2.0.0" - checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f - languageName: node - linkType: hard - -"exif-parser@npm:^0.1.12": - version: 0.1.12 - resolution: "exif-parser@npm:0.1.12" - checksum: 10c0/ef1df84edbba50621fcfe19510c8db3ddd9e7fb374459d3f77c9256c24584767c7fb4cf1b15aef46e87a06528d3c48e44de02cecc314656d22a5cf954a0e7192 - languageName: node - linkType: hard - -"exit-x@npm:^0.2.2": - version: 0.2.2 - resolution: "exit-x@npm:0.2.2" - checksum: 10c0/212a7a095ca5540e9581f1ef2d1d6a40df7a6027c8cc96e78ce1d16b86d1a88326d4a0eff8dff2b5ec1e68bb0c1edd5d0dfdde87df1869bf7514d4bc6a5cbd72 - languageName: node - linkType: hard - -"expect@npm:30.2.0, expect@npm:^30.0.0": - version: 30.2.0 - resolution: "expect@npm:30.2.0" - dependencies: - "@jest/expect-utils": "npm:30.2.0" - "@jest/get-type": "npm:30.1.0" - jest-matcher-utils: "npm:30.2.0" - jest-message-util: "npm:30.2.0" - jest-mock: "npm:30.2.0" - jest-util: "npm:30.2.0" - checksum: 10c0/fe440b3a036e2de1a3ede84bc6a699925328056e74324fbd2fdd9ce7b7358d03e515ac8db559c33828bcb0b7887b493dbaaece565e67d88748685850da5d9209 - languageName: node - linkType: hard - -"exponential-backoff@npm:^3.1.1": - version: 3.1.3 - resolution: "exponential-backoff@npm:3.1.3" - checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 - languageName: node - linkType: hard - -"express@npm:4.21.2": - version: 4.21.2 - resolution: "express@npm:4.21.2" - dependencies: - accepts: "npm:~1.3.8" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.3" - content-disposition: "npm:0.5.4" - content-type: "npm:~1.0.4" - cookie: "npm:0.7.1" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - finalhandler: "npm:1.3.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.3" - methods: "npm:~1.1.2" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.12" - proxy-addr: "npm:~2.0.7" - qs: "npm:6.13.0" - range-parser: "npm:~1.2.1" - safe-buffer: "npm:5.2.1" - send: "npm:0.19.0" - serve-static: "npm:1.16.2" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - type-is: "npm:~1.6.18" - utils-merge: "npm:1.0.1" - vary: "npm:~1.1.2" - checksum: 10c0/38168fd0a32756600b56e6214afecf4fc79ec28eca7f7a91c2ab8d50df4f47562ca3f9dee412da7f5cea6b1a1544b33b40f9f8586dbacfbdada0fe90dbb10a1f - languageName: node - linkType: hard - -"external-editor@npm:^3.0.3, external-editor@npm:^3.1.0": - version: 3.1.0 - resolution: "external-editor@npm:3.1.0" - dependencies: - chardet: "npm:^0.7.0" - iconv-lite: "npm:^0.4.24" - tmp: "npm:^0.0.33" - checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 - languageName: node - linkType: hard - -"fast-content-type-parse@npm:^3.0.0": - version: 3.0.0 - resolution: "fast-content-type-parse@npm:3.0.0" - checksum: 10c0/06251880c83b7118af3a5e66e8bcee60d44f48b39396fc60acc2b4630bd5f3e77552b999b5c8e943d45a818854360e5e97164c374ec4b562b4df96a2cdf2e188 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 - languageName: node - linkType: hard - -"fast-diff@npm:^1.1.2": - version: 1.3.0 - resolution: "fast-diff@npm:1.3.0" - checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 - languageName: node - linkType: hard - -"fast-equals@npm:^5.0.1": - version: 5.4.0 - resolution: "fast-equals@npm:5.4.0" - checksum: 10c0/4fdce3a8f814e78af7296ca4ebe82f4765074a6dfe557ee98c18f5d2958c3de59025fbff7556d65f250165ccef424d37f9952ee159400f8ebe5f2edb704ec80e - languageName: node - linkType: hard - -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.9": - version: 3.3.3 - resolution: "fast-glob@npm:3.3.3" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.8" - checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 - languageName: node - linkType: hard - -"fast-levenshtein@npm:^3.0.0": - version: 3.0.0 - resolution: "fast-levenshtein@npm:3.0.0" - dependencies: - fastest-levenshtein: "npm:^1.0.7" - checksum: 10c0/9e147c682bd0ca54474f1cbf906f6c45262fd2e7c051d2caf2cc92729dcf66949dc809f2392de6adbe1c8716fdf012f91ce38c9422aef63b5732fc688eee4046 - languageName: node - linkType: hard - -"fast-safe-stringify@npm:2.1.1, fast-safe-stringify@npm:^2.1.1": - version: 2.1.1 - resolution: "fast-safe-stringify@npm:2.1.1" - checksum: 10c0/d90ec1c963394919828872f21edaa3ad6f1dddd288d2bd4e977027afff09f5db40f94e39536d4646f7e01761d704d72d51dce5af1b93717f3489ef808f5f4e4d - languageName: node - linkType: hard - -"fast-uri@npm:^3.0.1": - version: 3.1.0 - resolution: "fast-uri@npm:3.1.0" - checksum: 10c0/44364adca566f70f40d1e9b772c923138d47efeac2ae9732a872baafd77061f26b097ba2f68f0892885ad177becd065520412b8ffeec34b16c99433c5b9e2de7 - languageName: node - linkType: hard - -"fastest-levenshtein@npm:^1.0.7": - version: 1.0.16 - resolution: "fastest-levenshtein@npm:1.0.16" - checksum: 10c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.20.1 - resolution: "fastq@npm:1.20.1" - dependencies: - reusify: "npm:^1.0.4" - checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e - languageName: node - linkType: hard - -"fb-watchman@npm:^2.0.2": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: "npm:2.1.1" - checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 - languageName: node - linkType: hard - -"fdir@npm:^6.5.0": - version: 6.5.0 - resolution: "fdir@npm:6.5.0" - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f - languageName: node - linkType: hard - -"feaxios@npm:^0.0.23": - version: 0.0.23 - resolution: "feaxios@npm:0.0.23" - dependencies: - is-retry-allowed: "npm:^3.0.0" - checksum: 10c0/e82204eba05ecf9744fc6ae15b7db725888e8ffaf883c17fe84a5118d141d717ea0704d21764d1566c528b574013d5fd2cc1a6601dbc4bdbedfbf662d621f176 - languageName: node - linkType: hard - -"fflate@npm:^0.8.2": - version: 0.8.2 - resolution: "fflate@npm:0.8.2" - checksum: 10c0/03448d630c0a583abea594835a9fdb2aaf7d67787055a761515bf4ed862913cfd693b4c4ffd5c3f3b355a70cf1e19033e9ae5aedcca103188aaff91b8bd6e293 - languageName: node - linkType: hard - -"figures@npm:^3.0.0, figures@npm:^3.2.0": - version: 3.2.0 - resolution: "figures@npm:3.2.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd - languageName: node - linkType: hard - -"file-entry-cache@npm:^8.0.0": - version: 8.0.0 - resolution: "file-entry-cache@npm:8.0.0" - dependencies: - flat-cache: "npm:^4.0.0" - checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 - languageName: node - linkType: hard - -"file-type@npm:20.4.1": - version: 20.4.1 - resolution: "file-type@npm:20.4.1" - dependencies: - "@tokenizer/inflate": "npm:^0.2.6" - strtok3: "npm:^10.2.0" - token-types: "npm:^6.0.0" - uint8array-extras: "npm:^1.4.0" - checksum: 10c0/ae6f65e537205a9a3e07ae574de74ed5210aa78899d6478351a466f97e3f17096b93d74cb97f3fce7488bc8486a21e449ab076ec358ed06984f4a9a8f48a9f55 - languageName: node - linkType: hard - -"file-type@npm:^16.0.0": - version: 16.5.4 - resolution: "file-type@npm:16.5.4" - dependencies: - readable-web-to-node-stream: "npm:^3.0.0" - strtok3: "npm:^6.2.4" - token-types: "npm:^4.1.1" - checksum: 10c0/a6c9ab8bc05bc9c212bec239fb0d5bf59ddc9b3912f00c4ef44622e67ae4e553a1cc8372e9e595e14859035188eb305d05d488fa3c5c2a2ad90bb7745b3004ef - languageName: node - linkType: hard - -"fill-range@npm:^7.1.1": - version: 7.1.1 - resolution: "fill-range@npm:7.1.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 - languageName: node - linkType: hard - -"finalhandler@npm:1.3.1": - version: 1.3.1 - resolution: "finalhandler@npm:1.3.1" - dependencies: - debug: "npm:2.6.9" - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - statuses: "npm:2.0.1" - unpipe: "npm:~1.0.0" - checksum: 10c0/d38035831865a49b5610206a3a9a9aae4e8523cbbcd01175d0480ffbf1278c47f11d89be3ca7f617ae6d94f29cf797546a4619cd84dd109009ef33f12f69019f - languageName: node - linkType: hard - -"find-replace@npm:^3.0.0": - version: 3.0.0 - resolution: "find-replace@npm:3.0.0" - dependencies: - array-back: "npm:^3.0.1" - checksum: 10c0/fcd1bf7960388c8193c2861bcdc760c18ac14edb4bde062a961915d9a25727b2e8aabf0229e90cc09c753fd557e5a3e5ae61e49cadbe727be89a9e8e49ce7668 - languageName: node - linkType: hard - -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: "npm:^5.0.0" - path-exists: "npm:^4.0.0" - checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: "npm:^6.0.0" - path-exists: "npm:^4.0.0" - checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" - dependencies: - flatted: "npm:^3.2.9" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 - languageName: node - linkType: hard - -"flat-cache@npm:^4.0.0": - version: 4.0.1 - resolution: "flat-cache@npm:4.0.1" - dependencies: - flatted: "npm:^3.2.9" - keyv: "npm:^4.5.4" - checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc - languageName: node - linkType: hard - -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe - languageName: node - linkType: hard - -"flatted@npm:^3.2.9": - version: 3.3.3 - resolution: "flatted@npm:3.3.3" - checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.12.1, follow-redirects@npm:^1.15.11": - version: 1.15.11 - resolution: "follow-redirects@npm:1.15.11" - peerDependenciesMeta: - debug: - optional: true - checksum: 10c0/d301f430542520a54058d4aeeb453233c564aaccac835d29d15e050beb33f339ad67d9bddbce01739c5dc46a6716dbe3d9d0d5134b1ca203effa11a7ef092343 - languageName: node - linkType: hard - -"for-each@npm:^0.3.5": - version: 0.3.5 - resolution: "for-each@npm:0.3.5" - dependencies: - is-callable: "npm:^1.2.7" - checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee - languageName: node - linkType: hard - -"foreground-child@npm:^3.1.0": - version: 3.3.1 - resolution: "foreground-child@npm:3.3.1" - dependencies: - cross-spawn: "npm:^7.0.6" - signal-exit: "npm:^4.0.1" - checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 - languageName: node - linkType: hard - -"fork-ts-checker-webpack-plugin@npm:9.0.2": - version: 9.0.2 - resolution: "fork-ts-checker-webpack-plugin@npm:9.0.2" - dependencies: - "@babel/code-frame": "npm:^7.16.7" - chalk: "npm:^4.1.2" - chokidar: "npm:^3.5.3" - cosmiconfig: "npm:^8.2.0" - deepmerge: "npm:^4.2.2" - fs-extra: "npm:^10.0.0" - memfs: "npm:^3.4.1" - minimatch: "npm:^3.0.4" - node-abort-controller: "npm:^3.0.1" - schema-utils: "npm:^3.1.1" - semver: "npm:^7.3.5" - tapable: "npm:^2.2.1" - peerDependencies: - typescript: ">3.6.0" - webpack: ^5.11.0 - checksum: 10c0/37e11dadcc65d297f07882f1661795289f2bf16fa9dea0b90bcc438855d48787378bce4dfcd8e842782f220503438995efbb28cbe560126f6a744ff740e8cc38 - languageName: node - linkType: hard - -"form-data@npm:^2.2.0": - version: 2.5.5 - resolution: "form-data@npm:2.5.5" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - es-set-tostringtag: "npm:^2.1.0" - hasown: "npm:^2.0.2" - mime-types: "npm:^2.1.35" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/7fb70447849fc9bce4d01fe9a626f6587441f85779a2803b67f803e1ab52b0bd78db0a7acd80d944c665f68ca90936c327f1244b730719b638a0219e98b20488 - languageName: node - linkType: hard - -"form-data@npm:^4.0.0, form-data@npm:^4.0.4, form-data@npm:^4.0.5": - version: 4.0.5 - resolution: "form-data@npm:4.0.5" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - es-set-tostringtag: "npm:^2.1.0" - hasown: "npm:^2.0.2" - mime-types: "npm:^2.1.12" - checksum: 10c0/dd6b767ee0bbd6d84039db12a0fa5a2028160ffbfaba1800695713b46ae974a5f6e08b3356c3195137f8530dcd9dfcb5d5ae1eeff53d0db1e5aad863b619ce3b - languageName: node - linkType: hard - -"formidable@npm:^3.5.4": - version: 3.5.4 - resolution: "formidable@npm:3.5.4" - dependencies: - "@paralleldrive/cuid2": "npm:^2.2.2" - dezalgo: "npm:^1.0.4" - once: "npm:^1.4.0" - checksum: 10c0/3a311ce57617eb8f532368e91c0f2bbfb299a0f1a35090e085bd6ca772298f196fbb0b66f0d4b5549d7bf3c5e1844439338d4402b7b6d1fedbe206ad44a931f8 - languageName: node - linkType: hard - -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 - languageName: node - linkType: hard - -"fp-ts@npm:1.19.3": - version: 1.19.3 - resolution: "fp-ts@npm:1.19.3" - checksum: 10c0/a016cfc98ad5e61564ab2d53a5379bbb8254642b66df13ced47e8c1d8d507abf4588d8bb43530198dfe1907211d8bae8f112cab52ba0ac6ab055da9168a6e260 - languageName: node - linkType: hard - -"fp-ts@npm:^1.0.0": - version: 1.19.5 - resolution: "fp-ts@npm:1.19.5" - checksum: 10c0/2a330fa1779561307740c26a7255fdffeb1ca2d0c7448d4dc094b477b772b0c8f7da1dfc88569b6f13f6958169b63b5df7361e514535b46b2e215bbf03a3722d - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a - languageName: node - linkType: hard - -"fs-extra@npm:^10.0.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e - languageName: node - linkType: hard - -"fs-extra@npm:^7.0.0, fs-extra@npm:^7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" - dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10c0/1943bb2150007e3739921b8d13d4109abdc3cc481e53b97b7ea7f77eda1c3c642e27ae49eac3af074e3496ea02fde30f411ef410c760c70a38b92e656e5da784 - languageName: node - linkType: hard - -"fs-extra@npm:^8.1.0": - version: 8.1.0 - resolution: "fs-extra@npm:8.1.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10c0/259f7b814d9e50d686899550c4f9ded85c46c643f7fe19be69504888e007fcbc08f306fae8ec495b8b998635e997c9e3e175ff2eeed230524ef1c1684cc96423 - languageName: node - linkType: hard - -"fs-extra@npm:^9.1.0": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" - dependencies: - at-least-node: "npm:^1.0.0" - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 - languageName: node - linkType: hard - -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 - languageName: node - linkType: hard - -"fs-monkey@npm:^1.0.4": - version: 1.1.0 - resolution: "fs-monkey@npm:1.1.0" - checksum: 10c0/45596fe14753ae8f3fa180724106383de68c8de2836eb24d1647cacf18a6d05335402f3611d32e00234072a60d2f3371024c00cd295593bfbce35b84ff9f6a34 - languageName: node - linkType: hard - -"fs-readdir-recursive@npm:^1.1.0": - version: 1.1.0 - resolution: "fs-readdir-recursive@npm:1.1.0" - checksum: 10c0/7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 - languageName: node - linkType: hard - -"fsevents@npm:^2.3.3, fsevents@npm:~2.3.2": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 - languageName: node - linkType: hard - -"generator-function@npm:^2.0.0": - version: 2.0.1 - resolution: "generator-function@npm:2.0.1" - checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde - languageName: node - linkType: hard - -"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": - version: 2.0.2 - resolution: "get-func-name@npm:2.0.2" - checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": - version: 1.3.1 - resolution: "get-intrinsic@npm:1.3.1" - dependencies: - async-function: "npm:^1.0.0" - async-generator-function: "npm:^1.0.0" - call-bind-apply-helpers: "npm:^1.0.2" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - function-bind: "npm:^1.1.2" - generator-function: "npm:^2.0.0" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - math-intrinsics: "npm:^1.1.0" - checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d - languageName: node - linkType: hard - -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be - languageName: node - linkType: hard - -"get-port@npm:^3.1.0": - version: 3.2.0 - resolution: "get-port@npm:3.2.0" - checksum: 10c0/1b6c3fe89074be3753d9ddf3d67126ea351ab9890537fe53fefebc2912d1d66fdc112451bbc76d33ae5ceb6ca70be2a91017944e3ee8fb0814ac9b295bf2a5b8 - languageName: node - linkType: hard - -"get-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "get-proto@npm:1.0.1" - dependencies: - dunder-proto: "npm:^1.0.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 - languageName: node - linkType: hard - -"ghost-testrpc@npm:^0.0.2": - version: 0.0.2 - resolution: "ghost-testrpc@npm:0.0.2" - dependencies: - chalk: "npm:^2.4.2" - node-emoji: "npm:^1.10.0" - bin: - testrpc-sc: ./index.js - checksum: 10c0/604efc022dfccda3da38ba5726ea52e5156c232814de440193ed7543dd1bb6a3899942df56ca8943c32fec2692abd9b62eb0fe381c7718b0941b3eb301c75b77 - languageName: node - linkType: hard - -"gifwrap@npm:^0.10.1": - version: 0.10.1 - resolution: "gifwrap@npm:0.10.1" - dependencies: - image-q: "npm:^4.0.0" - omggif: "npm:^1.0.10" - checksum: 10c0/dd7327725d47c15bd4b23b69dc149043adff9013e352280a3f86a965eecab7f3e6027ecbb4177b05a6ab3bd1995f447f7adb9fdcb41db4372d8a239859f22492 - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: "npm:^4.0.3" - checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 - languageName: node - linkType: hard - -"glob@npm:10.4.5": - version: 10.4.5 - resolution: "glob@npm:10.4.5" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^3.1.2" - minimatch: "npm:^9.0.4" - minipass: "npm:^7.1.2" - package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^1.11.1" - bin: - glob: dist/esm/bin.mjs - checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e - languageName: node - linkType: hard - -"glob@npm:7.1.7": - version: 7.1.7 - resolution: "glob@npm:7.1.7" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.0.4" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10c0/173245e6f9ccf904309eb7ef4a44a11f3bf68e9e341dff5a28b5db0dd7123b7506daf41497f3437a0710f57198187b758c2351eeaabce4d16935e956920da6a4 - languageName: node - linkType: hard - -"glob@npm:^10.3.10": - version: 10.5.0 - resolution: "glob@npm:10.5.0" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^3.1.2" - minimatch: "npm:^9.0.4" - minipass: "npm:^7.1.2" - package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^1.11.1" - bin: - glob: dist/esm/bin.mjs - checksum: 10c0/100705eddbde6323e7b35e1d1ac28bcb58322095bd8e63a7d0bef1a2cdafe0d0f7922a981b2b48369a4f8c1b077be5c171804534c3509dfe950dde15fbe6d828 - languageName: node - linkType: hard - -"glob@npm:^13.0.0": - version: 13.0.6 - resolution: "glob@npm:13.0.6" - dependencies: - minimatch: "npm:^10.2.2" - minipass: "npm:^7.1.3" - path-scurry: "npm:^2.0.2" - checksum: 10c0/269c236f11a9b50357fe7a8c6aadac667e01deb5242b19c84975628f05f4438d8ee1354bb62c5d6c10f37fd59911b54d7799730633a2786660d8c69f1d18120a - languageName: node - linkType: hard - -"glob@npm:^5.0.15": - version: 5.0.15 - resolution: "glob@npm:5.0.15" - dependencies: - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:2 || 3" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10c0/ed17b34406bedceb334a1df3502774a089ce822db07585ad2a6851d6040531540ce07407d7da5f0e0bded238114ea50302902f025e551499108076e635fcd9b1 - languageName: node - linkType: hard - -"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.1.1" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe - languageName: node - linkType: hard - -"glob@npm:^8.1.0": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^5.0.1" - once: "npm:^1.3.0" - checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f - languageName: node - linkType: hard - -"global-modules@npm:^2.0.0": - version: 2.0.0 - resolution: "global-modules@npm:2.0.0" - dependencies: - global-prefix: "npm:^3.0.0" - checksum: 10c0/43b770fe24aa6028f4b9770ea583a47f39750be15cf6e2578f851e4ccc9e4fa674b8541928c0b09c21461ca0763f0d36e4068cec86c914b07fd6e388e66ba5b9 - languageName: node - linkType: hard - -"global-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "global-prefix@npm:3.0.0" - dependencies: - ini: "npm:^1.3.5" - kind-of: "npm:^6.0.2" - which: "npm:^1.3.1" - checksum: 10c0/510f489fb68d1cc7060f276541709a0ee6d41356ef852de48f7906c648ac223082a1cc8fce86725ca6c0e032bcdc1189ae77b4744a624b29c34a9d0ece498269 - languageName: node - linkType: hard - -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd - languageName: node - linkType: hard - -"globals@npm:^14.0.0": - version: 14.0.0 - resolution: "globals@npm:14.0.0" - checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d - languageName: node - linkType: hard - -"globby@npm:^10.0.1": - version: 10.0.2 - resolution: "globby@npm:10.0.2" - dependencies: - "@types/glob": "npm:^7.1.1" - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.0.3" - glob: "npm:^7.1.3" - ignore: "npm:^5.1.1" - merge2: "npm:^1.2.3" - slash: "npm:^3.0.0" - checksum: 10c0/9c610ad47117b9dfbc5b0c6c2408c3b72f89c1b9f91ee14c4dc794794e35768ee0920e2a403b688cfa749f48617c6ba3f3a52df07677ed73d602d4349b68c810 - languageName: node - linkType: hard - -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 - languageName: node - linkType: hard - -"gopd@npm:^1.0.1, gopd@npm:^1.2.0": - version: 1.2.0 - resolution: "gopd@npm:1.2.0" - checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 - languageName: node - linkType: hard - -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 - languageName: node - linkType: hard - -"handlebars@npm:^4.0.1, handlebars@npm:^4.7.8": - version: 4.7.8 - resolution: "handlebars@npm:4.7.8" - dependencies: - minimist: "npm:^1.2.5" - neo-async: "npm:^2.6.2" - source-map: "npm:^0.6.1" - uglify-js: "npm:^3.1.4" - wordwrap: "npm:^1.0.0" - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 10c0/7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d - languageName: node - linkType: hard - -"hardhat-gas-reporter@npm:^1.0.10": - version: 1.0.10 - resolution: "hardhat-gas-reporter@npm:1.0.10" - dependencies: - array-uniq: "npm:1.0.3" - eth-gas-reporter: "npm:^0.2.25" - sha1: "npm:^1.1.1" - peerDependencies: - hardhat: ^2.0.2 - checksum: 10c0/3711ea331bcbbff4d37057cb3de47a9127011e3ee128c2254a68f3b7f12ab2133965cbcfa3a7ce1bba8461f3b1bda1b175c4814a048c8b06b3ad450001d119d8 - languageName: node - linkType: hard - -"hardhat@npm:^2.22.3": - version: 2.28.6 - resolution: "hardhat@npm:2.28.6" - dependencies: - "@ethereumjs/util": "npm:^9.1.0" - "@ethersproject/abi": "npm:^5.1.2" - "@nomicfoundation/edr": "npm:0.12.0-next.23" - "@nomicfoundation/solidity-analyzer": "npm:^0.1.0" - "@sentry/node": "npm:^5.18.1" - adm-zip: "npm:^0.4.16" - aggregate-error: "npm:^3.0.0" - ansi-escapes: "npm:^4.3.0" - boxen: "npm:^5.1.2" - chokidar: "npm:^4.0.0" - ci-info: "npm:^2.0.0" - debug: "npm:^4.1.1" - enquirer: "npm:^2.3.0" - env-paths: "npm:^2.2.0" - ethereum-cryptography: "npm:^1.0.3" - find-up: "npm:^5.0.0" - fp-ts: "npm:1.19.3" - fs-extra: "npm:^7.0.1" - immutable: "npm:^4.0.0-rc.12" - io-ts: "npm:1.10.4" - json-stream-stringify: "npm:^3.1.4" - keccak: "npm:^3.0.2" - lodash: "npm:^4.17.11" - micro-eth-signer: "npm:^0.14.0" - mnemonist: "npm:^0.38.0" - mocha: "npm:^10.0.0" - p-map: "npm:^4.0.0" - picocolors: "npm:^1.1.0" - raw-body: "npm:^2.4.1" - resolve: "npm:1.17.0" - semver: "npm:^6.3.0" - solc: "npm:0.8.26" - source-map-support: "npm:^0.5.13" - stacktrace-parser: "npm:^0.1.10" - tinyglobby: "npm:^0.2.6" - tsort: "npm:0.0.1" - undici: "npm:^5.14.0" - uuid: "npm:^8.3.2" - ws: "npm:^7.4.6" - peerDependencies: - ts-node: "*" - typescript: "*" - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - bin: - hardhat: internal/cli/bootstrap.js - checksum: 10c0/c2113bec0020c18d2f1c9ed7f0bbcc428196942d8d6e185f98638f744193ab6c0ebc39e684f15391de15809808287c0e7dca69e4ecbfbe926887a132121716ff - languageName: node - linkType: hard - -"has-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-flag@npm:1.0.0" - checksum: 10c0/d0ad4bebbbc005edccfa1e2c0600c89375be5663d23f49a129e0f817187405748b0b515abfc5b3c209c92692e39bb0481c83c0ee4df69433d6ffd0242183100b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 - languageName: node - linkType: hard - -"has-own-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "has-own-prop@npm:2.0.0" - checksum: 10c0/2745497283d80228b5c5fbb8c63ab1029e604bce7db8d4b36255e427b3695b2153dc978b176674d0dd2a23f132809e04d7ef41fefc0ab85870a5caa918c5c0d9 - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "has-symbols@npm:1.1.0" - checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.2": - version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c - languageName: node - linkType: hard - -"hash-base@npm:^3.0.0, hash-base@npm:^3.1.2": - version: 3.1.2 - resolution: "hash-base@npm:3.1.2" - dependencies: - inherits: "npm:^2.0.4" - readable-stream: "npm:^2.3.8" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.1" - checksum: 10c0/f3b7fae1853b31340048dd659f40f5260ca6f3ff53b932f807f4ab701ee09039f6e9dbe1841723ff61e20f3f69d6387a352e4ccc5f997dedb0d375c7d88bc15e - languageName: node - linkType: hard - -"hash.js@npm:1.1.7, hash.js@npm:^1.0.0, hash.js@npm:^1.0.3, hash.js@npm:^1.1.7": - version: 1.1.7 - resolution: "hash.js@npm:1.1.7" - dependencies: - inherits: "npm:^2.0.3" - minimalistic-assert: "npm:^1.0.1" - checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 - languageName: node - linkType: hard - -"hasown@npm:^2.0.2": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" - dependencies: - function-bind: "npm:^1.1.2" - checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 - languageName: node - linkType: hard - -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 - languageName: node - linkType: hard - -"heap@npm:>= 0.2.0": - version: 0.2.7 - resolution: "heap@npm:0.2.7" - checksum: 10c0/341c5d51ae13dc8346c371a8a69c57c972fcb9a3233090d3dd5ba29d483d6b5b4e75492443cbfeacd46608bb30e6680f646ffb7a6205900221735587d07a79b6 - languageName: node - linkType: hard - -"hmac-drbg@npm:^1.0.1": - version: 1.0.1 - resolution: "hmac-drbg@npm:1.0.1" - dependencies: - hash.js: "npm:^1.0.3" - minimalistic-assert: "npm:^1.0.0" - minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d - languageName: node - linkType: hard - -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 - languageName: node - linkType: hard - -"http-basic@npm:^8.1.1": - version: 8.1.3 - resolution: "http-basic@npm:8.1.3" - dependencies: - caseless: "npm:^0.12.0" - concat-stream: "npm:^1.6.2" - http-response-object: "npm:^3.0.1" - parse-cache-control: "npm:^1.0.1" - checksum: 10c0/dbc67b943067db7f43d1dd94539f874e6b78614227491c0a5c0acb9b0490467a4ec97247da21eb198f8968a5dc4089160165cb0103045cadb9b47bb844739752 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": - version: 4.2.0 - resolution: "http-cache-semantics@npm:4.2.0" - checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: "npm:2.0.0" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - toidentifier: "npm:1.0.1" - checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 - languageName: node - linkType: hard - -"http-errors@npm:~2.0.1": - version: 2.0.1 - resolution: "http-errors@npm:2.0.1" - dependencies: - depd: "npm:~2.0.0" - inherits: "npm:~2.0.4" - setprototypeof: "npm:~1.2.0" - statuses: "npm:~2.0.2" - toidentifier: "npm:~1.0.1" - checksum: 10c0/fb38906cef4f5c83952d97661fe14dc156cb59fe54812a42cd448fa57b5c5dfcb38a40a916957737bd6b87aab257c0648d63eb5b6a9ca9f548e105b6072712d4 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": - version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2" - dependencies: - agent-base: "npm:^7.1.0" - debug: "npm:^4.3.4" - checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 - languageName: node - linkType: hard - -"http-response-object@npm:^3.0.1": - version: 3.0.2 - resolution: "http-response-object@npm:3.0.2" - dependencies: - "@types/node": "npm:^10.0.3" - checksum: 10c0/f161db99184087798563cb14c48a67eebe9405668a5ed2341faf85d3079a2c00262431df8e0ccbe274dc6415b6729179f12b09f875d13ad33d83401e4b1ed22e - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: "npm:6" - debug: "npm:4" - checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": - version: 7.0.6 - resolution: "https-proxy-agent@npm:7.0.6" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:4" - checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac - languageName: node - linkType: hard - -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24, iconv-lite@npm:~0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 - languageName: node - linkType: hard - -"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb - languageName: node - linkType: hard - -"ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.3.2 - resolution: "ignore@npm:5.3.2" - checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 - languageName: node - linkType: hard - -"ignore@npm:^7.0.5": - version: 7.0.5 - resolution: "ignore@npm:7.0.5" - checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d - languageName: node - linkType: hard - -"image-q@npm:^4.0.0": - version: 4.0.0 - resolution: "image-q@npm:4.0.0" - dependencies: - "@types/node": "npm:16.9.1" - checksum: 10c0/4463f8f4c0b6897c2213dfccf08c7731edcaa0ff8e2dab81ce3cafd5bb97d4eaa7bdd64f715d616910cf7b87aba718e4326ed4270b5d13bccc49af24bf5ce1a1 - languageName: node - linkType: hard - -"immutable@npm:^4.0.0-rc.12": - version: 4.3.7 - resolution: "immutable@npm:4.3.7" - checksum: 10c0/9b099197081b22f6433003e34929da8ecddbbdc1474cdc8aa3b7669dee4adda349c06143de22def36016d1b6de5322b043eccd7a11db1dad2ca85dad4fff5435 - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": - version: 3.3.1 - resolution: "import-fresh@npm:3.3.1" - dependencies: - parent-module: "npm:^1.0.0" - resolve-from: "npm:^4.0.0" - checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec - languageName: node - linkType: hard - -"import-local@npm:^3.2.0": - version: 3.2.0 - resolution: "import-local@npm:3.2.0" - dependencies: - pkg-dir: "npm:^4.2.0" - resolve-cwd: "npm:^3.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 - languageName: node - linkType: hard - -"ini@npm:^1.3.5": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a - languageName: node - linkType: hard - -"inquirer@npm:8.2.6": - version: 8.2.6 - resolution: "inquirer@npm:8.2.6" - dependencies: - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.1.1" - cli-cursor: "npm:^3.1.0" - cli-width: "npm:^3.0.0" - external-editor: "npm:^3.0.3" - figures: "npm:^3.0.0" - lodash: "npm:^4.17.21" - mute-stream: "npm:0.0.8" - ora: "npm:^5.4.1" - run-async: "npm:^2.4.0" - rxjs: "npm:^7.5.5" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - through: "npm:^2.3.6" - wrap-ansi: "npm:^6.0.1" - checksum: 10c0/eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 - languageName: node - linkType: hard - -"inquirer@npm:9.2.15": - version: 9.2.15 - resolution: "inquirer@npm:9.2.15" - dependencies: - "@ljharb/through": "npm:^2.3.12" - ansi-escapes: "npm:^4.3.2" - chalk: "npm:^5.3.0" - cli-cursor: "npm:^3.1.0" - cli-width: "npm:^4.1.0" - external-editor: "npm:^3.1.0" - figures: "npm:^3.2.0" - lodash: "npm:^4.17.21" - mute-stream: "npm:1.0.0" - ora: "npm:^5.4.1" - run-async: "npm:^3.0.0" - rxjs: "npm:^7.8.1" - string-width: "npm:^4.2.3" - strip-ansi: "npm:^6.0.1" - wrap-ansi: "npm:^6.2.0" - checksum: 10c0/c94d5863d4d05aeb1c6acfd30416037da03ecc1d7a9be099faf746000cd17ea134038b46888f5baed7abc0fa8efc1918029db896048d9dfa93610b7c999a1b71 - languageName: node - linkType: hard - -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 10c0/08c5ad30032edeec638485bc3f6db7d0094d9b3e85e0f950866600af3c52e9fd69715416d29564731c479d9f4d43ff3e4d302a178196bdc0e6837ec147640450 - languageName: node - linkType: hard - -"io-ts@npm:1.10.4": - version: 1.10.4 - resolution: "io-ts@npm:1.10.4" - dependencies: - fp-ts: "npm:^1.0.0" - checksum: 10c0/9370988a7e17fc23c194115808168ccd1ccf7b7ebe92c39c1cc2fd91c1dc641552a5428bb04fe28c01c826fa4f230e856eb4f7d27c774a1400af3fecf2936ab5 - languageName: node - linkType: hard - -"ioredis@npm:5.9.2": - version: 5.9.2 - resolution: "ioredis@npm:5.9.2" - dependencies: - "@ioredis/commands": "npm:1.5.0" - cluster-key-slot: "npm:^1.1.0" - debug: "npm:^4.3.4" - denque: "npm:^2.1.0" - lodash.defaults: "npm:^4.2.0" - lodash.isarguments: "npm:^3.1.0" - redis-errors: "npm:^1.2.0" - redis-parser: "npm:^3.0.0" - standard-as-callback: "npm:^2.1.0" - checksum: 10c0/9732a3adab56c63a0e76bd1a1c891e4201448c44ab31e7e9aee8e83005be07597a4969199593c0d59642fb3fcd64ce00e9a8fad6c92d80e648df20b4b2b184ce - languageName: node - linkType: hard - -"ioredis@npm:^5.8.2": - version: 5.8.2 - resolution: "ioredis@npm:5.8.2" - dependencies: - "@ioredis/commands": "npm:1.4.0" - cluster-key-slot: "npm:^1.1.0" - debug: "npm:^4.3.4" - denque: "npm:^2.1.0" - lodash.defaults: "npm:^4.2.0" - lodash.isarguments: "npm:^3.1.0" - redis-errors: "npm:^1.2.0" - redis-parser: "npm:^3.0.0" - standard-as-callback: "npm:^2.1.0" - checksum: 10c0/305e385f811d49908899e32c2de69616cd059f909afd9e0a53e54f596b1a5835ee3449bfc6a3c49afbc5a2fd27990059e316cc78f449c94024957bd34c826d88 - languageName: node - linkType: hard - -"ip-address@npm:^10.0.1": - version: 10.1.0 - resolution: "ip-address@npm:10.1.0" - checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 - languageName: node - linkType: hard - -"is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f - languageName: node - linkType: hard - -"is-core-module@npm:^2.16.1": - version: 2.16.1 - resolution: "is-core-module@npm:2.16.1" - dependencies: - hasown: "npm:^2.0.2" - checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^2.0.0": - version: 2.0.0 - resolution: "is-fullwidth-code-point@npm:2.0.0" - checksum: 10c0/e58f3e4a601fc0500d8b2677e26e9fe0cd450980e66adb29d85b6addf7969731e38f8e43ed2ec868a09c101a55ac3d8b78902209269f38c5286bc98f5bc1b4d9 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc - languageName: node - linkType: hard - -"is-generator-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a - languageName: node - linkType: hard - -"is-hex-prefixed@npm:1.0.0": - version: 1.0.0 - resolution: "is-hex-prefixed@npm:1.0.0" - checksum: 10c0/767fa481020ae654ab085ca24c63c518705ff36fdfbfc732292dc69092c6f8fdc551f6ce8c5f6ae704b0a19294e6f62be1b4b9859f0e1ac76e3b1b0733599d94 - languageName: node - linkType: hard - -"is-interactive@npm:^1.0.0": - version: 1.0.0 - resolution: "is-interactive@npm:1.0.0" - checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 - languageName: node - linkType: hard - -"is-plain-obj@npm:^2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: 10c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53 - languageName: node - linkType: hard - -"is-retry-allowed@npm:^3.0.0": - version: 3.0.0 - resolution: "is-retry-allowed@npm:3.0.0" - checksum: 10c0/7dc52fb51c7b1767c4710e8cafed9887cfeae515a02195e9a11868fd851e601a4456e638fdc9b184a73c483d305cac46e76583edd16d78c82d7db169d3974fe9 - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.14": - version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15" - dependencies: - which-typed-array: "npm:^1.1.16" - checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 - languageName: node - linkType: hard - -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 - languageName: node - linkType: hard - -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd - languageName: node - linkType: hard - -"isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d - languageName: node - linkType: hard - -"isexe@npm:^4.0.0": - version: 4.0.0 - resolution: "isexe@npm:4.0.0" - checksum: 10c0/5884815115bceac452877659a9c7726382531592f43dc29e5d48b7c4100661aed54018cb90bd36cb2eaeba521092570769167acbb95c18d39afdccbcca06c5ce - languageName: node - linkType: hard - -"isows@npm:1.0.7": - version: 1.0.7 - resolution: "isows@npm:1.0.7" - peerDependencies: - ws: "*" - checksum: 10c0/43c41fe89c7c07258d0be3825f87e12da8ac9023c5b5ae6741ec00b2b8169675c04331ea73ef8c172d37a6747066f4dc93947b17cd369f92828a3b3e741afbda - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^6.0.0, istanbul-lib-instrument@npm:^6.0.2": - version: 6.0.3 - resolution: "istanbul-lib-instrument@npm:6.0.3" - dependencies: - "@babel/core": "npm:^7.23.9" - "@babel/parser": "npm:^7.23.9" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^7.5.4" - checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" - dependencies: - istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^4.0.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 - languageName: node - linkType: hard - -"istanbul-lib-source-maps@npm:^5.0.0": - version: 5.0.6 - resolution: "istanbul-lib-source-maps@npm:5.0.6" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.23" - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.3": - version: 3.2.0 - resolution: "istanbul-reports@npm:3.2.0" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 10c0/d596317cfd9c22e1394f22a8d8ba0303d2074fe2e971887b32d870e4b33f8464b10f8ccbe6847808f7db485f084eba09e6c2ed706b3a978e4b52f07085b8f9bc - languageName: node - linkType: hard - -"iterare@npm:1.2.1": - version: 1.2.1 - resolution: "iterare@npm:1.2.1" - checksum: 10c0/02667d486e3e83ead028ba8484d927498c2ceab7e8c6a69dd881fd02abc4114f00b13abb36b592252fbb578b6e6f99ca1dfc2835408b9158c9a112a9964f453f - languageName: node - linkType: hard - -"jackspeak@npm:^3.1.2": - version: 3.4.3 - resolution: "jackspeak@npm:3.4.3" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 - languageName: node - linkType: hard - -"jest-changed-files@npm:30.2.0": - version: 30.2.0 - resolution: "jest-changed-files@npm:30.2.0" - dependencies: - execa: "npm:^5.1.1" - jest-util: "npm:30.2.0" - p-limit: "npm:^3.1.0" - checksum: 10c0/0ce838f8bffdadcdc19028f4b7a24c04d2f9885ee5c5c1bb4746c205cb96649934090ef6492c3dc45b1be097672b4f8043ad141278bc82f390579fa3ea4c11fe - languageName: node - linkType: hard - -"jest-circus@npm:30.2.0": - version: 30.2.0 - resolution: "jest-circus@npm:30.2.0" - dependencies: - "@jest/environment": "npm:30.2.0" - "@jest/expect": "npm:30.2.0" - "@jest/test-result": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - co: "npm:^4.6.0" - dedent: "npm:^1.6.0" - is-generator-fn: "npm:^2.1.0" - jest-each: "npm:30.2.0" - jest-matcher-utils: "npm:30.2.0" - jest-message-util: "npm:30.2.0" - jest-runtime: "npm:30.2.0" - jest-snapshot: "npm:30.2.0" - jest-util: "npm:30.2.0" - p-limit: "npm:^3.1.0" - pretty-format: "npm:30.2.0" - pure-rand: "npm:^7.0.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.6" - checksum: 10c0/32fc88e13d3e811a9af5ca02d31f7cc742e726a0128df0b023330d6dff6ac29bf981da09937162f7c0705cf327df8d24e46de84860f6817dbc134438315c2967 - languageName: node - linkType: hard - -"jest-cli@npm:30.2.0": - version: 30.2.0 - resolution: "jest-cli@npm:30.2.0" - dependencies: - "@jest/core": "npm:30.2.0" - "@jest/test-result": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - chalk: "npm:^4.1.2" - exit-x: "npm:^0.2.2" - import-local: "npm:^3.2.0" - jest-config: "npm:30.2.0" - jest-util: "npm:30.2.0" - jest-validate: "npm:30.2.0" - yargs: "npm:^17.7.2" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: ./bin/jest.js - checksum: 10c0/b722a98cdf7b0ff1c273dd4efbaf331d683335f1f338a76a24492574e582a4e5a12a9df66e41bf4c92c7cffe0f51b759818ecd42044cd9bbef67d40359240989 - languageName: node - linkType: hard - -"jest-config@npm:30.2.0": - version: 30.2.0 - resolution: "jest-config@npm:30.2.0" - dependencies: - "@babel/core": "npm:^7.27.4" - "@jest/get-type": "npm:30.1.0" - "@jest/pattern": "npm:30.0.1" - "@jest/test-sequencer": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - babel-jest: "npm:30.2.0" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - deepmerge: "npm:^4.3.1" - glob: "npm:^10.3.10" - graceful-fs: "npm:^4.2.11" - jest-circus: "npm:30.2.0" - jest-docblock: "npm:30.2.0" - jest-environment-node: "npm:30.2.0" - jest-regex-util: "npm:30.0.1" - jest-resolve: "npm:30.2.0" - jest-runner: "npm:30.2.0" - jest-util: "npm:30.2.0" - jest-validate: "npm:30.2.0" - micromatch: "npm:^4.0.8" - parse-json: "npm:^5.2.0" - pretty-format: "npm:30.2.0" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - "@types/node": "*" - esbuild-register: ">=3.4.0" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - esbuild-register: - optional: true - ts-node: - optional: true - checksum: 10c0/f02bb747e3382cdbb5a00abd583e9118a0b4f1d9d4cad01b5cc06b7fab9b817419ec183856cd791b2e9167051cad52b3d22ea34319a28c8f3e70a5ce73d05faa - languageName: node - linkType: hard - -"jest-diff@npm:30.2.0": - version: 30.2.0 - resolution: "jest-diff@npm:30.2.0" - dependencies: - "@jest/diff-sequences": "npm:30.0.1" - "@jest/get-type": "npm:30.1.0" - chalk: "npm:^4.1.2" - pretty-format: "npm:30.2.0" - checksum: 10c0/5fac2cd89a10b282c5a68fc6206a95dfff9955ed0b758d24ffb0edcb20fb2f98e1fa5045c5c4205d952712ea864c6a086654f80cdd500cce054a2f5daf5b4419 - languageName: node - linkType: hard - -"jest-docblock@npm:30.2.0": - version: 30.2.0 - resolution: "jest-docblock@npm:30.2.0" - dependencies: - detect-newline: "npm:^3.1.0" - checksum: 10c0/2578366604eef1b36d59ffe1fc52a710995571535d437f83d94ff94756a83f78e699c1ba004c38a34c01859d669fd6c64e865c23c5a7d5bf4837cfca4bef3dda - languageName: node - linkType: hard - -"jest-each@npm:30.2.0": - version: 30.2.0 - resolution: "jest-each@npm:30.2.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - "@jest/types": "npm:30.2.0" - chalk: "npm:^4.1.2" - jest-util: "npm:30.2.0" - pretty-format: "npm:30.2.0" - checksum: 10c0/4fa7e88a2741daaebd58cf49f9add8bd6c68657d2c106a170ebe4d7f86082c9eede2b13924304277a92e02b31b59a3c34949877da077bc27712b57913bb88321 - languageName: node - linkType: hard - -"jest-environment-node@npm:30.2.0": - version: 30.2.0 - resolution: "jest-environment-node@npm:30.2.0" - dependencies: - "@jest/environment": "npm:30.2.0" - "@jest/fake-timers": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - jest-mock: "npm:30.2.0" - jest-util: "npm:30.2.0" - jest-validate: "npm:30.2.0" - checksum: 10c0/866ba2c04ccf003845a8ca1f372081d76923849ae8e06e50cdfed792e41a976b5f953e15f3af17ff51b111b9540cf846f7f582530ca724c2a2abf15d15a99728 - languageName: node - linkType: hard - -"jest-haste-map@npm:30.2.0": - version: 30.2.0 - resolution: "jest-haste-map@npm:30.2.0" - dependencies: - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - anymatch: "npm:^3.1.3" - fb-watchman: "npm:^2.0.2" - fsevents: "npm:^2.3.3" - graceful-fs: "npm:^4.2.11" - jest-regex-util: "npm:30.0.1" - jest-util: "npm:30.2.0" - jest-worker: "npm:30.2.0" - micromatch: "npm:^4.0.8" - walker: "npm:^1.0.8" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/61b4ad5a59b4dfadac2f903f3d723d9017aada268c49b9222ec1e15c4892fd4c36af59b65f37f026d747d829672ab9679509fea5d4248d07a93b892963e1bb4e - languageName: node - linkType: hard - -"jest-leak-detector@npm:30.2.0": - version: 30.2.0 - resolution: "jest-leak-detector@npm:30.2.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - pretty-format: "npm:30.2.0" - checksum: 10c0/68e2822aabe302983b65a08b19719a2444259af8a23ff20a6e2b6ce7759f55730f51c7cf16c65cb6be930c80a6cc70a4820239c84e8f333c9670a8e3a4a21801 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:30.2.0": - version: 30.2.0 - resolution: "jest-matcher-utils@npm:30.2.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - chalk: "npm:^4.1.2" - jest-diff: "npm:30.2.0" - pretty-format: "npm:30.2.0" - checksum: 10c0/f221c8afa04cee693a2be735482c5db4ec6f845f8ca3a04cb419be34c6257f4531dab89c836251f31d1859318c38997e8e9f34bf7b4cdcc8c7be8ae6e2ecb9f2 - languageName: node - linkType: hard - -"jest-message-util@npm:30.2.0": - version: 30.2.0 - resolution: "jest-message-util@npm:30.2.0" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@jest/types": "npm:30.2.0" - "@types/stack-utils": "npm:^2.0.3" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - micromatch: "npm:^4.0.8" - pretty-format: "npm:30.2.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.6" - checksum: 10c0/9c4aae95f9e73a754e5ecababa06e5c00cf549ff1651bbbf9aadc671ee57e688b01606ef0e9932d9dfe3d4b8f4511b6e8d01e131a49d2f82761c820ab93ae519 - languageName: node - linkType: hard - -"jest-mock-extended@npm:^4.0.0": - version: 4.0.0 - resolution: "jest-mock-extended@npm:4.0.0" - dependencies: - ts-essentials: "npm:^10.0.2" - peerDependencies: - "@jest/globals": ^28.0.0 || ^29.0.0 || ^30.0.0 - jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 || ^30.0.0 - typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 - checksum: 10c0/ba51e8e49dba995a54bd9c45aa4d27e6b64a6199289c92292a286117d3f8a733fe480fc56b6d356505696fc79af193625892f5022ea69243525e706515a93249 - languageName: node - linkType: hard - -"jest-mock@npm:30.2.0": - version: 30.2.0 - resolution: "jest-mock@npm:30.2.0" - dependencies: - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - jest-util: "npm:30.2.0" - checksum: 10c0/dfc8eb87f4075242f1b31d9dcac606f945c4f6a245d2bb67273738d266bea6345e10de3afa675076d545361bc96b754f764cffb0ccc2e99767484bece981b2f8 - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.3": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac - languageName: node - linkType: hard - -"jest-regex-util@npm:30.0.1": - version: 30.0.1 - resolution: "jest-regex-util@npm:30.0.1" - checksum: 10c0/f30c70524ebde2d1012afe5ffa5691d5d00f7d5ba9e43d588f6460ac6fe96f9e620f2f9b36a02d0d3e7e77bc8efb8b3450ae3b80ac53c8be5099e01bf54f6728 - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:30.2.0": - version: 30.2.0 - resolution: "jest-resolve-dependencies@npm:30.2.0" - dependencies: - jest-regex-util: "npm:30.0.1" - jest-snapshot: "npm:30.2.0" - checksum: 10c0/f98f2187b490f402dd9ed6b15b5d324b1220d250a5768d46b1f1582cef05b830311351532a7d19f1868a2ce0049856ae6c26587f3869995cae7850739088b879 - languageName: node - linkType: hard - -"jest-resolve@npm:30.2.0": - version: 30.2.0 - resolution: "jest-resolve@npm:30.2.0" - dependencies: - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.2.0" - jest-pnp-resolver: "npm:^1.2.3" - jest-util: "npm:30.2.0" - jest-validate: "npm:30.2.0" - slash: "npm:^3.0.0" - unrs-resolver: "npm:^1.7.11" - checksum: 10c0/149576b81609a79889d08298a95d52920839f796d24f8701beacaf998a4916df205acf86b64d0bc294172a821b88d144facf44ae5a4cb3cfaa03fa06a3fc666d - languageName: node - linkType: hard - -"jest-runner@npm:30.2.0": - version: 30.2.0 - resolution: "jest-runner@npm:30.2.0" - dependencies: - "@jest/console": "npm:30.2.0" - "@jest/environment": "npm:30.2.0" - "@jest/test-result": "npm:30.2.0" - "@jest/transform": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - emittery: "npm:^0.13.1" - exit-x: "npm:^0.2.2" - graceful-fs: "npm:^4.2.11" - jest-docblock: "npm:30.2.0" - jest-environment-node: "npm:30.2.0" - jest-haste-map: "npm:30.2.0" - jest-leak-detector: "npm:30.2.0" - jest-message-util: "npm:30.2.0" - jest-resolve: "npm:30.2.0" - jest-runtime: "npm:30.2.0" - jest-util: "npm:30.2.0" - jest-watcher: "npm:30.2.0" - jest-worker: "npm:30.2.0" - p-limit: "npm:^3.1.0" - source-map-support: "npm:0.5.13" - checksum: 10c0/68cb5eb993b4a02143fc442c245b17567432709879ad5f859fec635ccdf4ad0ef128c9fc6765c1582b3f5136b36cad5c5dd173926081bfc527d490b27406383e - languageName: node - linkType: hard - -"jest-runtime@npm:30.2.0": - version: 30.2.0 - resolution: "jest-runtime@npm:30.2.0" - dependencies: - "@jest/environment": "npm:30.2.0" - "@jest/fake-timers": "npm:30.2.0" - "@jest/globals": "npm:30.2.0" - "@jest/source-map": "npm:30.0.1" - "@jest/test-result": "npm:30.2.0" - "@jest/transform": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - cjs-module-lexer: "npm:^2.1.0" - collect-v8-coverage: "npm:^1.0.2" - glob: "npm:^10.3.10" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.2.0" - jest-message-util: "npm:30.2.0" - jest-mock: "npm:30.2.0" - jest-regex-util: "npm:30.0.1" - jest-resolve: "npm:30.2.0" - jest-snapshot: "npm:30.2.0" - jest-util: "npm:30.2.0" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 10c0/d77b7eb75485f2b4913f635aeffa8e3e1b9baafb7a7f901f3c212195beb31f519e4b03358b5e454caee5cc94a2b9952c962fa7e5b0ff2ed06009a661924fd23e - languageName: node - linkType: hard - -"jest-snapshot@npm:30.2.0": - version: 30.2.0 - resolution: "jest-snapshot@npm:30.2.0" - dependencies: - "@babel/core": "npm:^7.27.4" - "@babel/generator": "npm:^7.27.5" - "@babel/plugin-syntax-jsx": "npm:^7.27.1" - "@babel/plugin-syntax-typescript": "npm:^7.27.1" - "@babel/types": "npm:^7.27.3" - "@jest/expect-utils": "npm:30.2.0" - "@jest/get-type": "npm:30.1.0" - "@jest/snapshot-utils": "npm:30.2.0" - "@jest/transform": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - babel-preset-current-node-syntax: "npm:^1.2.0" - chalk: "npm:^4.1.2" - expect: "npm:30.2.0" - graceful-fs: "npm:^4.2.11" - jest-diff: "npm:30.2.0" - jest-matcher-utils: "npm:30.2.0" - jest-message-util: "npm:30.2.0" - jest-util: "npm:30.2.0" - pretty-format: "npm:30.2.0" - semver: "npm:^7.7.2" - synckit: "npm:^0.11.8" - checksum: 10c0/961b13a3c9dcf8c533fe2ab8375bcdf441bd8680a7a7878245d8d8a4697432d806f7817cfaa061904e0c6cc939a38f1fe9f5af868b86328e77833a58822b3b63 - languageName: node - linkType: hard - -"jest-util@npm:30.2.0, jest-util@npm:^30.2.0": - version: 30.2.0 - resolution: "jest-util@npm:30.2.0" - dependencies: - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - graceful-fs: "npm:^4.2.11" - picomatch: "npm:^4.0.2" - checksum: 10c0/896d663554b35258a87ec1a0a0fdd8741fdf4f3239d09fc52fdd88fa5c411a5ece7903bbbbd7d5194743fcb69f62afc3287e90f57736a91e7df95ad421937936 - languageName: node - linkType: hard - -"jest-validate@npm:30.2.0": - version: 30.2.0 - resolution: "jest-validate@npm:30.2.0" - dependencies: - "@jest/get-type": "npm:30.1.0" - "@jest/types": "npm:30.2.0" - camelcase: "npm:^6.3.0" - chalk: "npm:^4.1.2" - leven: "npm:^3.1.0" - pretty-format: "npm:30.2.0" - checksum: 10c0/56566643d79ca07f021fa14cebb62c423ae405757cb8d742113ff0070f0761b80c77f665fac8d89622faaab71fc5452e1471939028187a88c8445303d7976255 - languageName: node - linkType: hard - -"jest-watcher@npm:30.2.0": - version: 30.2.0 - resolution: "jest-watcher@npm:30.2.0" - dependencies: - "@jest/test-result": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.3.2" - chalk: "npm:^4.1.2" - emittery: "npm:^0.13.1" - jest-util: "npm:30.2.0" - string-length: "npm:^4.0.2" - checksum: 10c0/51587968fabb5b180383d638a04db253b82d9cc3f53fbba06ba7b0544146178d50becc090aca7931e2d4eb9aa1624bb3fbd1a2571484c9391554404e8b5d8fe7 - languageName: node - linkType: hard - -"jest-worker@npm:30.2.0": - version: 30.2.0 - resolution: "jest-worker@npm:30.2.0" - dependencies: - "@types/node": "npm:*" - "@ungap/structured-clone": "npm:^1.3.0" - jest-util: "npm:30.2.0" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.1.1" - checksum: 10c0/1ea47f6c682ba6cdbd50630544236aabccacf1d88335607206c10871a9777a45b0fc6336c8eb6344e32e69dd7681de17b2199b4d4552b00d48aade303627125c - languageName: node - linkType: hard - -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "npm:*" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b - languageName: node - linkType: hard - -"jest@npm:^30.2.0": - version: 30.2.0 - resolution: "jest@npm:30.2.0" - dependencies: - "@jest/core": "npm:30.2.0" - "@jest/types": "npm:30.2.0" - import-local: "npm:^3.2.0" - jest-cli: "npm:30.2.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: ./bin/jest.js - checksum: 10c0/af580c6e265d21870c2c98e31f17f2f5cb5c9e6cf9be26b95eaf4fad4140a01579f3b5844d4264cd8357eb24908e95f983ea84d20b8afef46e62aed3dd9452eb - languageName: node - linkType: hard - -"jimp@npm:^1.6.0": - version: 1.6.0 - resolution: "jimp@npm:1.6.0" - dependencies: - "@jimp/core": "npm:1.6.0" - "@jimp/diff": "npm:1.6.0" - "@jimp/js-bmp": "npm:1.6.0" - "@jimp/js-gif": "npm:1.6.0" - "@jimp/js-jpeg": "npm:1.6.0" - "@jimp/js-png": "npm:1.6.0" - "@jimp/js-tiff": "npm:1.6.0" - "@jimp/plugin-blit": "npm:1.6.0" - "@jimp/plugin-blur": "npm:1.6.0" - "@jimp/plugin-circle": "npm:1.6.0" - "@jimp/plugin-color": "npm:1.6.0" - "@jimp/plugin-contain": "npm:1.6.0" - "@jimp/plugin-cover": "npm:1.6.0" - "@jimp/plugin-crop": "npm:1.6.0" - "@jimp/plugin-displace": "npm:1.6.0" - "@jimp/plugin-dither": "npm:1.6.0" - "@jimp/plugin-fisheye": "npm:1.6.0" - "@jimp/plugin-flip": "npm:1.6.0" - "@jimp/plugin-hash": "npm:1.6.0" - "@jimp/plugin-mask": "npm:1.6.0" - "@jimp/plugin-print": "npm:1.6.0" - "@jimp/plugin-quantize": "npm:1.6.0" - "@jimp/plugin-resize": "npm:1.6.0" - "@jimp/plugin-rotate": "npm:1.6.0" - "@jimp/plugin-threshold": "npm:1.6.0" - "@jimp/types": "npm:1.6.0" - "@jimp/utils": "npm:1.6.0" - checksum: 10c0/15220bc83333773a6fd99cc568adeeb133083dd889b1d2fec546fbc0fb07ba76a1c0af8bb3f470b820f185d1ef43140519215cd4825cd6665a2a50c1745794a4 - languageName: node - linkType: hard - -"jpeg-js@npm:^0.4.4": - version: 0.4.4 - resolution: "jpeg-js@npm:0.4.4" - checksum: 10c0/4d0d5097f8e55d8bbce6f1dc32ffaf3f43f321f6222e4e6490734fdc6d005322e3bd6fb992c2df7f5b587343b1441a1c333281dc3285bc9116e369fd2a2b43a7 - languageName: node - linkType: hard - -"js-sha3@npm:0.8.0, js-sha3@npm:^0.8.0": - version: 0.8.0 - resolution: "js-sha3@npm:0.8.0" - checksum: 10c0/43a21dc7967c871bd2c46cb1c2ae97441a97169f324e509f382d43330d8f75cf2c96dba7c806ab08a425765a9c847efdd4bffbac2d99c3a4f3de6c0218f40533 - languageName: node - linkType: hard - -"js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed - languageName: node - linkType: hard - -"js-yaml@npm:3.x, js-yaml@npm:^3.13.1": - version: 3.14.2 - resolution: "js-yaml@npm:3.14.2" - dependencies: - argparse: "npm:^1.0.7" - esprima: "npm:^4.0.0" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/3261f25912f5dd76605e5993d0a126c2b6c346311885d3c483706cd722efe34f697ea0331f654ce27c00a42b426e524518ec89d65ed02ea47df8ad26dcc8ce69 - languageName: node - linkType: hard - -"js-yaml@npm:4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f - languageName: node - linkType: hard - -"js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1": - version: 4.1.1 - resolution: "js-yaml@npm:4.1.1" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 - languageName: node - linkType: hard - -"jsesc@npm:^3.0.2": - version: 3.1.0 - resolution: "jsesc@npm:3.1.0" - bin: - jsesc: bin/jsesc - checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce - languageName: node - linkType: hard - -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 - languageName: node - linkType: hard - -"json-stream-stringify@npm:^3.1.4, json-stream-stringify@npm:^3.1.6": - version: 3.1.6 - resolution: "json-stream-stringify@npm:3.1.6" - checksum: 10c0/cb45e65143f4634ebb2dc0732410a942eaf86f88a7938b2f6397f4c6b96a7ba936e74d4d17db48c9221f669153996362b2ff50fe8c7fed8a7548646f98ae1f58 - languageName: node - linkType: hard - -"json5@npm:^2.2.2, json5@npm:^2.2.3": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c - languageName: node - linkType: hard - -"jsonc-parser@npm:3.2.1": - version: 3.2.1 - resolution: "jsonc-parser@npm:3.2.1" - checksum: 10c0/ada66dec143d7f9cb0e2d0d29c69e9ce40d20f3a4cb96b0c6efb745025ac7f9ba647d7ac0990d0adfc37a2d2ae084a12009a9c833dbdbeadf648879a99b9df89 - languageName: node - linkType: hard - -"jsonc-parser@npm:3.3.1": - version: 3.3.1 - resolution: "jsonc-parser@npm:3.3.1" - checksum: 10c0/269c3ae0a0e4f907a914bf334306c384aabb9929bd8c99f909275ebd5c2d3bc70b9bcd119ad794f339dec9f24b6a4ee9cd5a8ab2e6435e730ad4075388fc2ab6 - languageName: node - linkType: hard - -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: "npm:^4.1.6" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.2.0 - resolution: "jsonfile@npm:6.2.0" - dependencies: - graceful-fs: "npm:^4.1.6" - universalify: "npm:^2.0.0" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/7f4f43b08d1869ded8a6822213d13ae3b99d651151d77efd1557ced0889c466296a7d9684e397bd126acf5eb2cfcb605808c3e681d0fdccd2fe5a04b47e76c0d - languageName: node - linkType: hard - -"jsonschema@npm:^1.2.4": - version: 1.5.0 - resolution: "jsonschema@npm:1.5.0" - checksum: 10c0/c24ddb8d741f02efc0da3ad9b597a275f6b595062903d3edbfaa535c3f9c4c98613df68da5cb6635ed9aeab30d658986fea61d7662fc5b2b92840d5a1e21235e - languageName: node - linkType: hard - -"jsonwebtoken@npm:9.0.3, jsonwebtoken@npm:^9.0.0": - version: 9.0.3 - resolution: "jsonwebtoken@npm:9.0.3" - dependencies: - jws: "npm:^4.0.1" - lodash.includes: "npm:^4.3.0" - lodash.isboolean: "npm:^3.0.3" - lodash.isinteger: "npm:^4.0.4" - lodash.isnumber: "npm:^3.0.3" - lodash.isplainobject: "npm:^4.0.6" - lodash.isstring: "npm:^4.0.1" - lodash.once: "npm:^4.0.0" - ms: "npm:^2.1.1" - semver: "npm:^7.5.4" - checksum: 10c0/6ca7f1e54886ea3bde7146a5a22b53847c46e25453c7f7307a69818b9a6ad48c390b2e59d5690fcfd03c529b01960060cc4bb0c686991d6edae2285dfd30f4ba - languageName: node - linkType: hard - -"jsqr@npm:^1.4.0": - version: 1.4.0 - resolution: "jsqr@npm:1.4.0" - checksum: 10c0/69fbfe4c866a04c97b377901a166544a583bfc76b838c275efa9af058d64e5612267079b1e96ea7b6434385803571b1c6a97a43c85f4373e8afa4f4034fc916c - languageName: node - linkType: hard - -"jwa@npm:^2.0.1": - version: 2.0.1 - resolution: "jwa@npm:2.0.1" - dependencies: - buffer-equal-constant-time: "npm:^1.0.1" - ecdsa-sig-formatter: "npm:1.0.11" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/ab3ebc6598e10dc11419d4ed675c9ca714a387481466b10e8a6f3f65d8d9c9237e2826f2505280a739cf4cbcf511cb288eeec22b5c9c63286fc5a2e4f97e78cf - languageName: node - linkType: hard - -"jws@npm:^4.0.1": - version: 4.0.1 - resolution: "jws@npm:4.0.1" - dependencies: - jwa: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/6be1ed93023aef570ccc5ea8d162b065840f3ef12f0d1bb3114cade844de7a357d5dc558201d9a65101e70885a6fa56b17462f520e6b0d426195510618a154d0 - languageName: node - linkType: hard - -"kareem@npm:3.2.0": - version: 3.2.0 - resolution: "kareem@npm:3.2.0" - checksum: 10c0/15b840a20c4c3cecda33a794dfcf603f3c124a37ba6d13c084ac92ab8d3680b5366dd0f99589dfc218591cbbdaa390c0544d79fcda85b6c3e4b733755bcb54ef - languageName: node - linkType: hard - -"keccak@npm:^3.0.0, keccak@npm:^3.0.2": - version: 3.0.4 - resolution: "keccak@npm:3.0.4" - dependencies: - node-addon-api: "npm:^2.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.0" - readable-stream: "npm:^3.6.0" - checksum: 10c0/153525c1c1f770beadb8f8897dec2f1d2dcbee11d063fe5f61957a5b236bfd3d2a111ae2727e443aa6a848df5edb98b9ef237c78d56df49087b0ca8a232ca9cd - languageName: node - linkType: hard - -"keyv@npm:^4.5.3, keyv@npm:^4.5.4": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e - languageName: node - linkType: hard - -"kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e - languageName: node - linkType: hard - -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: "npm:~1.1.2" - type-check: "npm:~0.3.2" - checksum: 10c0/e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 - languageName: node - linkType: hard - -"libphonenumber-js@npm:^1.11.1": - version: 1.12.33 - resolution: "libphonenumber-js@npm:1.12.33" - checksum: 10c0/8a2ae4884da48bb28bf3651ff23bb896eb5f12ea0600bb1ca321538458805f5f22b860ff6eaaed42f897212fa9edfa1d62fe1fa0755a44c707cc465a7975c246 - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d - languageName: node - linkType: hard - -"loader-runner@npm:^4.2.0, loader-runner@npm:^4.3.1": - version: 4.3.1 - resolution: "loader-runner@npm:4.3.1" - checksum: 10c0/a523b6329f114e0a98317158e30a7dfce044b731521be5399464010472a93a15ece44757d1eaed1d8845019869c5390218bc1c7c3110f4eeaef5157394486eac - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: "npm:^4.1.0" - checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: "npm:^5.0.0" - checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 - languageName: node - linkType: hard - -"lodash.camelcase@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.camelcase@npm:4.3.0" - checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 - languageName: node - linkType: hard - -"lodash.clonedeep@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.clonedeep@npm:4.5.0" - checksum: 10c0/2caf0e4808f319d761d2939ee0642fa6867a4bbf2cfce43276698828380756b99d4c4fa226d881655e6ac298dd453fe12a5ec8ba49861777759494c534936985 - languageName: node - linkType: hard - -"lodash.defaults@npm:^4.2.0": - version: 4.2.0 - resolution: "lodash.defaults@npm:4.2.0" - checksum: 10c0/d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707 - languageName: node - linkType: hard - -"lodash.includes@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.includes@npm:4.3.0" - checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b - languageName: node - linkType: hard - -"lodash.isarguments@npm:^3.1.0": - version: 3.1.0 - resolution: "lodash.isarguments@npm:3.1.0" - checksum: 10c0/5e8f95ba10975900a3920fb039a3f89a5a79359a1b5565e4e5b4310ed6ebe64011e31d402e34f577eca983a1fc01ff86c926e3cbe602e1ddfc858fdd353e62d8 - languageName: node - linkType: hard - -"lodash.isboolean@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isboolean@npm:3.0.3" - checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 - languageName: node - linkType: hard - -"lodash.isequal@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.isequal@npm:4.5.0" - checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f - languageName: node - linkType: hard - -"lodash.isinteger@npm:^4.0.4": - version: 4.0.4 - resolution: "lodash.isinteger@npm:4.0.4" - checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 - languageName: node - linkType: hard - -"lodash.isnumber@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isnumber@npm:3.0.3" - checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d - languageName: node - linkType: hard - -"lodash.isplainobject@npm:^4.0.6": - version: 4.0.6 - resolution: "lodash.isplainobject@npm:4.0.6" - checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb - languageName: node - linkType: hard - -"lodash.isstring@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.isstring@npm:4.0.1" - checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 - languageName: node - linkType: hard - -"lodash.memoize@npm:^4.1.2": - version: 4.1.2 - resolution: "lodash.memoize@npm:4.1.2" - checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 - languageName: node - linkType: hard - -"lodash.once@npm:^4.0.0": - version: 4.1.1 - resolution: "lodash.once@npm:4.1.1" - checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 - languageName: node - linkType: hard - -"lodash.truncate@npm:^4.4.2": - version: 4.4.2 - resolution: "lodash.truncate@npm:4.4.2" - checksum: 10c0/4e870d54e8a6c86c8687e057cec4069d2e941446ccab7f40b4d9555fa5872d917d0b6aa73bece7765500a3123f1723bcdba9ae881b679ef120bba9e1a0b0ed70 - languageName: node - linkType: hard - -"lodash@npm:4.17.21, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c - languageName: node - linkType: hard - -"log-symbols@npm:^4.1.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: "npm:^4.1.0" - is-unicode-supported: "npm:^0.1.0" - checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 - languageName: node - linkType: hard - -"loupe@npm:^2.3.6": - version: 2.3.7 - resolution: "loupe@npm:2.3.7" - dependencies: - get-func-name: "npm:^2.0.1" - checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 - languageName: node - linkType: hard - -"lru-cache@npm:^10.2.0": - version: 10.4.3 - resolution: "lru-cache@npm:10.4.3" - checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb - languageName: node - linkType: hard - -"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": - version: 11.2.6 - resolution: "lru-cache@npm:11.2.6" - checksum: 10c0/73bbffb298760e71b2bfe8ebc16a311c6a60ceddbba919cfedfd8635c2d125fbfb5a39b71818200e67973b11f8d59c5a9e31d6f90722e340e90393663a66e5cd - languageName: node - linkType: hard - -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" - dependencies: - yallist: "npm:^3.0.2" - checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 - languageName: node - linkType: hard - -"lru_map@npm:^0.3.3": - version: 0.3.3 - resolution: "lru_map@npm:0.3.3" - checksum: 10c0/d861f14a142a4a74ebf8d3ad57f2e768a5b820db4100ae53eed1a64eb6350912332e6ebc87cb7415ad6d0cd8f3ce6d20beab9a5e6042ccb5996ea0067a220448 - languageName: node - linkType: hard - -"luxon@npm:^3.2.1, luxon@npm:~3.7.0": - version: 3.7.2 - resolution: "luxon@npm:3.7.2" - checksum: 10c0/ed8f0f637826c08c343a29dd478b00628be93bba6f068417b1d8896b61cb61c6deacbe1df1e057dbd9298334044afa150f9aaabbeb3181418ac8520acfdc2ae2 - languageName: node - linkType: hard - -"magic-string@npm:0.30.8": - version: 0.30.8 - resolution: "magic-string@npm:0.30.8" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.4.15" - checksum: 10c0/51a1f06f678c082aceddfb5943de9b6bdb88f2ea1385a1c2adf116deb73dfcfa50df6c222901d691b529455222d4d68d0b28be5689ac6f69b3baa3462861f922 - languageName: node - linkType: hard - -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" - dependencies: - semver: "npm:^7.5.3" - checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 - languageName: node - linkType: hard - -"make-error@npm:^1.1.1, make-error@npm:^1.3.6": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - -"make-fetch-happen@npm:^15.0.0": - version: 15.0.3 - resolution: "make-fetch-happen@npm:15.0.3" - dependencies: - "@npmcli/agent": "npm:^4.0.0" - cacache: "npm:^20.0.1" - http-cache-semantics: "npm:^4.1.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^5.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^1.0.0" - proc-log: "npm:^6.0.0" - promise-retry: "npm:^2.0.1" - ssri: "npm:^13.0.0" - checksum: 10c0/525f74915660be60b616bcbd267c4a5b59481b073ba125e45c9c3a041bb1a47a2bd0ae79d028eb6f5f95bf9851a4158423f5068539c3093621abb64027e8e461 - languageName: node - linkType: hard - -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: "npm:1.0.5" - checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c - languageName: node - linkType: hard - -"mantle-rwa-platform@workspace:.": - version: 0.0.0-use.local - resolution: "mantle-rwa-platform@workspace:." - dependencies: - "@eslint/js": "npm:^9.39.2" - "@stellar/stellar-sdk": "npm:^14.5.0" - "@types/jest": "npm:^30.0.0" - "@types/multer": "npm:^2.0.0" - "@types/node": "npm:^25.0.3" - "@typescript-eslint/eslint-plugin": "npm:^8.50.0" - "@typescript-eslint/parser": "npm:^8.50.0" - bip39: "npm:^3.1.0" - dotenv: "npm:^16.4.5" - ed25519-hd-key: "npm:^1.3.0" - eslint: "npm:^9.39.2" - typescript: "npm:^5.9.3" - typescript-eslint: "npm:^8.50.0" - languageName: unknown - linkType: soft - -"markdown-table@npm:^1.1.3": - version: 1.1.3 - resolution: "markdown-table@npm:1.1.3" - checksum: 10c0/aea6eb998900449d938ce46819630492792dd26ac9737f8b506f98baf88c98b7cc1e69c33b72959e0f8578fc0a4b4b44d740daf2db9d8e92ccf3c3522f749fda - languageName: node - linkType: hard - -"math-intrinsics@npm:^1.1.0": - version: 1.1.0 - resolution: "math-intrinsics@npm:1.1.0" - checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f - languageName: node - linkType: hard - -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 - languageName: node - linkType: hard - -"memfs@npm:^3.4.1": - version: 3.5.3 - resolution: "memfs@npm:3.5.3" - dependencies: - fs-monkey: "npm:^1.0.4" - checksum: 10c0/038fc81bce17ea92dde15aaa68fa0fdaf4960c721ce3ffc7c2cb87a259333f5159784ea48b3b72bf9e054254d9d0d0d5209d0fdc3d07d08653a09933b168fbd7 - languageName: node - linkType: hard - -"memory-pager@npm:^1.0.2": - version: 1.5.0 - resolution: "memory-pager@npm:1.5.0" - checksum: 10c0/2596e80c99fee24f05bd8a20cde2ee899012c996f4ec361ac76ed6f009f34149d733ac6f76880106ccd6a66d062ad439357578d383d429df66ba1278f68806e9 - languageName: node - linkType: hard - -"memorystream@npm:^0.3.1": - version: 0.3.1 - resolution: "memorystream@npm:0.3.1" - checksum: 10c0/4bd164657711d9747ff5edb0508b2944414da3464b7fe21ac5c67cf35bba975c4b446a0124bd0f9a8be54cfc18faf92e92bd77563a20328b1ccf2ff04e9f39b9 - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.3": - version: 1.0.3 - resolution: "merge-descriptors@npm:1.0.3" - checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 - languageName: node - linkType: hard - -"merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb - languageName: node - linkType: hard - -"methods@npm:^1.1.2, methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 - languageName: node - linkType: hard - -"micro-eth-signer@npm:^0.14.0": - version: 0.14.0 - resolution: "micro-eth-signer@npm:0.14.0" - dependencies: - "@noble/curves": "npm:~1.8.1" - "@noble/hashes": "npm:~1.7.1" - micro-packed: "npm:~0.7.2" - checksum: 10c0/62c90d54d2b97cb4eaf713c69bc4ceb5903012d0237c26f0966076cfb89c4527de68b395e1bc29e6f237152ce08f7b551fb57b332003518a1331c2c0890fb164 - languageName: node - linkType: hard - -"micro-ftch@npm:^0.3.1": - version: 0.3.1 - resolution: "micro-ftch@npm:0.3.1" - checksum: 10c0/b87d35a52aded13cf2daca8d4eaa84e218722b6f83c75ddd77d74f32cc62e699a672e338e1ee19ceae0de91d19cc24dcc1a7c7d78c81f51042fe55f01b196ed3 - languageName: node - linkType: hard - -"micro-packed@npm:~0.7.2": - version: 0.7.3 - resolution: "micro-packed@npm:0.7.3" - dependencies: - "@scure/base": "npm:~1.2.5" - checksum: 10c0/1fde48a96d8d5606d3298ff36717bf7483d6d59e2d96f50cb88727379127a4d52881f48e7e1ce0d4906b2711b1902fb04d2128576326ce4d07e171ac022a4c2d - languageName: node - linkType: hard - -"micromatch@npm:^4.0.0, micromatch@npm:^4.0.8": - version: 4.0.8 - resolution: "micromatch@npm:4.0.8" - dependencies: - braces: "npm:^3.0.3" - picomatch: "npm:^2.3.1" - checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 - languageName: node - linkType: hard - -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.35, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: "npm:1.52.0" - checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 - languageName: node - linkType: hard - -"mime@npm:2.6.0": - version: 2.6.0 - resolution: "mime@npm:2.6.0" - bin: - mime: cli.js - checksum: 10c0/a7f2589900d9c16e3bdf7672d16a6274df903da958c1643c9c45771f0478f3846dcb1097f31eb9178452570271361e2149310931ec705c037210fc69639c8e6c - languageName: node - linkType: hard - -"mime@npm:3": - version: 3.0.0 - resolution: "mime@npm:3.0.0" - bin: - mime: cli.js - checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 - languageName: node - linkType: hard - -"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd - languageName: node - linkType: hard - -"minimalistic-crypto-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 - languageName: node - linkType: hard - -"minimatch@npm:2 || 3, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 - languageName: node - linkType: hard - -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac - languageName: node - linkType: hard - -"minimatch@npm:^10.2.2": - version: 10.2.2 - resolution: "minimatch@npm:10.2.2" - dependencies: - brace-expansion: "npm:^5.0.2" - checksum: 10c0/098831f2f542cb802e1f249c809008a016e1fef6b3a9eda9cf9ecb2b3d7979083951bd47c0c82fcf34330bd3b36638a493d4fa8e24cce58caf5b481de0f4e238 - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.6": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed - languageName: node - linkType: hard - -"minimist@npm:^1.2.5, minimist@npm:^1.2.6": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 - languageName: node - linkType: hard - -"minipass-collect@npm:^2.0.1": - version: 2.0.1 - resolution: "minipass-collect@npm:2.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e - languageName: node - linkType: hard - -"minipass-fetch@npm:^5.0.0": - version: 5.0.1 - resolution: "minipass-fetch@npm:5.0.1" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^2.0.0" - minizlib: "npm:^3.0.1" - dependenciesMeta: - encoding: - optional: true - checksum: 10c0/50bcf48c9841ebb25e29a2817468595219c72cfffc7c175a1d7327843c8bef9b72cb01778f46df7eca695dfe47ab98e6167af4cb026ddd80f660842919a5193c - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 - languageName: node - linkType: hard - -"minipass-sized@npm:^2.0.0": - version: 2.0.0 - resolution: "minipass-sized@npm:2.0.0" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10c0/f9201696a6f6d68610d04c9c83e3d2e5cb9c026aae1c8cbf7e17f386105cb79c1bb088dbc21bf0b1eb4f3fb5df384fd1e7aa3bf1f33868c416ae8c8a92679db8 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.1.2": - version: 7.1.2 - resolution: "minipass@npm:7.1.2" - checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 - languageName: node - linkType: hard - -"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.3": - version: 7.1.3 - resolution: "minipass@npm:7.1.3" - checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb - languageName: node - linkType: hard - -"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": - version: 3.1.0 - resolution: "minizlib@npm:3.1.0" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec - languageName: node - linkType: hard - -"mkdirp@npm:0.5.x, mkdirp@npm:^0.5.6": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: "npm:^1.2.6" - bin: - mkdirp: bin/cmd.js - checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf - languageName: node - linkType: hard - -"mnemonist@npm:^0.38.0": - version: 0.38.5 - resolution: "mnemonist@npm:0.38.5" - dependencies: - obliterator: "npm:^2.0.0" - checksum: 10c0/a73a2718f88cd12c3b108ecc530619a1b0f2783d479c7f98e7367375102cc3a28811bab384e17eb731553dc8d7ee9d60283d694a9f676af5f306104e75027d4f - languageName: node - linkType: hard - -"mocha@npm:^10.0.0, mocha@npm:^10.2.0": - version: 10.8.2 - resolution: "mocha@npm:10.8.2" - dependencies: - ansi-colors: "npm:^4.1.3" - browser-stdout: "npm:^1.3.1" - chokidar: "npm:^3.5.3" - debug: "npm:^4.3.5" - diff: "npm:^5.2.0" - escape-string-regexp: "npm:^4.0.0" - find-up: "npm:^5.0.0" - glob: "npm:^8.1.0" - he: "npm:^1.2.0" - js-yaml: "npm:^4.1.0" - log-symbols: "npm:^4.1.0" - minimatch: "npm:^5.1.6" - ms: "npm:^2.1.3" - serialize-javascript: "npm:^6.0.2" - strip-json-comments: "npm:^3.1.1" - supports-color: "npm:^8.1.1" - workerpool: "npm:^6.5.1" - yargs: "npm:^16.2.0" - yargs-parser: "npm:^20.2.9" - yargs-unparser: "npm:^2.0.0" - bin: - _mocha: bin/_mocha - mocha: bin/mocha.js - checksum: 10c0/1f786290a32a1c234f66afe2bfcc68aa50fe9c7356506bd39cca267efb0b4714a63a0cb333815578d63785ba2fba058bf576c2512db73997c0cae0d659a88beb - languageName: node - linkType: hard - -"mongodb-connection-string-url@npm:^7.0.0": - version: 7.0.0 - resolution: "mongodb-connection-string-url@npm:7.0.0" - dependencies: - "@types/whatwg-url": "npm:^13.0.0" - whatwg-url: "npm:^14.1.0" - checksum: 10c0/33fe304a0f8e59bf541b2ddef073ddb2ae66d6cb3175c6297c8f844004b1608573e2e61892aa8486f8273634c9cb8a90202d21c289aa1b1f8b8e5cd92711be09 - languageName: node - linkType: hard - -"mongodb@npm:~7.0": - version: 7.0.0 - resolution: "mongodb@npm:7.0.0" - dependencies: - "@mongodb-js/saslprep": "npm:^1.3.0" - bson: "npm:^7.0.0" - mongodb-connection-string-url: "npm:^7.0.0" - peerDependencies: - "@aws-sdk/credential-providers": ^3.806.0 - "@mongodb-js/zstd": ^7.0.0 - gcp-metadata: ^7.0.1 - kerberos: ^7.0.0 - mongodb-client-encryption: ">=7.0.0 <7.1.0" - snappy: ^7.3.2 - socks: ^2.8.6 - peerDependenciesMeta: - "@aws-sdk/credential-providers": - optional: true - "@mongodb-js/zstd": - optional: true - gcp-metadata: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - socks: - optional: true - checksum: 10c0/425258188fd6d0d73c58ce2f16177d53d4280804b52de0e6dfd4ce0bec2c2965625c1765111f800ce8e6f2a28187657e8f42bf7dd6cc9675844e619b0dec18b9 - languageName: node - linkType: hard - -"mongoose@npm:^9.0.2": - version: 9.2.1 - resolution: "mongoose@npm:9.2.1" - dependencies: - kareem: "npm:3.2.0" - mongodb: "npm:~7.0" - mpath: "npm:0.9.0" - mquery: "npm:6.0.0" - ms: "npm:2.1.3" - sift: "npm:17.1.3" - checksum: 10c0/91c72b8a7ad08bda799026bd0141910b83da4fcce536ad5c992ba45732236f1596cf0c8dc064c2da93a4d491578e693b9d49b0d751eb8a8f01255db1a5df7247 - languageName: node - linkType: hard - -"mpath@npm:0.9.0": - version: 0.9.0 - resolution: "mpath@npm:0.9.0" - checksum: 10c0/ac1a77ebbd44567f122fb3026c9647836215d5bb75b54064d1f3d998125644fe7a775b89441b94d4d60f43ad9638a12d830a9e29f36116e93b8cdfd111816e8f - languageName: node - linkType: hard - -"mquery@npm:6.0.0": - version: 6.0.0 - resolution: "mquery@npm:6.0.0" - checksum: 10c0/5b566ad66d5de1d9213827e21ef87905c7e67ac07780a7f09ad3adf76e7537d5810138d3270633d06430e3ee7886205fbc174f3389e730e23ee8530993354b6b - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 - languageName: node - linkType: hard - -"msgpackr-extract@npm:^3.0.2": - version: 3.0.3 - resolution: "msgpackr-extract@npm:3.0.3" - dependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "npm:3.0.3" - "@msgpackr-extract/msgpackr-extract-darwin-x64": "npm:3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm": "npm:3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm64": "npm:3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-x64": "npm:3.0.3" - "@msgpackr-extract/msgpackr-extract-win32-x64": "npm:3.0.3" - node-gyp: "npm:latest" - node-gyp-build-optional-packages: "npm:5.2.2" - dependenciesMeta: - "@msgpackr-extract/msgpackr-extract-darwin-arm64": - optional: true - "@msgpackr-extract/msgpackr-extract-darwin-x64": - optional: true - "@msgpackr-extract/msgpackr-extract-linux-arm": - optional: true - "@msgpackr-extract/msgpackr-extract-linux-arm64": - optional: true - "@msgpackr-extract/msgpackr-extract-linux-x64": - optional: true - "@msgpackr-extract/msgpackr-extract-win32-x64": - optional: true - bin: - download-msgpackr-prebuilds: bin/download-prebuilds.js - checksum: 10c0/e504fd8bf86a29d7527c83776530ee6dc92dcb0273bb3679fd4a85173efead7f0ee32fb82c8410a13c33ef32828c45f81118ffc0fbed5d6842e72299894623b4 - languageName: node - linkType: hard - -"msgpackr@npm:1.11.5": - version: 1.11.5 - resolution: "msgpackr@npm:1.11.5" - dependencies: - msgpackr-extract: "npm:^3.0.2" - dependenciesMeta: - msgpackr-extract: - optional: true - checksum: 10c0/f35ffd218661e8afc52490cde3dbf2656304e7940563c5313aa2f45e31ac5bdce3b58f27e55b785c700085ee76f26fc7afbae25ae5abe05068a8f000fd0ac6cd - languageName: node - linkType: hard - -"multer@npm:2.0.2": - version: 2.0.2 - resolution: "multer@npm:2.0.2" - dependencies: - append-field: "npm:^1.0.0" - busboy: "npm:^1.6.0" - concat-stream: "npm:^2.0.0" - mkdirp: "npm:^0.5.6" - object-assign: "npm:^4.1.1" - type-is: "npm:^1.6.18" - xtend: "npm:^4.0.2" - checksum: 10c0/d3b99dd0512169bbabf15440e1bbb3ecdc000b761e5a3e4aaca40b5e5e213c6cdcc9b7dffebaa601b7691a84f6876aa87e0173ffcc47139253793cf5657819eb - languageName: node - linkType: hard - -"mute-stream@npm:0.0.8": - version: 0.0.8 - resolution: "mute-stream@npm:0.0.8" - checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 - languageName: node - linkType: hard - -"mute-stream@npm:1.0.0": - version: 1.0.0 - resolution: "mute-stream@npm:1.0.0" - checksum: 10c0/dce2a9ccda171ec979a3b4f869a102b1343dee35e920146776780de182f16eae459644d187e38d59a3d37adf85685e1c17c38cf7bfda7e39a9880f7a1d10a74c - languageName: node - linkType: hard - -"napi-postinstall@npm:^0.3.0": - version: 0.3.4 - resolution: "napi-postinstall@npm:0.3.4" - bin: - napi-postinstall: lib/cli.js - checksum: 10c0/b33d64150828bdade3a5d07368a8b30da22ee393f8dd8432f1b9e5486867be21c84ec443dd875dd3ef3c7401a079a7ab7e2aa9d3538a889abbcd96495d5104fe - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 - languageName: node - linkType: hard - -"negotiator@npm:0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 - languageName: node - linkType: hard - -"negotiator@npm:^1.0.0": - version: 1.0.0 - resolution: "negotiator@npm:1.0.0" - checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b - languageName: node - linkType: hard - -"neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d - languageName: node - linkType: hard - -"node-abort-controller@npm:3.1.1, node-abort-controller@npm:^3.0.1": - version: 3.1.1 - resolution: "node-abort-controller@npm:3.1.1" - checksum: 10c0/f7ad0e7a8e33809d4f3a0d1d65036a711c39e9d23e0319d80ebe076b9a3b4432b4d6b86a7fab65521de3f6872ffed36fc35d1327487c48eb88c517803403eda3 - languageName: node - linkType: hard - -"node-addon-api@npm:^2.0.0": - version: 2.0.2 - resolution: "node-addon-api@npm:2.0.2" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/ade6c097ba829fa4aee1ca340117bb7f8f29fdae7b777e343a9d5cbd548481d1f0894b7b907d23ce615c70d932e8f96154caed95c3fa935cfe8cf87546510f64 - languageName: node - linkType: hard - -"node-addon-api@npm:^5.0.0": - version: 5.1.0 - resolution: "node-addon-api@npm:5.1.0" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/0eb269786124ba6fad9df8007a149e03c199b3e5a3038125dfb3e747c2d5113d406a4e33f4de1ea600aa2339be1f137d55eba1a73ee34e5fff06c52a5c296d1d - languageName: node - linkType: hard - -"node-emoji@npm:1.11.0, node-emoji@npm:^1.10.0": - version: 1.11.0 - resolution: "node-emoji@npm:1.11.0" - dependencies: - lodash: "npm:^4.17.21" - checksum: 10c0/5dac6502dbef087092d041fcc2686d8be61168593b3a9baf964d62652f55a3a9c2277f171b81cccb851ccef33f2d070f45e633fab1fda3264f8e1ae9041c673f - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.1": - version: 2.7.0 - resolution: "node-fetch@npm:2.7.0" - dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 - languageName: node - linkType: hard - -"node-gyp-build-optional-packages@npm:5.2.2": - version: 5.2.2 - resolution: "node-gyp-build-optional-packages@npm:5.2.2" - dependencies: - detect-libc: "npm:^2.0.1" - bin: - node-gyp-build-optional-packages: bin.js - node-gyp-build-optional-packages-optional: optional.js - node-gyp-build-optional-packages-test: build-test.js - checksum: 10c0/c81128c6f91873381be178c5eddcbdf66a148a6a89a427ce2bcd457593ce69baf2a8662b6d22cac092d24aa9c43c230dec4e69b3a0da604503f4777cd77e282b - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.2.0": - version: 4.8.4 - resolution: "node-gyp-build@npm:4.8.4" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 12.2.0 - resolution: "node-gyp@npm:12.2.0" - dependencies: - env-paths: "npm:^2.2.0" - exponential-backoff: "npm:^3.1.1" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^15.0.0" - nopt: "npm:^9.0.0" - proc-log: "npm:^6.0.0" - semver: "npm:^7.3.5" - tar: "npm:^7.5.4" - tinyglobby: "npm:^0.2.12" - which: "npm:^6.0.0" - bin: - node-gyp: bin/node-gyp.js - checksum: 10c0/3ed046746a5a7d90950cd8b0547332b06598443f31fe213ef4332a7174c7b7d259e1704835feda79b87d3f02e59d7791842aac60642ede4396ab25fdf0f8f759 - languageName: node - linkType: hard - -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a - languageName: node - linkType: hard - -"node-releases@npm:^2.0.27": - version: 2.0.27 - resolution: "node-releases@npm:2.0.27" - checksum: 10c0/f1e6583b7833ea81880627748d28a3a7ff5703d5409328c216ae57befbced10ce2c991bea86434e8ec39003bd017f70481e2e5f8c1f7e0a7663241f81d6e00e2 - languageName: node - linkType: hard - -"nofilter@npm:^3.1.0": - version: 3.1.0 - resolution: "nofilter@npm:3.1.0" - checksum: 10c0/92459f3864a067b347032263f0b536223cbfc98153913b5dce350cb39c8470bc1813366e41993f22c33cc6400c0f392aa324a4b51e24c22040635c1cdb046499 - languageName: node - linkType: hard - -"nopt@npm:3.x": - version: 3.0.6 - resolution: "nopt@npm:3.0.6" - dependencies: - abbrev: "npm:1" - bin: - nopt: ./bin/nopt.js - checksum: 10c0/f4414223c392dd215910942268d9bdc101ab876400f2c0626b88b718254f5c730dbab5eda58519dc4ea05b681ed8f09c147570ed273ade7fc07757e2e4f12c3d - languageName: node - linkType: hard - -"nopt@npm:^9.0.0": - version: 9.0.0 - resolution: "nopt@npm:9.0.0" - dependencies: - abbrev: "npm:^4.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: "npm:^3.0.0" - checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac - languageName: node - linkType: hard - -"number-to-bn@npm:1.7.0": - version: 1.7.0 - resolution: "number-to-bn@npm:1.7.0" - dependencies: - bn.js: "npm:4.11.6" - strip-hex-prefix: "npm:1.0.0" - checksum: 10c0/83d1540173c4fc60ef4e91e88ed17f2c38418c8e5e62f469d62404527efba48d9c40f364da5c5e6857234a6c1154ff32b3642d80f873ba6cb8d2dd05fb6bc303 - languageName: node - linkType: hard - -"object-assign@npm:^4, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 - languageName: node - linkType: hard - -"object-inspect@npm:^1.13.3": - version: 1.13.4 - resolution: "object-inspect@npm:1.13.4" - checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 - languageName: node - linkType: hard - -"obliterator@npm:^2.0.0": - version: 2.0.5 - resolution: "obliterator@npm:2.0.5" - checksum: 10c0/36e67d88271c51aa6412a7d449d6c60ae6387176f94dbc557eea67456bf6ccedbcbcecdb1e56438aa4f4694f68f531b3bf2be87b019e2f69961b144bec124e70 - languageName: node - linkType: hard - -"omggif@npm:^1.0.10": - version: 1.0.10 - resolution: "omggif@npm:1.0.10" - checksum: 10c0/5ddb6959555bf16ac93ee8724a6f600b0e97e77855515af9df0f657c69ebe0eb7d769763fdc4765f888827e4e64ca71ebeaf7255c7f51058e4bba5cc7950fe8e - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: "npm:1.1.1" - checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 - languageName: node - linkType: hard - -"once@npm:1.x, once@npm:^1.3.0, once@npm:^1.4.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: "npm:1" - checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 - languageName: node - linkType: hard - -"onetime@npm:^5.1.0, onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: "npm:^2.1.0" - checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f - languageName: node - linkType: hard - -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: "npm:~0.1.3" - fast-levenshtein: "npm:~2.0.6" - levn: "npm:~0.3.0" - prelude-ls: "npm:~1.1.2" - type-check: "npm:~0.3.2" - word-wrap: "npm:~1.2.3" - checksum: 10c0/ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 - languageName: node - linkType: hard - -"optionator@npm:^0.9.3": - version: 0.9.4 - resolution: "optionator@npm:0.9.4" - dependencies: - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.5" - checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 - languageName: node - linkType: hard - -"ora@npm:5.4.1, ora@npm:^5.4.1": - version: 5.4.1 - resolution: "ora@npm:5.4.1" - dependencies: - bl: "npm:^4.1.0" - chalk: "npm:^4.1.0" - cli-cursor: "npm:^3.1.0" - cli-spinners: "npm:^2.5.0" - is-interactive: "npm:^1.0.0" - is-unicode-supported: "npm:^0.1.0" - log-symbols: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - wcwidth: "npm:^1.0.1" - checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 - languageName: node - linkType: hard - -"ordinal@npm:^1.0.3": - version: 1.0.3 - resolution: "ordinal@npm:1.0.3" - checksum: 10c0/faa276fc1b1660477fd5c8749323c9715ae4f482c21fb8e67e57d1eb57845ba1b902796ecdcf6405325a8c3b042360970f5dc3b7f8cc7d79e0b2a756ab09174d - languageName: node - linkType: hard - -"os-tmpdir@npm:~1.0.2": - version: 1.0.2 - resolution: "os-tmpdir@npm:1.0.2" - checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 - languageName: node - linkType: hard - -"ox@npm:0.12.4": - version: 0.12.4 - resolution: "ox@npm:0.12.4" - dependencies: - "@adraffy/ens-normalize": "npm:^1.11.0" - "@noble/ciphers": "npm:^1.3.0" - "@noble/curves": "npm:1.9.1" - "@noble/hashes": "npm:^1.8.0" - "@scure/bip32": "npm:^1.7.0" - "@scure/bip39": "npm:^1.6.0" - abitype: "npm:^1.2.3" - eventemitter3: "npm:5.0.1" - peerDependencies: - typescript: ">=5.4.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/4b03aebe0ee02b9ba57faa765418acd9a58471f2feedd9f3c6db6fd9b9cf0b96a7c89795721977b110481ca2e525176ffd23f4bab8ac55deb7553205768d3068 - languageName: node - linkType: hard - -"p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: "npm:^2.0.0" - checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: "npm:^0.1.0" - checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: "npm:^2.2.0" - checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: "npm:^3.0.2" - checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 - languageName: node - linkType: hard - -"p-map@npm:^7.0.2": - version: 7.0.4 - resolution: "p-map@npm:7.0.4" - checksum: 10c0/a5030935d3cb2919d7e89454d1ce82141e6f9955413658b8c9403cfe379283770ed3048146b44cde168aa9e8c716505f196d5689db0ae3ce9a71521a2fef3abd - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f - languageName: node - linkType: hard - -"package-json-from-dist@npm:^1.0.0": - version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1" - checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b - languageName: node - linkType: hard - -"pako@npm:^1.0.11": - version: 1.0.11 - resolution: "pako@npm:1.0.11" - checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: "npm:^3.0.0" - checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 - languageName: node - linkType: hard - -"parse-bmfont-ascii@npm:^1.0.6": - version: 1.0.6 - resolution: "parse-bmfont-ascii@npm:1.0.6" - checksum: 10c0/f76c57be4678fbb05221e263b21671fa3dbe03d0bae7be133b7f102dbe666958811759b615bfcfc81d76a34efeae1fb76c3305a5a4f28e14eb3baa9ec72c8c4f - languageName: node - linkType: hard - -"parse-bmfont-binary@npm:^1.0.6": - version: 1.0.6 - resolution: "parse-bmfont-binary@npm:1.0.6" - checksum: 10c0/2bcc4f041871ce9cec767105a9438704f114ef43c5827754c4dbcd821f792ec440f8120944d3a5396503e4387e68269ba68d933668a92a3322ad32a079911ea4 - languageName: node - linkType: hard - -"parse-bmfont-xml@npm:^1.1.6": - version: 1.1.6 - resolution: "parse-bmfont-xml@npm:1.1.6" - dependencies: - xml-parse-from-string: "npm:^1.0.0" - xml2js: "npm:^0.5.0" - checksum: 10c0/e18e816a2553d3d34795e5a60b584f64a327d4a92f83b48dcb01b9ec30fc75b5338488d9f9d25cd8b463665c13f59264464f39e73c0e8d8d3665ce7f4f128328 - languageName: node - linkType: hard - -"parse-cache-control@npm:^1.0.1": - version: 1.0.1 - resolution: "parse-cache-control@npm:1.0.1" - checksum: 10c0/330a0d9e3a22a7b0f6e8a973c0b9f51275642ee28544cd0d546420273946d555d20a5c7b49fca24d68d2e698bae0186f0f41f48d62133d3153c32454db05f2df - languageName: node - linkType: hard - -"parse-json@npm:^5.2.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - dependencies: - "@babel/code-frame": "npm:^7.0.0" - error-ex: "npm:^1.3.1" - json-parse-even-better-errors: "npm:^2.3.0" - lines-and-columns: "npm:^1.1.6" - checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 - languageName: node - linkType: hard - -"parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 - languageName: node - linkType: hard - -"passport-jwt@npm:^4.0.1": - version: 4.0.1 - resolution: "passport-jwt@npm:4.0.1" - dependencies: - jsonwebtoken: "npm:^9.0.0" - passport-strategy: "npm:^1.0.0" - checksum: 10c0/d7e2b472d399f596a1db31310f8e63d10777ab7468b9a378c964156e5f0a772598b007417356ead578cfdaf60dc2bba39a55f0033ca865186fdb2a2b198e2e7e - languageName: node - linkType: hard - -"passport-strategy@npm:1.x.x, passport-strategy@npm:^1.0.0": - version: 1.0.0 - resolution: "passport-strategy@npm:1.0.0" - checksum: 10c0/cf4cd32e1bf2538a239651581292fbb91ccc83973cde47089f00d2014c24bed63d3e65af21da8ddef649a8896e089eb9c3ac9ca639f36c797654ae9ee4ed65e1 - languageName: node - linkType: hard - -"passport@npm:^0.7.0": - version: 0.7.0 - resolution: "passport@npm:0.7.0" - dependencies: - passport-strategy: "npm:1.x.x" - pause: "npm:0.0.1" - utils-merge: "npm:^1.0.1" - checksum: 10c0/08c940b86e4adbfe43e753f8097300a5a9d1ce9a3aa002d7b12d27770943a1a87202c54597c0f04dbfd4117d67de76303433577512fc19c7e364fec37b0d3fc5 - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c - languageName: node - linkType: hard - -"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 - languageName: node - linkType: hard - -"path-scurry@npm:^1.11.1": - version: 1.11.1 - resolution: "path-scurry@npm:1.11.1" - dependencies: - lru-cache: "npm:^10.2.0" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d - languageName: node - linkType: hard - -"path-scurry@npm:^2.0.2": - version: 2.0.2 - resolution: "path-scurry@npm:2.0.2" - dependencies: - lru-cache: "npm:^11.0.0" - minipass: "npm:^7.1.2" - checksum: 10c0/b35ad37cf6557a87fd057121ce2be7695380c9138d93e87ae928609da259ea0a170fac6f3ef1eb3ece8a068e8b7f2f3adf5bb2374cf4d4a57fe484954fcc9482 - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.12": - version: 0.1.12 - resolution: "path-to-regexp@npm:0.1.12" - checksum: 10c0/1c6ff10ca169b773f3bba943bbc6a07182e332464704572962d277b900aeee81ac6aa5d060ff9e01149636c30b1f63af6e69dd7786ba6e0ddb39d4dee1f0645b - languageName: node - linkType: hard - -"path-to-regexp@npm:3.3.0": - version: 3.3.0 - resolution: "path-to-regexp@npm:3.3.0" - checksum: 10c0/ffa0ebe7088d38d435a8d08b0fe6e8c93ceb2a81a65d4dd1d9a538f52e09d5e3474ed5f553cb3b180d894b0caa10698a68737ab599fd1e56b4663d1a64c9f77b - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - -"pathval@npm:^1.1.1": - version: 1.1.1 - resolution: "pathval@npm:1.1.1" - checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc - languageName: node - linkType: hard - -"pause@npm:0.0.1": - version: 0.0.1 - resolution: "pause@npm:0.0.1" - checksum: 10c0/f362655dfa7f44b946302c5a033148852ed5d05f744bd848b1c7eae6a543f743e79c7751ee896ba519fd802affdf239a358bb2ea5ca1b1c1e4e916279f83ab75 - languageName: node - linkType: hard - -"pbkdf2@npm:^3.0.17": - version: 3.1.5 - resolution: "pbkdf2@npm:3.1.5" - dependencies: - create-hash: "npm:^1.2.0" - create-hmac: "npm:^1.1.7" - ripemd160: "npm:^2.0.3" - safe-buffer: "npm:^5.2.1" - sha.js: "npm:^2.4.12" - to-buffer: "npm:^1.2.1" - checksum: 10c0/ea42e8695e49417eefabb19a08ab19a602cc6cc72d2df3f109c39309600230dee3083a6f678d5d42fe035d6ae780038b80ace0e68f9792ee2839bf081fe386f3 - languageName: node - linkType: hard - -"pdf-parse@npm:^2.4.5": - version: 2.4.5 - resolution: "pdf-parse@npm:2.4.5" - dependencies: - "@napi-rs/canvas": "npm:0.1.80" - pdfjs-dist: "npm:5.4.296" - bin: - pdf-parse: bin/cli.mjs - checksum: 10c0/0bf737c8405994a232e5ce11c6bd80016942cad291debcfe40afa9365e864de9f3f704ef2931e66a84512e28e8c3a9cff6537cc84d2981a39a6f0447a4389036 - languageName: node - linkType: hard - -"pdfjs-dist@npm:5.4.296": - version: 5.4.296 - resolution: "pdfjs-dist@npm:5.4.296" - dependencies: - "@napi-rs/canvas": "npm:^0.1.80" - dependenciesMeta: - "@napi-rs/canvas": - optional: true - checksum: 10c0/a9e438f12771963f7c29934b4d5e58d508fa43954e4e4cbf951b040c6c89891d048e3d9d3799ed9ec6ceade677628a25f88062b300c5425777ce0b522e457532 - languageName: node - linkType: hard - -"peek-readable@npm:^4.1.0": - version: 4.1.0 - resolution: "peek-readable@npm:4.1.0" - checksum: 10c0/f9b81ce3eed185cc9ebbf7dff0b6e130dd6da7b05f1802bbf726a78e4d84990b0a65f8e701959c50eb1124cc2ad352205147954bf39793faba29bb00ce742a44 - languageName: node - linkType: hard - -"picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 - languageName: node - linkType: hard - -"picomatch@npm:4.0.1": - version: 4.0.1 - resolution: "picomatch@npm:4.0.1" - checksum: 10c0/a036a085b18b376493e8ccef155bb03c65a2be7203582b717bb0498d1446e6a80f7f86a36e07877590abd0431f26c64c6154058c31f4f46105d3686a34fa3cf6 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be - languageName: node - linkType: hard - -"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3": - version: 4.0.3 - resolution: "picomatch@npm:4.0.3" - checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 - languageName: node - linkType: hard - -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf - languageName: node - linkType: hard - -"pirates@npm:^4.0.7": - version: 4.0.7 - resolution: "pirates@npm:4.0.7" - checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a - languageName: node - linkType: hard - -"pixelmatch@npm:^5.3.0": - version: 5.3.0 - resolution: "pixelmatch@npm:5.3.0" - dependencies: - pngjs: "npm:^6.0.0" - bin: - pixelmatch: bin/pixelmatch - checksum: 10c0/30850661db29b57cefbe6cf36e930b7517aea4e0ed129e85fcc8ec04a7e6e7648a822a972f8e01d2d3db268ca3c735555caf6b8099a164d8b64d105986d682d2 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: "npm:^4.0.0" - checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 - languageName: node - linkType: hard - -"pluralize@npm:8.0.0": - version: 8.0.0 - resolution: "pluralize@npm:8.0.0" - checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 - languageName: node - linkType: hard - -"pngjs@npm:^6.0.0": - version: 6.0.0 - resolution: "pngjs@npm:6.0.0" - checksum: 10c0/ac23ea329b1881d1a10575aff58116dc27b894ec3f5b84ba15c7f527d21e609fbce7ba16d48f8ccb86c7ce45ceed622472765476ab2875949d4bec55e153f87a - languageName: node - linkType: hard - -"pngjs@npm:^7.0.0": - version: 7.0.0 - resolution: "pngjs@npm:7.0.0" - checksum: 10c0/0d4c7a0fd476a9c33df7d0a2a73e1d56537628a668841f6995c2bca070cf30819f9254a64363266bc14ef2fee47659dd3b4f2b18eec7ab65143015139f497b38 - languageName: node - linkType: hard - -"possible-typed-array-names@npm:^1.0.0": - version: 1.1.0 - resolution: "possible-typed-array-names@npm:1.1.0" - checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd - languageName: node - linkType: hard - -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: 10c0/7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 - languageName: node - linkType: hard - -"prettier-linter-helpers@npm:^1.0.0": - version: 1.0.1 - resolution: "prettier-linter-helpers@npm:1.0.1" - dependencies: - fast-diff: "npm:^1.1.2" - checksum: 10c0/91cea965681bc5f62c9d26bd3ca6358b81557261d4802e96ec1cf0acbd99d4b61632d53320cd2c3ec7d7f7805a81345644108a41ef46ddc9688e783a9ac792d1 - languageName: node - linkType: hard - -"prettier@npm:^2.3.1": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" - bin: - prettier: bin-prettier.js - checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a - languageName: node - linkType: hard - -"prettier@npm:^3.0.0": - version: 3.7.4 - resolution: "prettier@npm:3.7.4" - bin: - prettier: bin/prettier.cjs - checksum: 10c0/9675d2cd08eacb1faf1d1a2dbfe24bfab6a912b059fc9defdb380a408893d88213e794a40a2700bd29b140eb3172e0b07c852853f6e22f16f3374659a1a13389 - languageName: node - linkType: hard - -"pretty-format@npm:30.2.0, pretty-format@npm:^30.0.0": - version: 30.2.0 - resolution: "pretty-format@npm:30.2.0" - dependencies: - "@jest/schemas": "npm:30.0.5" - ansi-styles: "npm:^5.2.0" - react-is: "npm:^18.3.1" - checksum: 10c0/8fdacfd281aa98124e5df80b2c17223fdcb84433876422b54863a6849381b3059eb42b9806d92d2853826bcb966bcb98d499bea5b1e912d869a3c3107fd38d35 - languageName: node - linkType: hard - -"proc-log@npm:^6.0.0": - version: 6.1.0 - resolution: "proc-log@npm:6.1.0" - checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82 - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 - languageName: node - linkType: hard - -"promise@npm:^8.0.0": - version: 8.3.0 - resolution: "promise@npm:8.3.0" - dependencies: - asap: "npm:~2.0.6" - checksum: 10c0/6fccae27a10bcce7442daf090279968086edd2e3f6cebe054b71816403e2526553edf510d13088a4d0f14d7dfa9b9dfb188cab72d6f942e186a4353b6a29c8bf - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: "npm:0.2.0" - ipaddr.js: "npm:1.9.1" - checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 - languageName: node - linkType: hard - -"proxy-from-env@npm:^1.1.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b - languageName: node - linkType: hard - -"punycode@npm:^2.1.0, punycode@npm:^2.3.1": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 - languageName: node - linkType: hard - -"pure-rand@npm:^7.0.0": - version: 7.0.1 - resolution: "pure-rand@npm:7.0.1" - checksum: 10c0/9cade41030f5ec95f5d55a11a71404cd6f46b69becaad892097cd7f58e2c6248cd0a933349ca7d21336ab629f1da42ffe899699b671bc4651600eaf6e57f837e - languageName: node - linkType: hard - -"qs@npm:6.13.0": - version: 6.13.0 - resolution: "qs@npm:6.13.0" - dependencies: - side-channel: "npm:^1.0.6" - checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 - languageName: node - linkType: hard - -"qs@npm:^6.11.2, qs@npm:^6.4.0": - version: 6.15.0 - resolution: "qs@npm:6.15.0" - dependencies: - side-channel: "npm:^1.1.0" - checksum: 10c0/ff341078a78a991d8a48b4524d52949211447b4b1ad907f489cac0770cbc346a28e47304455c0320e5fb000f8762d64b03331e3b71865f663bf351bcba8cdb4b - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 - languageName: node - linkType: hard - -"range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 - languageName: node - linkType: hard - -"raw-body@npm:2.5.2": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" - dependencies: - bytes: "npm:3.1.2" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - unpipe: "npm:1.0.0" - checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 - languageName: node - linkType: hard - -"raw-body@npm:^2.4.1": - version: 2.5.3 - resolution: "raw-body@npm:2.5.3" - dependencies: - bytes: "npm:~3.1.2" - http-errors: "npm:~2.0.1" - iconv-lite: "npm:~0.4.24" - unpipe: "npm:~1.0.0" - checksum: 10c0/449844344fc90547fb994383a494b83300e4f22199f146a79f68d78a199a8f2a923ea9fd29c3be979bfd50291a3884733619ffc15ba02a32e703b612f8d3f74a - languageName: node - linkType: hard - -"react-is@npm:^18.3.1": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - -"readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.8": - version: 2.3.8 - resolution: "readable-stream@npm:2.3.8" - dependencies: - core-util-is: "npm:~1.0.0" - inherits: "npm:~2.0.3" - isarray: "npm:~1.0.0" - process-nextick-args: "npm:~2.0.0" - safe-buffer: "npm:~5.1.1" - string_decoder: "npm:~1.1.1" - util-deprecate: "npm:~1.0.1" - checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa - languageName: node - linkType: hard - -"readable-stream@npm:^3.0.2, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 - languageName: node - linkType: hard - -"readable-stream@npm:^4.7.0": - version: 4.7.0 - resolution: "readable-stream@npm:4.7.0" - dependencies: - abort-controller: "npm:^3.0.0" - buffer: "npm:^6.0.3" - events: "npm:^3.3.0" - process: "npm:^0.11.10" - string_decoder: "npm:^1.3.0" - checksum: 10c0/fd86d068da21cfdb10f7a4479f2e47d9c0a9b0c862fc0c840a7e5360201580a55ac399c764b12a4f6fa291f8cee74d9c4b7562e0d53b3c4b2769f2c98155d957 - languageName: node - linkType: hard - -"readable-web-to-node-stream@npm:^3.0.0": - version: 3.0.4 - resolution: "readable-web-to-node-stream@npm:3.0.4" - dependencies: - readable-stream: "npm:^4.7.0" - checksum: 10c0/2dc417d5d0b0c0191fcf57f87df3b2853db21d1da5554ec32b1e1c5a515e5a1243fc077a23f74046d711c2d736628f64b31054a8379b95bb016212430b5110c5 - languageName: node - linkType: hard - -"readdirp@npm:^4.0.1": - version: 4.1.2 - resolution: "readdirp@npm:4.1.2" - checksum: 10c0/60a14f7619dec48c9c850255cd523e2717001b0e179dc7037cfa0895da7b9e9ab07532d324bfb118d73a710887d1e35f79c495fa91582784493e085d18c72c62 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b - languageName: node - linkType: hard - -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: "npm:^1.1.6" - checksum: 10c0/22c4bb32f4934a9468468b608417194f7e3ceba9a508512125b16082c64f161915a28467562368eeb15dc16058eb5b7c13a20b9eb29ff9927d1ebb3b5aa83e84 - languageName: node - linkType: hard - -"recursive-readdir@npm:^2.2.2": - version: 2.2.3 - resolution: "recursive-readdir@npm:2.2.3" - dependencies: - minimatch: "npm:^3.0.5" - checksum: 10c0/d0238f137b03af9cd645e1e0b40ae78b6cda13846e3ca57f626fcb58a66c79ae018a10e926b13b3a460f1285acc946a4e512ea8daa2e35df4b76a105709930d1 - languageName: node - linkType: hard - -"redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": - version: 1.2.0 - resolution: "redis-errors@npm:1.2.0" - checksum: 10c0/5b316736e9f532d91a35bff631335137a4f974927bb2fb42bf8c2f18879173a211787db8ac4c3fde8f75ed6233eb0888e55d52510b5620e30d69d7d719c8b8a7 - languageName: node - linkType: hard - -"redis-parser@npm:^3.0.0": - version: 3.0.0 - resolution: "redis-parser@npm:3.0.0" - dependencies: - redis-errors: "npm:^1.0.0" - checksum: 10c0/ee16ac4c7b2a60b1f42a2cdaee22b005bd4453eb2d0588b8a4939718997ae269da717434da5d570fe0b05030466eeb3f902a58cf2e8e1ca058bf6c9c596f632f - languageName: node - linkType: hard - -"reduce-flatten@npm:^2.0.0": - version: 2.0.0 - resolution: "reduce-flatten@npm:2.0.0" - checksum: 10c0/9275064535bc070a787824c835a4f18394942f8a78f08e69fb500920124ce1c46a287c8d9e565a7ffad8104875a6feda14efa8e951e8e4585370b8ff007b0abd - languageName: node - linkType: hard - -"reflect-metadata@npm:^0.1.13": - version: 0.1.14 - resolution: "reflect-metadata@npm:0.1.14" - checksum: 10c0/3a6190c7f6cb224f26a012d11f9e329360c01c1945e2cbefea23976a8bacf9db6b794aeb5bf18adcb673c448a234fbc06fc41853c00a6c206b30f0777ecf019e - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d - languageName: node - linkType: hard - -"req-cwd@npm:^2.0.0": - version: 2.0.0 - resolution: "req-cwd@npm:2.0.0" - dependencies: - req-from: "npm:^2.0.0" - checksum: 10c0/9cefc80353594b07d1a31d7ee4e4b5c7252f054f0fda7d5caf038c1cb5aa4b322acb422de7e18533734e8557f5769c2318f3ee9256e2e4f4e359b9b776c7ed1a - languageName: node - linkType: hard - -"req-from@npm:^2.0.0": - version: 2.0.0 - resolution: "req-from@npm:2.0.0" - dependencies: - resolve-from: "npm:^3.0.0" - checksum: 10c0/84aa6b4f7291675d9443ac156139841c7c1ae7eccf080f3b344972d6470170b0c32682656c560763b330d00e133196bcfdb1fcb4c5031f59ecbe80dea4dd1c82 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 - languageName: node - linkType: hard - -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 - languageName: node - linkType: hard - -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 - languageName: node - linkType: hard - -"resolve-from@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-from@npm:3.0.0" - checksum: 10c0/24affcf8e81f4c62f0dcabc774afe0e19c1f38e34e43daac0ddb409d79435fc3037f612b0cc129178b8c220442c3babd673e88e870d27215c99454566e770ebc - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 - languageName: node - linkType: hard - -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 - languageName: node - linkType: hard - -"resolve@npm:1.1.x": - version: 1.1.7 - resolution: "resolve@npm:1.1.7" - checksum: 10c0/f66dcad51854fca283fa68e9c11445c2117d7963b9ced6c43171784987df3bed6fb16c4af2bf6f07c02ace94a4f4ebe158d13780b6e14d60944478c860208245 - languageName: node - linkType: hard - -"resolve@npm:1.17.0": - version: 1.17.0 - resolution: "resolve@npm:1.17.0" - dependencies: - path-parse: "npm:^1.0.6" - checksum: 10c0/4e6c76cc1a7b08bff637b092ce035d7901465067915605bc5a23ac0c10fe42ec205fc209d5d5f7a5f27f37ce71d687def7f656bbb003631cd46a8374f55ec73d - languageName: node - linkType: hard - -"resolve@npm:^1.1.6": - version: 1.22.11 - resolution: "resolve@npm:1.22.11" - dependencies: - is-core-module: "npm:^2.16.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A1.1.x#optional!builtin": - version: 1.1.7 - resolution: "resolve@patch:resolve@npm%3A1.1.7#optional!builtin::version=1.1.7&hash=3bafbf" - checksum: 10c0/f4f1471423d600a10944785222fa7250237ed8c98aa6b1e1f4dc0bb3dbfbcafcaac69a2ed23cd1f6f485ed23e7c939894ac1978284e4163754fade8a05358823 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A1.17.0#optional!builtin": - version: 1.17.0 - resolution: "resolve@patch:resolve@npm%3A1.17.0#optional!builtin::version=1.17.0&hash=c3c19d" - dependencies: - path-parse: "npm:^1.0.6" - checksum: 10c0/e072e52be3c3dbfd086761115db4a5136753e7aefc0e665e66e7307ddcd9d6b740274516055c74aee44921625e95993f03570450aa310b8d73b1c9daa056c4cd - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin": - version: 1.22.11 - resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.16.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 - languageName: node - linkType: hard - -"restore-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "restore-cursor@npm:3.1.0" - dependencies: - onetime: "npm:^5.1.0" - signal-exit: "npm:^3.0.2" - checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.1.0 - resolution: "reusify@npm:1.1.0" - checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa - languageName: node - linkType: hard - -"rfdc@npm:^1.3.1": - version: 1.4.1 - resolution: "rfdc@npm:1.4.1" - checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7 - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 - languageName: node - linkType: hard - -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1, ripemd160@npm:^2.0.3": - version: 2.0.3 - resolution: "ripemd160@npm:2.0.3" - dependencies: - hash-base: "npm:^3.1.2" - inherits: "npm:^2.0.4" - checksum: 10c0/3f472fb453241cfe692a77349accafca38dbcdc9d96d5848c088b2932ba41eb968630ecff7b175d291c7487a4945aee5a81e30c064d1f94e36070f7e0c37ed6c - languageName: node - linkType: hard - -"rlp@npm:^2.2.4": - version: 2.2.7 - resolution: "rlp@npm:2.2.7" - dependencies: - bn.js: "npm:^5.2.0" - bin: - rlp: bin/rlp - checksum: 10c0/166c449f4bc794d47f8e337bf0ffbcfdb26c33109030aac4b6e5a33a91fa85783f2290addeb7b3c89d6d9b90c8276e719494d193129bed0a60a2d4a6fd658277 - languageName: node - linkType: hard - -"run-async@npm:^2.4.0": - version: 2.4.1 - resolution: "run-async@npm:2.4.1" - checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 - languageName: node - linkType: hard - -"run-async@npm:^3.0.0": - version: 3.0.0 - resolution: "run-async@npm:3.0.0" - checksum: 10c0/b18b562ae37c3020083dcaae29642e4cc360c824fbfb6b7d50d809a9d5227bb986152d09310255842c8dce40526e82ca768f02f00806c91ba92a8dfa6159cb85 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 - languageName: node - linkType: hard - -"rxjs@npm:7.8.1": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" - dependencies: - tslib: "npm:^2.1.0" - checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 - languageName: node - linkType: hard - -"rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": - version: 7.8.2 - resolution: "rxjs@npm:7.8.2" - dependencies: - tslib: "npm:^2.1.0" - checksum: 10c0/1fcd33d2066ada98ba8f21fcbbcaee9f0b271de1d38dc7f4e256bfbc6ffcdde68c8bfb69093de7eeb46f24b1fb820620bf0223706cff26b4ab99a7ff7b2e2c45 - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 - languageName: node - linkType: hard - -"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 - languageName: node - linkType: hard - -"sax@npm:>=0.6.0": - version: 1.4.3 - resolution: "sax@npm:1.4.3" - checksum: 10c0/45bba07561d93f184a8686e1a543418ced8c844b994fbe45cc49d5cd2fc8ac7ec949dae38565e35e388ad0cca2b75997a29b6857c927bf6553da3f80ed0e4e62 - languageName: node - linkType: hard - -"sc-istanbul@npm:^0.4.5": - version: 0.4.6 - resolution: "sc-istanbul@npm:0.4.6" - dependencies: - abbrev: "npm:1.0.x" - async: "npm:1.x" - escodegen: "npm:1.8.x" - esprima: "npm:2.7.x" - glob: "npm:^5.0.15" - handlebars: "npm:^4.0.1" - js-yaml: "npm:3.x" - mkdirp: "npm:0.5.x" - nopt: "npm:3.x" - once: "npm:1.x" - resolve: "npm:1.1.x" - supports-color: "npm:^3.1.0" - which: "npm:^1.1.1" - wordwrap: "npm:^1.0.0" - bin: - istanbul: lib/cli.js - checksum: 10c0/3eba8f6b7ba423fb03fdd67e72b0a71c71aa1dbd117692f3225003320dd45adf03cd32dd1739bd347aa58c690ca8f719fd8ae70cefe0fc06433fac4725668942 - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": - version: 3.3.0 - resolution: "schema-utils@npm:3.3.0" - dependencies: - "@types/json-schema": "npm:^7.0.8" - ajv: "npm:^6.12.5" - ajv-keywords: "npm:^3.5.2" - checksum: 10c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 - languageName: node - linkType: hard - -"schema-utils@npm:^4.3.0, schema-utils@npm:^4.3.3": - version: 4.3.3 - resolution: "schema-utils@npm:4.3.3" - dependencies: - "@types/json-schema": "npm:^7.0.9" - ajv: "npm:^8.9.0" - ajv-formats: "npm:^2.1.1" - ajv-keywords: "npm:^5.1.0" - checksum: 10c0/1c8d2c480a026d7c02ab2ecbe5919133a096d6a721a3f201fa50663e4f30f6d6ba020dfddd93cb828b66b922e76b342e103edd19a62c95c8f60e9079cc403202 - languageName: node - linkType: hard - -"scrypt-js@npm:3.0.1, scrypt-js@npm:^3.0.0": - version: 3.0.1 - resolution: "scrypt-js@npm:3.0.1" - checksum: 10c0/e2941e1c8b5c84c7f3732b0153fee624f5329fc4e772a06270ee337d4d2df4174b8abb5e6ad53804a29f53890ecbc78f3775a319323568c0313040c0e55f5b10 - languageName: node - linkType: hard - -"secp256k1@npm:^4.0.1": - version: 4.0.4 - resolution: "secp256k1@npm:4.0.4" - dependencies: - elliptic: "npm:^6.5.7" - node-addon-api: "npm:^5.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.0" - checksum: 10c0/cf7a74343566d4774c64332c07fc2caf983c80507f63be5c653ff2205242143d6320c50ee4d793e2b714a56540a79e65a8f0056e343b25b0cdfed878bc473fd8 - languageName: node - linkType: hard - -"semver@npm:7.7.4": - version: 7.7.4 - resolution: "semver@npm:7.7.4" - bin: - semver: bin/semver.js - checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2 - languageName: node - linkType: hard - -"semver@npm:^5.5.0": - version: 5.7.2 - resolution: "semver@npm:5.7.2" - bin: - semver: bin/semver - checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 - languageName: node - linkType: hard - -"semver@npm:^6.3.0, semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d - languageName: node - linkType: hard - -"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.7.2, semver@npm:^7.7.3": - version: 7.7.3 - resolution: "semver@npm:7.7.3" - bin: - semver: bin/semver.js - checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e - languageName: node - linkType: hard - -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" - dependencies: - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - mime: "npm:1.6.0" - ms: "npm:2.1.3" - on-finished: "npm:2.4.1" - range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3 - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.2": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 - languageName: node - linkType: hard - -"serve-static@npm:1.16.2": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" - dependencies: - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - parseurl: "npm:~1.3.3" - send: "npm:0.19.0" - checksum: 10c0/528fff6f5e12d0c5a391229ad893910709bc51b5705962b09404a1d813857578149b8815f35d3ee5752f44cd378d0f31669d4b1d7e2d11f41e08283d5134bd1f - languageName: node - linkType: hard - -"set-function-length@npm:^1.2.2": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c - languageName: node - linkType: hard - -"setimmediate@npm:^1.0.5": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc - languageName: node - linkType: hard - -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.12, sha.js@npm:^2.4.8": - version: 2.4.12 - resolution: "sha.js@npm:2.4.12" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.0" - bin: - sha.js: bin.js - checksum: 10c0/9d36bdd76202c8116abbe152a00055ccd8a0099cb28fc17c01fa7bb2c8cffb9ca60e2ab0fe5f274ed6c45dc2633d8c39cf7ab050306c231904512ba9da4d8ab1 - languageName: node - linkType: hard - -"sha1@npm:^1.1.1": - version: 1.1.1 - resolution: "sha1@npm:1.1.1" - dependencies: - charenc: "npm:>= 0.0.1" - crypt: "npm:>= 0.0.1" - checksum: 10c0/1bb36c89c112c741c265cca66712f883ae01d5c55b71aec80635fe2ad5d0c976a1a8a994dda774ae9f93b2da99fd111238758a8bf985adc400bd86f0e4452865 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 - languageName: node - linkType: hard - -"shelljs@npm:^0.8.3": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: "npm:^7.0.0" - interpret: "npm:^1.0.0" - rechoir: "npm:^0.6.2" - bin: - shjs: bin/shjs - checksum: 10c0/feb25289a12e4bcd04c40ddfab51aff98a3729f5c2602d5b1a1b95f6819ec7804ac8147ebd8d9a85dfab69d501bcf92d7acef03247320f51c1552cec8d8e2382 - languageName: node - linkType: hard - -"side-channel-list@npm:^1.0.0": - version: 1.0.0 - resolution: "side-channel-list@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d - languageName: node - linkType: hard - -"side-channel-map@npm:^1.0.1": - version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 - languageName: node - linkType: hard - -"side-channel-weakmap@npm:^1.0.2": - version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - side-channel-map: "npm:^1.0.1" - checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": - version: 1.1.0 - resolution: "side-channel@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - side-channel-list: "npm:^1.0.0" - side-channel-map: "npm:^1.0.1" - side-channel-weakmap: "npm:^1.0.2" - checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 - languageName: node - linkType: hard - -"sift@npm:17.1.3": - version: 17.1.3 - resolution: "sift@npm:17.1.3" - checksum: 10c0/bb05d1d65cc9b549b402c1366ba1fcf685311808b6d5c2f4fa2f477d7b524218bbf6c99587562d5613d407820a6b5a7cad809f89c3f75c513ff5d8c0e0a0cead - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 - languageName: node - linkType: hard - -"signal-exit@npm:^4.0.1": - version: 4.1.0 - resolution: "signal-exit@npm:4.1.0" - checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 - languageName: node - linkType: hard - -"simple-xml-to-json@npm:^1.2.2": - version: 1.2.3 - resolution: "simple-xml-to-json@npm:1.2.3" - checksum: 10c0/e1f48f93442e651c0f917280544791a71ff13bfb0a70ab537831bc74358022b372488a58f8db3cd0cbdc937b0bc0641ac61f64753f025978942bdac80f60edba - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b - languageName: node - linkType: hard - -"slice-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "slice-ansi@npm:4.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - astral-regex: "npm:^2.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.3": - version: 8.0.5 - resolution: "socks-proxy-agent@npm:8.0.5" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:^4.3.4" - socks: "npm:^2.8.3" - checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 - languageName: node - linkType: hard - -"socks@npm:^2.8.3": - version: 2.8.7 - resolution: "socks@npm:2.8.7" - dependencies: - ip-address: "npm:^10.0.1" - smart-buffer: "npm:^4.2.0" - checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 - languageName: node - linkType: hard - -"solc@npm:0.8.26": - version: 0.8.26 - resolution: "solc@npm:0.8.26" - dependencies: - command-exists: "npm:^1.2.8" - commander: "npm:^8.1.0" - follow-redirects: "npm:^1.12.1" - js-sha3: "npm:0.8.0" - memorystream: "npm:^0.3.1" - semver: "npm:^5.5.0" - tmp: "npm:0.0.33" - bin: - solcjs: solc.js - checksum: 10c0/1eea35da99c228d0dc1d831c29f7819e7921b67824c889a5e5f2e471a2ef5856a15fabc0b5de067f5ba994fa36fb5a563361963646fe98dad58a0e4fa17c8b2d - languageName: node - linkType: hard - -"solidity-coverage@npm:^0.8.17": - version: 0.8.17 - resolution: "solidity-coverage@npm:0.8.17" - dependencies: - "@ethersproject/abi": "npm:^5.0.9" - "@solidity-parser/parser": "npm:^0.20.1" - chalk: "npm:^2.4.2" - death: "npm:^1.1.0" - difflib: "npm:^0.2.4" - fs-extra: "npm:^8.1.0" - ghost-testrpc: "npm:^0.0.2" - global-modules: "npm:^2.0.0" - globby: "npm:^10.0.1" - jsonschema: "npm:^1.2.4" - lodash: "npm:^4.17.21" - mocha: "npm:^10.2.0" - node-emoji: "npm:^1.10.0" - pify: "npm:^4.0.1" - recursive-readdir: "npm:^2.2.2" - sc-istanbul: "npm:^0.4.5" - semver: "npm:^7.3.4" - shelljs: "npm:^0.8.3" - web3-utils: "npm:^1.3.6" - peerDependencies: - hardhat: ^2.11.0 - bin: - solidity-coverage: plugins/bin.js - checksum: 10c0/4d49caad508a4b3ffef97f9d2f526f8993c8823d34068f8ae55eb6160872cb23e49c68ba2834186c44c6fdc6092a622f01e875bb611d7cf69ae698ed55dd41d0 - languageName: node - linkType: hard - -"source-map-support@npm:0.5.13": - version: 0.5.13 - resolution: "source-map-support@npm:0.5.13" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.13, source-map-support@npm:^0.5.16, source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d - languageName: node - linkType: hard - -"source-map@npm:0.7.4": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 - languageName: node - linkType: hard - -"source-map@npm:^0.7.4": - version: 0.7.6 - resolution: "source-map@npm:0.7.6" - checksum: 10c0/59f6f05538539b274ba771d2e9e32f6c65451982510564438e048bc1352f019c6efcdc6dd07909b1968144941c14015c2c7d4369fb7c4d7d53ae769716dcc16c - languageName: node - linkType: hard - -"source-map@npm:~0.2.0": - version: 0.2.0 - resolution: "source-map@npm:0.2.0" - dependencies: - amdefine: "npm:>=0.0.4" - checksum: 10c0/24ac0df484721203e7c98faaa2a56cc73d7e8b8468a03459dd98e09b84421056c456dbfea1bf4f292142c3b88c160574f648cbc83e8fe772cf0b3342f0bba68d - languageName: node - linkType: hard - -"sparse-bitfield@npm:^3.0.3": - version: 3.0.3 - resolution: "sparse-bitfield@npm:3.0.3" - dependencies: - memory-pager: "npm:^1.0.2" - checksum: 10c0/248c6ff7b5e354735e1daac4059222a29c9d291dfcf265daf675d13515eeaac454cfcccd687c8d134f86698b39abd7ad4d7434f7272dd6f8e41a00f21aae4194 - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb - languageName: node - linkType: hard - -"ssri@npm:^13.0.0": - version: 13.0.1 - resolution: "ssri@npm:13.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/cf6408a18676c57ff2ed06b8a20dc64bb3e748e5c7e095332e6aecaa2b8422b1e94a739a8453bf65156a8a47afe23757ba4ab52d3ea3b62322dc40875763e17a - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.6": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a - languageName: node - linkType: hard - -"stacktrace-parser@npm:^0.1.10": - version: 0.1.11 - resolution: "stacktrace-parser@npm:0.1.11" - dependencies: - type-fest: "npm:^0.7.1" - checksum: 10c0/4633d9afe8cd2f6c7fb2cebdee3cc8de7fd5f6f9736645fd08c0f66872a303061ce9cc0ccf46f4216dc94a7941b56e331012398dc0024dc25e46b5eb5d4ff018 - languageName: node - linkType: hard - -"standard-as-callback@npm:^2.1.0": - version: 2.1.0 - resolution: "standard-as-callback@npm:2.1.0" - checksum: 10c0/012677236e3d3fdc5689d29e64ea8a599331c4babe86956bf92fc5e127d53f85411c5536ee0079c52c43beb0026b5ce7aa1d834dd35dd026e82a15d1bcaead1f - languageName: node - linkType: hard - -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 - languageName: node - linkType: hard - -"statuses@npm:~2.0.2": - version: 2.0.2 - resolution: "statuses@npm:2.0.2" - checksum: 10c0/a9947d98ad60d01f6b26727570f3bcceb6c8fa789da64fe6889908fe2e294d57503b14bf2b5af7605c2d36647259e856635cd4c49eab41667658ec9d0080ec3f - languageName: node - linkType: hard - -"streamsearch@npm:^1.1.0": - version: 1.1.0 - resolution: "streamsearch@npm:1.1.0" - checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab - languageName: node - linkType: hard - -"string-format@npm:^2.0.0": - version: 2.0.0 - resolution: "string-format@npm:2.0.0" - checksum: 10c0/7bca13ba9f942f635c74d637da5e9e375435cbd428f35eeef28c3a30f81d4e63b95ff2c6cca907d897dd3951bbf52e03e3b945a0e9681358e33bd67222436538 - languageName: node - linkType: hard - -"string-length@npm:^4.0.2": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: "npm:^1.0.2" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c - languageName: node - linkType: hard - -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b - languageName: node - linkType: hard - -"string-width@npm:^2.1.1": - version: 2.1.1 - resolution: "string-width@npm:2.1.1" - dependencies: - is-fullwidth-code-point: "npm:^2.0.0" - strip-ansi: "npm:^4.0.0" - checksum: 10c0/e5f2b169fcf8a4257a399f95d069522f056e92ec97dbdcb9b0cdf14d688b7ca0b1b1439a1c7b9773cd79446cbafd582727279d6bfdd9f8edd306ea5e90e5b610 - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: "npm:^0.2.0" - emoji-regex: "npm:^9.2.2" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: "npm:~5.1.0" - checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e - languageName: node - linkType: hard - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - -"strip-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-ansi@npm:4.0.0" - dependencies: - ansi-regex: "npm:^3.0.0" - checksum: 10c0/d75d9681e0637ea316ddbd7d4d3be010b1895a17e885155e0ed6a39755ae0fd7ef46e14b22162e66a62db122d3a98ab7917794e255532ab461bb0a04feb03e7d - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.1.2 - resolution: "strip-ansi@npm:7.1.2" - dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10c0/0d6d7a023de33368fd042aab0bf48f4f4077abdfd60e5393e73c7c411e85e1b3a83507c11af2e656188511475776215df9ca589b4da2295c9455cc399ce1858b - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 - languageName: node - linkType: hard - -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f - languageName: node - linkType: hard - -"strip-hex-prefix@npm:1.0.0": - version: 1.0.0 - resolution: "strip-hex-prefix@npm:1.0.0" - dependencies: - is-hex-prefixed: "npm:1.0.0" - checksum: 10c0/ec9a48c334c2ba4afff2e8efebb42c3ab5439f0e1ec2b8525e184eabef7fecade7aee444af802b1be55d2df6da5b58c55166c32f8461cc7559b401137ad51851 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd - languageName: node - linkType: hard - -"strtok3@npm:^10.2.0": - version: 10.3.4 - resolution: "strtok3@npm:10.3.4" - dependencies: - "@tokenizer/token": "npm:^0.3.0" - checksum: 10c0/277ab69e417f4545e364ffaf9d560c991f531045dbace32d77b5c822cccd76a608b782785a2c60595274288d4d32dced184a5c21dc20348791da697127dc69a8 - languageName: node - linkType: hard - -"strtok3@npm:^6.2.4": - version: 6.3.0 - resolution: "strtok3@npm:6.3.0" - dependencies: - "@tokenizer/token": "npm:^0.3.0" - peek-readable: "npm:^4.1.0" - checksum: 10c0/8f1483a2a6758404502f2fc431586fcf37d747b10b125596ab5ec92319c247dd1195f82ba0bc2eaa582db3d807b5cca4b67ff61411756fec6622d051f8e255c2 - languageName: node - linkType: hard - -"superagent@npm:^10.2.3": - version: 10.2.3 - resolution: "superagent@npm:10.2.3" - dependencies: - component-emitter: "npm:^1.3.1" - cookiejar: "npm:^2.1.4" - debug: "npm:^4.3.7" - fast-safe-stringify: "npm:^2.1.1" - form-data: "npm:^4.0.4" - formidable: "npm:^3.5.4" - methods: "npm:^1.1.2" - mime: "npm:2.6.0" - qs: "npm:^6.11.2" - checksum: 10c0/c45b40dcdac661f2dde197875912ffc97a28a7778705605640d89e02f1d98cf8f2a5230af81c254fd769acfe15bc61dcd85488283102c76999d94dea5a7376dd - languageName: node - linkType: hard - -"supertest@npm:^7.1.4": - version: 7.1.4 - resolution: "supertest@npm:7.1.4" - dependencies: - methods: "npm:^1.1.2" - superagent: "npm:^10.2.3" - checksum: 10c0/b4cd2af4ac19f620b5969ca174a72653132a92b031d0bea3b24fdd222fadaa2cca24ea37f3be3d01739fe6f55f1c32e8edd27eaad92d908e4190dd1e532cdf47 - languageName: node - linkType: hard - -"supports-color@npm:^3.1.0": - version: 3.2.3 - resolution: "supports-color@npm:3.2.3" - dependencies: - has-flag: "npm:^1.0.0" - checksum: 10c0/d39a57dbd75c3b5740654f8ec16aaf7203b8d12b8a51314507bed590c9081120805f105b4ce741db13105e6f842ac09700e4bd665b9ffc46eb0b34ba54720bd3 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 - languageName: node - linkType: hard - -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 - languageName: node - linkType: hard - -"swagger-ui-dist@npm:5.17.14, swagger-ui-dist@npm:>=5.0.0": - version: 5.17.14 - resolution: "swagger-ui-dist@npm:5.17.14" - checksum: 10c0/cb61bba39e76d7d0d83da605a55e9504c1a5b421f9f13cced06d3e222f0a291594d417ec57b30a38aabe30d8a7e257c4977b8f0bba0e865d60f92b0a8ef4dfc1 - languageName: node - linkType: hard - -"swagger-ui-express@npm:^5.0.1": - version: 5.0.1 - resolution: "swagger-ui-express@npm:5.0.1" - dependencies: - swagger-ui-dist: "npm:>=5.0.0" - peerDependencies: - express: ">=4.0.0 || >=5.0.0-beta" - checksum: 10c0/dbe9830caef7fe455241e44e74958bac62642997e4341c1b0f38a3d684d19a4a81b431217c656792d99f046a1b5f261abf7783ede0afe41098cd4450401f6fd1 - languageName: node - linkType: hard - -"symbol-observable@npm:4.0.0": - version: 4.0.0 - resolution: "symbol-observable@npm:4.0.0" - checksum: 10c0/5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d - languageName: node - linkType: hard - -"sync-request@npm:^6.0.0": - version: 6.1.0 - resolution: "sync-request@npm:6.1.0" - dependencies: - http-response-object: "npm:^3.0.1" - sync-rpc: "npm:^1.2.1" - then-request: "npm:^6.0.0" - checksum: 10c0/02b31c5d543933ce8cc2cdfa7dd7b278e2645eb54299d56f3bc9c778de3130301370f25d54ecc3f6b8b2c7bfb034daabd2b866e0c18badbde26404513212c1f5 - languageName: node - linkType: hard - -"sync-rpc@npm:^1.2.1": - version: 1.3.6 - resolution: "sync-rpc@npm:1.3.6" - dependencies: - get-port: "npm:^3.1.0" - checksum: 10c0/2abaa0e6482fe8b72e29af1f7d5f484fac5a8ea0132969bf370f59b044c4f2eb109f95b222cb06e037f89b42b374a2918e5f90aff5fb7cf3e146d8088c56f6db - languageName: node - linkType: hard - -"synckit@npm:^0.11.7, synckit@npm:^0.11.8": - version: 0.11.11 - resolution: "synckit@npm:0.11.11" - dependencies: - "@pkgr/core": "npm:^0.2.9" - checksum: 10c0/f0761495953d12d94a86edf6326b3a565496c72f9b94c02549b6961fb4d999f4ca316ce6b3eb8ed2e4bfc5056a8de65cda0bd03a233333a35221cd2fdc0e196b - languageName: node - linkType: hard - -"table-layout@npm:^1.0.2": - version: 1.0.2 - resolution: "table-layout@npm:1.0.2" - dependencies: - array-back: "npm:^4.0.1" - deep-extend: "npm:~0.6.0" - typical: "npm:^5.2.0" - wordwrapjs: "npm:^4.0.0" - checksum: 10c0/c1d16d5ba2199571606ff574a5c91cff77f14e8477746e191e7dfd294da03e61af4e8004f1f6f783da9582e1365f38d3c469980428998750d558bf29462cc6c3 - languageName: node - linkType: hard - -"table@npm:^6.8.0": - version: 6.9.0 - resolution: "table@npm:6.9.0" - dependencies: - ajv: "npm:^8.0.1" - lodash.truncate: "npm:^4.4.2" - slice-ansi: "npm:^4.0.0" - string-width: "npm:^4.2.3" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/35646185712bb65985fbae5975dda46696325844b78735f95faefae83e86df0a265277819a3e67d189de6e858c509b54e66ca3958ffd51bde56ef1118d455bf4 - languageName: node - linkType: hard - -"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1, tapable@npm:^2.3.0": - version: 2.3.0 - resolution: "tapable@npm:2.3.0" - checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681 - languageName: node - linkType: hard - -"tar@npm:^7.5.4": - version: 7.5.9 - resolution: "tar@npm:7.5.9" - dependencies: - "@isaacs/fs-minipass": "npm:^4.0.0" - chownr: "npm:^3.0.0" - minipass: "npm:^7.1.2" - minizlib: "npm:^3.1.0" - yallist: "npm:^5.0.0" - checksum: 10c0/e870beb1b2477135ca2abe86b2d18f7b35d0a4e3a37bbc523d3b8f7adca268dfab543f26528a431d569897f8c53a7cac745cdfbc4411c2f89aeeacc652b81b0a - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.16": - version: 5.3.16 - resolution: "terser-webpack-plugin@npm:5.3.16" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.25" - jest-worker: "npm:^27.4.5" - schema-utils: "npm:^4.3.0" - serialize-javascript: "npm:^6.0.2" - terser: "npm:^5.31.1" - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 10c0/39e37c5b3015c1a5354a3633f77235677bfa06eac2608ce26d258b1d1a74070a99910319a6f2f2c437eb61dc321f66434febe01d78e73fa96b4d4393b813f4cf - languageName: node - linkType: hard - -"terser@npm:^5.31.1": - version: 5.44.1 - resolution: "terser@npm:5.44.1" - dependencies: - "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.15.0" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: 10c0/ee7a76692cb39b1ed22c30ff366c33ff3c977d9bb769575338ff5664676168fcba59192fb5168ef80c7cd901ef5411a1b0351261f5eaa50decf0fc71f63bde75 - languageName: node - linkType: hard - -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": "npm:^0.1.2" - glob: "npm:^7.1.4" - minimatch: "npm:^3.0.4" - checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c - languageName: node - linkType: hard - -"then-request@npm:^6.0.0": - version: 6.0.2 - resolution: "then-request@npm:6.0.2" - dependencies: - "@types/concat-stream": "npm:^1.6.0" - "@types/form-data": "npm:0.0.33" - "@types/node": "npm:^8.0.0" - "@types/qs": "npm:^6.2.31" - caseless: "npm:~0.12.0" - concat-stream: "npm:^1.6.0" - form-data: "npm:^2.2.0" - http-basic: "npm:^8.1.1" - http-response-object: "npm:^3.0.1" - promise: "npm:^8.0.0" - qs: "npm:^6.4.0" - checksum: 10c0/9d2998c3470d6aa5b49993612be40627c57a89534cff5bbcc1d57f18457c14675cf3f59310816a1f85fdd40fa66feb64c63c5b76fb2163221f57223609c47949 - languageName: node - linkType: hard - -"through@npm:^2.3.6": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc - languageName: node - linkType: hard - -"tinycolor2@npm:^1.6.0": - version: 1.6.0 - resolution: "tinycolor2@npm:1.6.0" - checksum: 10c0/9aa79a36ba2c2a87cb221453465cabacd04b9e35f9694373e846fdc78b1c768110f81e581ea41440106c0f24d9a023891d0887e8075885e790ac40eb0e74a5c1 - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.6": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" - dependencies: - fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 - languageName: node - linkType: hard - -"tmp@npm:0.0.33, tmp@npm:^0.0.33": - version: 0.0.33 - resolution: "tmp@npm:0.0.33" - dependencies: - os-tmpdir: "npm:~1.0.2" - checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 - languageName: node - linkType: hard - -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 - languageName: node - linkType: hard - -"to-buffer@npm:^1.2.0, to-buffer@npm:^1.2.1, to-buffer@npm:^1.2.2": - version: 1.2.2 - resolution: "to-buffer@npm:1.2.2" - dependencies: - isarray: "npm:^2.0.5" - safe-buffer: "npm:^5.2.1" - typed-array-buffer: "npm:^1.0.3" - checksum: 10c0/56bc56352f14a2c4a0ab6277c5fc19b51e9534882b98eb068b39e14146591e62fa5b06bf70f7fed1626230463d7e60dca81e815096656e5e01c195c593873d12 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 - languageName: node - linkType: hard - -"token-types@npm:^4.1.1": - version: 4.2.1 - resolution: "token-types@npm:4.2.1" - dependencies: - "@tokenizer/token": "npm:^0.3.0" - ieee754: "npm:^1.2.1" - checksum: 10c0/e9a4a139deba9515770cd7ac36a8f53f953b9d035d309e88a66d706760dba0df420753f2b8bdee6b9f3cbff8d66b24e69571e8dea27baa7b378229ab1bcca399 - languageName: node - linkType: hard - -"token-types@npm:^6.0.0": - version: 6.1.1 - resolution: "token-types@npm:6.1.1" - dependencies: - "@borewit/text-codec": "npm:^0.1.0" - "@tokenizer/token": "npm:^0.3.0" - ieee754: "npm:^1.2.1" - checksum: 10c0/e2405e7789d41693a09c478b53c47ffadd735a5f4c826d9885787d022ab10e26cc4a67b03593285748bf3b0c0237e0ea2ab268abcb953ea314727201d0f6504d - languageName: node - linkType: hard - -"toml@npm:^3.0.0": - version: 3.0.0 - resolution: "toml@npm:3.0.0" - checksum: 10c0/8d7ed3e700ca602e5419fca343e1c595eb7aa177745141f0761a5b20874b58ee5c878cd045c408da9d130cb2b611c639912210ba96ce2f78e443569aa8060c18 - languageName: node - linkType: hard - -"tr46@npm:^5.1.0": - version: 5.1.1 - resolution: "tr46@npm:5.1.1" - dependencies: - punycode: "npm:^2.3.1" - checksum: 10c0/ae270e194d52ec67ebd695c1a42876e0f19b96e4aca2ab464ab1d9d17dc3acd3e18764f5034c93897db73421563be27c70c98359c4501136a497e46deda5d5ec - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 - languageName: node - linkType: hard - -"tree-kill@npm:1.2.2": - version: 1.2.2 - resolution: "tree-kill@npm:1.2.2" - bin: - tree-kill: cli.js - checksum: 10c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 - languageName: node - linkType: hard - -"ts-api-utils@npm:^1.0.1": - version: 1.4.3 - resolution: "ts-api-utils@npm:1.4.3" - peerDependencies: - typescript: ">=4.2.0" - checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a - languageName: node - linkType: hard - -"ts-api-utils@npm:^2.4.0": - version: 2.4.0 - resolution: "ts-api-utils@npm:2.4.0" - peerDependencies: - typescript: ">=4.8.4" - checksum: 10c0/ed185861aef4e7124366a3f6561113557a57504267d4d452a51e0ba516a9b6e713b56b4aeaab9fa13de9db9ab755c65c8c13a777dba9133c214632cb7b65c083 - languageName: node - linkType: hard - -"ts-command-line-args@npm:^2.2.0": - version: 2.5.1 - resolution: "ts-command-line-args@npm:2.5.1" - dependencies: - chalk: "npm:^4.1.0" - command-line-args: "npm:^5.1.1" - command-line-usage: "npm:^6.1.0" - string-format: "npm:^2.0.0" - bin: - write-markdown: dist/write-markdown.js - checksum: 10c0/affb43fd4e17b496b6fd195888c7a80e6d7fe54f121501926bb2376f2167c238f7fa8f2e2d98bf2498ff883240d9f914e3558701807f40dca882616a8fd763b1 - languageName: node - linkType: hard - -"ts-essentials@npm:^10.0.2": - version: 10.1.1 - resolution: "ts-essentials@npm:10.1.1" - peerDependencies: - typescript: ">=4.5.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/8c59148a03eae086e7b1454fa6895e94e2f71385089ccda7e1f720a586749ede7e49ff7338e5f27e44a79f4bed740cc5dc3ad59313769bec028a85fa985685ff - languageName: node - linkType: hard - -"ts-essentials@npm:^7.0.1": - version: 7.0.3 - resolution: "ts-essentials@npm:7.0.3" - peerDependencies: - typescript: ">=3.7.0" - checksum: 10c0/ea1919534ec6ce4ca4d9cb0ff1ab8e053509237da8d4298762ab3bfba4e78ca5649a599ce78a5c7c2624f3a7a971f62b265b7b0c3c881336e4fa6acaf6f37544 - languageName: node - linkType: hard - -"ts-jest@npm:^29.4.6": - version: 29.4.6 - resolution: "ts-jest@npm:29.4.6" - dependencies: - bs-logger: "npm:^0.2.6" - fast-json-stable-stringify: "npm:^2.1.0" - handlebars: "npm:^4.7.8" - json5: "npm:^2.2.3" - lodash.memoize: "npm:^4.1.2" - make-error: "npm:^1.3.6" - semver: "npm:^7.7.3" - type-fest: "npm:^4.41.0" - yargs-parser: "npm:^21.1.1" - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/transform": ^29.0.0 || ^30.0.0 - "@jest/types": ^29.0.0 || ^30.0.0 - babel-jest: ^29.0.0 || ^30.0.0 - jest: ^29.0.0 || ^30.0.0 - jest-util: ^29.0.0 || ^30.0.0 - typescript: ">=4.3 <6" - peerDependenciesMeta: - "@babel/core": - optional: true - "@jest/transform": - optional: true - "@jest/types": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - jest-util: - optional: true - bin: - ts-jest: cli.js - checksum: 10c0/013dda99ac938cd4b94bae9323ed1b633cd295976c256d596d01776866188078fe7b82b8b3ebd05deb401b27b5618d9d76208eded2568661240ecf9694a5c933 - languageName: node - linkType: hard - -"ts-loader@npm:^9.4.3": - version: 9.5.4 - resolution: "ts-loader@npm:9.5.4" - dependencies: - chalk: "npm:^4.1.0" - enhanced-resolve: "npm:^5.0.0" - micromatch: "npm:^4.0.0" - semver: "npm:^7.3.4" - source-map: "npm:^0.7.4" - peerDependencies: - typescript: "*" - webpack: ^5.0.0 - checksum: 10c0/f0982404b43628c335d3b3a60ac3f1738385da7b97c3f04cb5ad2ebad791597be39b25c8a4e158a66173f9bd9f5aa72e285b046b0573e4beed8ecd032d418e4d - languageName: node - linkType: hard - -"ts-node@npm:^10.9.0, ts-node@npm:^10.9.1, ts-node@npm:^10.9.2": - version: 10.9.2 - resolution: "ts-node@npm:10.9.2" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 - languageName: node - linkType: hard - -"tsconfig-paths-webpack-plugin@npm:4.2.0": - version: 4.2.0 - resolution: "tsconfig-paths-webpack-plugin@npm:4.2.0" - dependencies: - chalk: "npm:^4.1.0" - enhanced-resolve: "npm:^5.7.0" - tapable: "npm:^2.2.1" - tsconfig-paths: "npm:^4.1.2" - checksum: 10c0/495c5ab7c1cb079217d98fe25d61def01e4bab38047c7ab25ec11876cc8c697ff01f43ea6c9933181875e51e49835407fc71afd92ea6cca1ba1bebf513dfb510 - languageName: node - linkType: hard - -"tsconfig-paths@npm:4.2.0, tsconfig-paths@npm:^4.1.2, tsconfig-paths@npm:^4.2.0": - version: 4.2.0 - resolution: "tsconfig-paths@npm:4.2.0" - dependencies: - json5: "npm:^2.2.2" - minimist: "npm:^1.2.6" - strip-bom: "npm:^3.0.0" - checksum: 10c0/09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea - languageName: node - linkType: hard - -"tslib@npm:2.7.0": - version: 2.7.0 - resolution: "tslib@npm:2.7.0" - checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 - languageName: node - linkType: hard - -"tslib@npm:2.8.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0": - version: 2.8.1 - resolution: "tslib@npm:2.8.1" - checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 - languageName: node - linkType: hard - -"tslib@npm:^1.9.3": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 - languageName: node - linkType: hard - -"tsort@npm:0.0.1": - version: 0.0.1 - resolution: "tsort@npm:0.0.1" - checksum: 10c0/ea3d034ab341dd9282c972710496e98539408d77f1cd476ad0551a9731f40586b65ab917b39745f902bf32037a3161eee3821405f6ab15bcd2ce4cc0a52d1da6 - languageName: node - linkType: hard - -"tweetnacl@npm:1.0.3": - version: 1.0.3 - resolution: "tweetnacl@npm:1.0.3" - checksum: 10c0/069d9df51e8ad4a89fbe6f9806c68e06c65be3c7d42f0701cc43dba5f0d6064686b238bbff206c5addef8854e3ce00c643bff59432ea2f2c639feab0ee1a93f9 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: "npm:^1.2.1" - checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 - languageName: node - linkType: hard - -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: "npm:~1.1.2" - checksum: 10c0/776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 - languageName: node - linkType: hard - -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd - languageName: node - linkType: hard - -"type-detect@npm:^4.0.0, type-detect@npm:^4.1.0": - version: 4.1.0 - resolution: "type-detect@npm:4.1.0" - checksum: 10c0/df8157ca3f5d311edc22885abc134e18ff8ffbc93d6a9848af5b682730ca6a5a44499259750197250479c5331a8a75b5537529df5ec410622041650a7f293e2a - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 - languageName: node - linkType: hard - -"type-fest@npm:^0.7.1": - version: 0.7.1 - resolution: "type-fest@npm:0.7.1" - checksum: 10c0/ce6b5ef806a76bf08d0daa78d65e61f24d9a0380bd1f1df36ffb61f84d14a0985c3a921923cf4b97831278cb6fa9bf1b89c751df09407e0510b14e8c081e4e0f - languageName: node - linkType: hard - -"type-fest@npm:^4.41.0": - version: 4.41.0 - resolution: "type-fest@npm:4.41.0" - checksum: 10c0/f5ca697797ed5e88d33ac8f1fec21921839871f808dc59345c9cf67345bfb958ce41bd821165dbf3ae591cedec2bf6fe8882098dfdd8dc54320b859711a2c1e4 - languageName: node - linkType: hard - -"type-is@npm:^1.6.18, type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: "npm:0.3.0" - mime-types: "npm:~2.1.24" - checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d - languageName: node - linkType: hard - -"typechain@npm:^8.3.2": - version: 8.3.2 - resolution: "typechain@npm:8.3.2" - dependencies: - "@types/prettier": "npm:^2.1.1" - debug: "npm:^4.3.1" - fs-extra: "npm:^7.0.0" - glob: "npm:7.1.7" - js-sha3: "npm:^0.8.0" - lodash: "npm:^4.17.15" - mkdirp: "npm:^1.0.4" - prettier: "npm:^2.3.1" - ts-command-line-args: "npm:^2.2.0" - ts-essentials: "npm:^7.0.1" - peerDependencies: - typescript: ">=4.3.0" - bin: - typechain: dist/cli/cli.js - checksum: 10c0/1ea660cc7c699c6ac68da67b76454eb4e9395c54666d924ca67f983ae8eb5b5e7dab0a576beb55dbfad75ea784a3f68cb1ca019d332293b7291731c156ead5b5 - languageName: node - linkType: hard - -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 - languageName: node - linkType: hard - -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 10c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 - languageName: node - linkType: hard - -"typescript-eslint@npm:^8.50.0": - version: 8.56.0 - resolution: "typescript-eslint@npm:8.56.0" - dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.56.0" - "@typescript-eslint/parser": "npm:8.56.0" - "@typescript-eslint/typescript-estree": "npm:8.56.0" - "@typescript-eslint/utils": "npm:8.56.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/13c47bb4a82d6714d482e96991faf2895c45a8e74235191a2ebbd36272487595c0824d128958942a1d1d18eddf8ca40c5850e2e314958a0a2e3c40be92f2d5a0 - languageName: node - linkType: hard - -"typescript@npm:5.7.2": - version: 5.7.2 - resolution: "typescript@npm:5.7.2" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 - languageName: node - linkType: hard - -"typescript@npm:^5.0.0, typescript@npm:^5.1.3, typescript@npm:^5.9.3": - version: 5.9.3 - resolution: "typescript@npm:5.9.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.7.2#optional!builtin": - version: 5.7.2 - resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=5786d5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/f3b8082c9d1d1629a215245c9087df56cb784f9fb6f27b5d55577a20e68afe2a889c040aacff6d27e35be165ecf9dca66e694c42eb9a50b3b2c451b36b5675cb - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A^5.0.0#optional!builtin, typescript@patch:typescript@npm%3A^5.1.3#optional!builtin, typescript@patch:typescript@npm%3A^5.9.3#optional!builtin": - version: 5.9.3 - resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430 - languageName: node - linkType: hard - -"typical@npm:^4.0.0": - version: 4.0.0 - resolution: "typical@npm:4.0.0" - checksum: 10c0/f300b198fb9fe743859b75ec761d53c382723dc178bbce4957d9cb754f2878a44ce17dc0b6a5156c52be1065449271f63754ba594dac225b80ce3aa39f9241ed - languageName: node - linkType: hard - -"typical@npm:^5.2.0": - version: 5.2.0 - resolution: "typical@npm:5.2.0" - checksum: 10c0/1cceaa20d4b77a02ab8eccfe4a20500729431aecc1e1b7dc70c0e726e7966efdca3bf0b4bee285555b751647e37818fd99154ea73f74b5c29adc95d3c13f5973 - languageName: node - linkType: hard - -"uglify-js@npm:^3.1.4": - version: 3.19.3 - resolution: "uglify-js@npm:3.19.3" - bin: - uglifyjs: bin/uglifyjs - checksum: 10c0/83b0a90eca35f778e07cad9622b80c448b6aad457c9ff8e568afed978212b42930a95f9e1be943a1ffa4258a3340fbb899f41461131c05bb1d0a9c303aed8479 - languageName: node - linkType: hard - -"uid@npm:2.0.2": - version: 2.0.2 - resolution: "uid@npm:2.0.2" - dependencies: - "@lukeed/csprng": "npm:^1.0.0" - checksum: 10c0/e9d02d0562c74e74b5a2519e586db9d7f8204978e476cddd191ee1a9efb85efafdbab2dbf3fc3dde0f5da01fd9da161f37d604dabf513447fd2c03d008f1324c - languageName: node - linkType: hard - -"uint8array-extras@npm:^1.4.0": - version: 1.5.0 - resolution: "uint8array-extras@npm:1.5.0" - checksum: 10c0/0e74641ac7dadb02eadefc1ccdadba6010e007757bda824960de3c72bbe2b04e6d3af75648441f412148c4103261d54fcb60be45a2863beb76643a55fddba3bd - languageName: node - linkType: hard - -"undici-types@npm:~6.19.2": - version: 6.19.8 - resolution: "undici-types@npm:6.19.8" - checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 - languageName: node - linkType: hard - -"undici-types@npm:~6.21.0, undici-types@npm:~7.16.0": - version: 7.16.0 - resolution: "undici-types@npm:7.16.0" - checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a - languageName: node - linkType: hard - -"undici@npm:^5.14.0": - version: 5.29.0 - resolution: "undici@npm:5.29.0" - dependencies: - "@fastify/busboy": "npm:^2.0.0" - checksum: 10c0/e4e4d631ca54ee0ad82d2e90e7798fa00a106e27e6c880687e445cc2f13b4bc87c5eba2a88c266c3eecffb18f26e227b778412da74a23acc374fca7caccec49b - languageName: node - linkType: hard - -"undici@npm:^6.16.1": - version: 6.22.0 - resolution: "undici@npm:6.22.0" - checksum: 10c0/47903c489d73e26bd47960cf2f04d63282ed050818b672cb05f8dfb6403381b850cf1b1751832654fd3af22aacd9d780e5e61aff563cd97943f5c4f10d5b3e23 - languageName: node - linkType: hard - -"unique-filename@npm:^5.0.0": - version: 5.0.0 - resolution: "unique-filename@npm:5.0.0" - dependencies: - unique-slug: "npm:^6.0.0" - checksum: 10c0/afb897e9cf4c2fb622ea716f7c2bb462001928fc5f437972213afdf1cc32101a230c0f1e9d96fc91ee5185eca0f2feb34127145874975f347be52eb91d6ccc2c - languageName: node - linkType: hard - -"unique-slug@npm:^6.0.0": - version: 6.0.0 - resolution: "unique-slug@npm:6.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/da7ade4cb04eb33ad0499861f82fe95ce9c7c878b7139dc54d140ecfb6a6541c18a5c8dac16188b8b379fe62c0c1f1b710814baac910cde5f4fec06212126c6a - languageName: node - linkType: hard - -"universal-user-agent@npm:^7.0.0, universal-user-agent@npm:^7.0.2": - version: 7.0.3 - resolution: "universal-user-agent@npm:7.0.3" - checksum: 10c0/6043be466a9bb96c0ce82392842d9fddf4c37e296f7bacc2cb25f47123990eb436c82df824644f9c5070a94dbdb117be17f66d54599ab143648ec57ef93dbcc8 - languageName: node - linkType: hard - -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c - languageName: node - linkType: hard - -"unrs-resolver@npm:^1.7.11": - version: 1.11.1 - resolution: "unrs-resolver@npm:1.11.1" - dependencies: - "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.1" - "@unrs/resolver-binding-android-arm64": "npm:1.11.1" - "@unrs/resolver-binding-darwin-arm64": "npm:1.11.1" - "@unrs/resolver-binding-darwin-x64": "npm:1.11.1" - "@unrs/resolver-binding-freebsd-x64": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.1" - "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.1" - "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.1" - "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.1" - "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.1" - "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.1" - "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.1" - napi-postinstall: "npm:^0.3.0" - dependenciesMeta: - "@unrs/resolver-binding-android-arm-eabi": - optional: true - "@unrs/resolver-binding-android-arm64": - optional: true - "@unrs/resolver-binding-darwin-arm64": - optional: true - "@unrs/resolver-binding-darwin-x64": - optional: true - "@unrs/resolver-binding-freebsd-x64": - optional: true - "@unrs/resolver-binding-linux-arm-gnueabihf": - optional: true - "@unrs/resolver-binding-linux-arm-musleabihf": - optional: true - "@unrs/resolver-binding-linux-arm64-gnu": - optional: true - "@unrs/resolver-binding-linux-arm64-musl": - optional: true - "@unrs/resolver-binding-linux-ppc64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-musl": - optional: true - "@unrs/resolver-binding-linux-s390x-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-musl": - optional: true - "@unrs/resolver-binding-wasm32-wasi": - optional: true - "@unrs/resolver-binding-win32-arm64-msvc": - optional: true - "@unrs/resolver-binding-win32-ia32-msvc": - optional: true - "@unrs/resolver-binding-win32-x64-msvc": - optional: true - checksum: 10c0/c91b112c71a33d6b24e5c708dab43ab80911f2df8ee65b87cd7a18fb5af446708e98c4b415ca262026ad8df326debcc7ca6a801b2935504d87fd6f0b9d70dce1 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.2.0": - version: 1.2.3 - resolution: "update-browserslist-db@npm:1.2.3" - dependencies: - escalade: "npm:^3.2.0" - picocolors: "npm:^1.1.1" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: "npm:^2.1.0" - checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c - languageName: node - linkType: hard - -"urijs@npm:^1.19.1": - version: 1.19.11 - resolution: "urijs@npm:1.19.11" - checksum: 10c0/96e15eea5b41a99361d506e4d8fcc64dc43f334bd5fd34e08261467b6954b97a6b45929a8d6c79e2dc76aadfd6ca950e0f4bd7f3c0757a08978429634d07eda1 - languageName: node - linkType: hard - -"utf8@npm:3.0.0": - version: 3.0.0 - resolution: "utf8@npm:3.0.0" - checksum: 10c0/675d008bab65fc463ce718d5cae8fd4c063540f269e4f25afebce643098439d53e7164bb1f193e0c3852825c7e3e32fbd8641163d19a618dbb53f1f09acb0d5a - languageName: node - linkType: hard - -"utif2@npm:^4.1.0": - version: 4.1.0 - resolution: "utif2@npm:4.1.0" - dependencies: - pako: "npm:^1.0.11" - checksum: 10c0/c60fd91427548f6b866b66fa983d7f08347aef0ac4c5b85b517dd70a5b0031548f3496e55dad28435031534fda0d237673d881636ff60845bf4a014dc9edf676 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1, utils-merge@npm:^1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 - languageName: node - linkType: hard - -"uuid@npm:*, uuid@npm:^13.0.0": - version: 13.0.0 - resolution: "uuid@npm:13.0.0" - bin: - uuid: dist-node/bin/uuid - checksum: 10c0/950e4c18d57fef6c69675344f5700a08af21e26b9eff2bf2180427564297368c538ea11ac9fb2e6528b17fc3966a9fd2c5049361b0b63c7d654f3c550c9b3d67 - languageName: node - linkType: hard - -"uuid@npm:11.1.0": - version: 11.1.0 - resolution: "uuid@npm:11.1.0" - bin: - uuid: dist/esm/bin/uuid - checksum: 10c0/34aa51b9874ae398c2b799c88a127701408cd581ee89ec3baa53509dd8728cbb25826f2a038f9465f8b7be446f0fbf11558862965b18d21c993684297628d4d3 - languageName: node - linkType: hard - -"uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 - languageName: node - linkType: hard - -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^9.0.1": - version: 9.3.0 - resolution: "v8-to-istanbul@npm:9.3.0" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.12" - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^2.0.0" - checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 - languageName: node - linkType: hard - -"validator@npm:^13.15.20": - version: 13.15.26 - resolution: "validator@npm:13.15.26" - checksum: 10c0/d66041685c531423f6b514d0481228503b96682fe30ed7925ad77ff3cd08c3983dc94f45e18457e44f62f89027b94a3342009d65421800ce65f6e0d2c6eaf7fc - languageName: node - linkType: hard - -"vary@npm:^1, vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f - languageName: node - linkType: hard - -"viem@npm:^2.43.2, viem@npm:^2.43.3": - version: 2.46.2 - resolution: "viem@npm:2.46.2" - dependencies: - "@noble/curves": "npm:1.9.1" - "@noble/hashes": "npm:1.8.0" - "@scure/bip32": "npm:1.7.0" - "@scure/bip39": "npm:1.6.0" - abitype: "npm:1.2.3" - isows: "npm:1.0.7" - ox: "npm:0.12.4" - ws: "npm:8.18.3" - peerDependencies: - typescript: ">=5.0.4" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/f381da63d88aaa0755e140197b963d5f05d4db619cd265aa0d3ae17faf368344cabb552e724d1201d3867f9ab6bb0646732abd813bf0c500d8fab6bc607030ab - languageName: node - linkType: hard - -"walker@npm:^1.0.8": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: "npm:1.0.12" - checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e - languageName: node - linkType: hard - -"watchpack@npm:^2.4.1, watchpack@npm:^2.4.4": - version: 2.5.1 - resolution: "watchpack@npm:2.5.1" - dependencies: - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.1.2" - checksum: 10c0/dffbb483d1f61be90dc570630a1eb308581e2227d507d783b1d94a57ac7b705ecd9a1a4b73d73c15eab596d39874e5276a3d9cb88bbb698bafc3f8d08c34cf17 - languageName: node - linkType: hard - -"wcwidth@npm:^1.0.1": - version: 1.0.1 - resolution: "wcwidth@npm:1.0.1" - dependencies: - defaults: "npm:^1.0.3" - checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 - languageName: node - linkType: hard - -"web3-utils@npm:^1.3.6": - version: 1.10.4 - resolution: "web3-utils@npm:1.10.4" - dependencies: - "@ethereumjs/util": "npm:^8.1.0" - bn.js: "npm:^5.2.1" - ethereum-bloom-filters: "npm:^1.0.6" - ethereum-cryptography: "npm:^2.1.2" - ethjs-unit: "npm:0.1.6" - number-to-bn: "npm:1.7.0" - randombytes: "npm:^2.1.0" - utf8: "npm:3.0.0" - checksum: 10c0/fbd5c8ec71e944e9e66e3436dbd4446927c3edc95f81928723f9ac137e0d821c5cbb92dba0ed5bbac766f919f919c9d8e316e459c51d876d5188321642676677 - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db - languageName: node - linkType: hard - -"webidl-conversions@npm:^7.0.0": - version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0" - checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 - languageName: node - linkType: hard - -"webpack-node-externals@npm:3.0.0": - version: 3.0.0 - resolution: "webpack-node-externals@npm:3.0.0" - checksum: 10c0/9f645a4dc8e122dac43cdc8c1367d4b44af20c79632438b633acc1b4fe64ea7ba1ad6ab61bd0fc46e1b873158c48d8c7a25a489cdab1f31299f00eb3b81cfc61 - languageName: node - linkType: hard - -"webpack-sources@npm:^3.2.3, webpack-sources@npm:^3.3.3": - version: 3.3.3 - resolution: "webpack-sources@npm:3.3.3" - checksum: 10c0/ab732f6933b513ba4d505130418995ddef6df988421fccf3289e53583c6a39e205c4a0739cee98950964552d3006604912679c736031337fb4a9d78d8576ed40 - languageName: node - linkType: hard - -"webpack@npm:5.97.1": - version: 5.97.1 - resolution: "webpack@npm:5.97.1" - dependencies: - "@types/eslint-scope": "npm:^3.7.7" - "@types/estree": "npm:^1.0.6" - "@webassemblyjs/ast": "npm:^1.14.1" - "@webassemblyjs/wasm-edit": "npm:^1.14.1" - "@webassemblyjs/wasm-parser": "npm:^1.14.1" - acorn: "npm:^8.14.0" - browserslist: "npm:^4.24.0" - chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.17.1" - es-module-lexer: "npm:^1.2.1" - eslint-scope: "npm:5.1.1" - events: "npm:^3.2.0" - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.2.11" - json-parse-even-better-errors: "npm:^2.3.1" - loader-runner: "npm:^4.2.0" - mime-types: "npm:^2.1.27" - neo-async: "npm:^2.6.2" - schema-utils: "npm:^3.2.0" - tapable: "npm:^2.1.1" - terser-webpack-plugin: "npm:^5.3.10" - watchpack: "npm:^2.4.1" - webpack-sources: "npm:^3.2.3" - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 10c0/a12d3dc882ca582075f2c4bd88840be8307427245c90a8a0e0b372d73560df13fcf25a61625c9e7edc964981d16b5a8323640562eb48347cf9dd2f8bd1b39d35 - languageName: node - linkType: hard - -"webpack@npm:^5.0.0": - version: 5.104.1 - resolution: "webpack@npm:5.104.1" - dependencies: - "@types/eslint-scope": "npm:^3.7.7" - "@types/estree": "npm:^1.0.8" - "@types/json-schema": "npm:^7.0.15" - "@webassemblyjs/ast": "npm:^1.14.1" - "@webassemblyjs/wasm-edit": "npm:^1.14.1" - "@webassemblyjs/wasm-parser": "npm:^1.14.1" - acorn: "npm:^8.15.0" - acorn-import-phases: "npm:^1.0.3" - browserslist: "npm:^4.28.1" - chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.17.4" - es-module-lexer: "npm:^2.0.0" - eslint-scope: "npm:5.1.1" - events: "npm:^3.2.0" - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.2.11" - json-parse-even-better-errors: "npm:^2.3.1" - loader-runner: "npm:^4.3.1" - mime-types: "npm:^2.1.27" - neo-async: "npm:^2.6.2" - schema-utils: "npm:^4.3.3" - tapable: "npm:^2.3.0" - terser-webpack-plugin: "npm:^5.3.16" - watchpack: "npm:^2.4.4" - webpack-sources: "npm:^3.3.3" - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 10c0/ea78c57f80bbd7684f4f1bb38a18408ab0ef4c5b962e25ad382c595d10b9e9701e077f5248a8cef5f127a55902698664c18837e64243bb972fbecf4e5d9aaab0 - languageName: node - linkType: hard - -"whatwg-url@npm:^14.1.0": - version: 14.2.0 - resolution: "whatwg-url@npm:14.2.0" - dependencies: - tr46: "npm:^5.1.0" - webidl-conversions: "npm:^7.0.0" - checksum: 10c0/f746fc2f4c906607d09537de1227b13f9494c171141e5427ed7d2c0dd0b6a48b43d8e71abaae57d368d0c06b673fd8ec63550b32ad5ed64990c7b0266c2b4272 - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: "npm:~0.0.3" - webidl-conversions: "npm:^3.0.0" - checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.16": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - for-each: "npm:^0.3.5" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f - languageName: node - linkType: hard - -"which@npm:^1.1.1, which@npm:^1.3.1": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: "npm:^2.0.0" - bin: - which: ./bin/which - checksum: 10c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 - languageName: node - linkType: hard - -"which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f - languageName: node - linkType: hard - -"which@npm:^6.0.0": - version: 6.0.1 - resolution: "which@npm:6.0.1" - dependencies: - isexe: "npm:^4.0.0" - bin: - node-which: bin/which.js - checksum: 10c0/7e710e54ea36d2d6183bee2f9caa27a3b47b9baf8dee55a199b736fcf85eab3b9df7556fca3d02b50af7f3dfba5ea3a45644189836df06267df457e354da66d5 - languageName: node - linkType: hard - -"widest-line@npm:^3.1.0": - version: 3.1.0 - resolution: "widest-line@npm:3.1.0" - dependencies: - string-width: "npm:^4.0.0" - checksum: 10c0/b1e623adcfb9df35350dd7fc61295d6d4a1eaa65a406ba39c4b8360045b614af95ad10e05abf704936ed022569be438c4bfa02d6d031863c4166a238c301119f - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.5, word-wrap@npm:~1.2.3": - version: 1.2.5 - resolution: "word-wrap@npm:1.2.5" - checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 - languageName: node - linkType: hard - -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 - languageName: node - linkType: hard - -"wordwrapjs@npm:^4.0.0": - version: 4.0.1 - resolution: "wordwrapjs@npm:4.0.1" - dependencies: - reduce-flatten: "npm:^2.0.0" - typical: "npm:^5.2.0" - checksum: 10c0/4cc43eb0f6adb7214d427e68918357a9df483815efbb4c59beb30972714b1804ede2a551b1dfd2234c0bd413c6f07d6daa6522d1c53f43f89a376d815fbf3c43 - languageName: node - linkType: hard - -"workerpool@npm:^6.5.1": - version: 6.5.1 - resolution: "workerpool@npm:6.5.1" - checksum: 10c0/58e8e969782292cb3a7bfba823f1179a7615250a0cefb4841d5166234db1880a3d0fe83a31dd8d648329ec92c2d0cd1890ad9ec9e53674bb36ca43e9753cdeac - languageName: node - linkType: hard - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da - languageName: node - linkType: hard - -"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: "npm:^6.1.0" - string-width: "npm:^5.0.1" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 - languageName: node - linkType: hard - -"write-file-atomic@npm:^5.0.1": - version: 5.0.1 - resolution: "write-file-atomic@npm:5.0.1" - dependencies: - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^4.0.1" - checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d - languageName: node - linkType: hard - -"ws@npm:8.17.1": - version: 8.17.1 - resolution: "ws@npm:8.17.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe - languageName: node - linkType: hard - -"ws@npm:8.18.0": - version: 8.18.0 - resolution: "ws@npm:8.18.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 - languageName: node - linkType: hard - -"ws@npm:8.18.3": - version: 8.18.3 - resolution: "ws@npm:8.18.3" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 - languageName: node - linkType: hard - -"ws@npm:^7.4.6": - version: 7.5.10 - resolution: "ws@npm:7.5.10" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/bd7d5f4aaf04fae7960c23dcb6c6375d525e00f795dd20b9385902bd008c40a94d3db3ce97d878acc7573df852056ca546328b27b39f47609f80fb22a0a9b61d - languageName: node - linkType: hard - -"xml-parse-from-string@npm:^1.0.0": - version: 1.0.1 - resolution: "xml-parse-from-string@npm:1.0.1" - checksum: 10c0/485fd096818c360dce4a115444f2157a4ab61b0ec99753b0381ce40a26978dc2eceb8079bcbbbd5cd570901cd7aa7310cad3d5c47084602a5dbf7e530a59edda - languageName: node - linkType: hard - -"xml2js@npm:^0.5.0": - version: 0.5.0 - resolution: "xml2js@npm:0.5.0" - dependencies: - sax: "npm:>=0.6.0" - xmlbuilder: "npm:~11.0.0" - checksum: 10c0/c9cd07cd19c5e41c740913bbbf16999a37a204488e11f86eddc2999707d43967197e257014d7ed72c8fc4348c192fa47eb352d1d9d05637cefd0d2e24e9aa4c8 - languageName: node - linkType: hard - -"xml2js@npm:^0.6.2": - version: 0.6.2 - resolution: "xml2js@npm:0.6.2" - dependencies: - sax: "npm:>=0.6.0" - xmlbuilder: "npm:~11.0.0" - checksum: 10c0/e98a84e9c172c556ee2c5afa0fc7161b46919e8b53ab20de140eedea19903ed82f7cd5b1576fb345c84f0a18da1982ddf65908129b58fc3d7cbc658ae232108f - languageName: node - linkType: hard - -"xmlbuilder@npm:~11.0.0": - version: 11.0.1 - resolution: "xmlbuilder@npm:11.0.1" - checksum: 10c0/74b979f89a0a129926bc786b913459bdbcefa809afaa551c5ab83f89b1915bdaea14c11c759284bb9b931e3b53004dbc2181e21d3ca9553eeb0b2a7b4e40c35b - languageName: node - linkType: hard - -"xtend@npm:^4.0.2": - version: 4.0.2 - resolution: "xtend@npm:4.0.2" - checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 - languageName: node - linkType: hard - -"yallist@npm:^3.0.2": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a - languageName: node - linkType: hard - -"yallist@npm:^5.0.0": - version: 5.0.0 - resolution: "yallist@npm:5.0.0" - checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 - languageName: node - linkType: hard - -"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 - languageName: node - linkType: hard - -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 - languageName: node - linkType: hard - -"yargs-unparser@npm:^2.0.0": - version: 2.0.0 - resolution: "yargs-unparser@npm:2.0.0" - dependencies: - camelcase: "npm:^6.0.0" - decamelize: "npm:^4.0.0" - flat: "npm:^5.0.2" - is-plain-obj: "npm:^2.1.0" - checksum: 10c0/a5a7d6dc157efa95122e16780c019f40ed91d4af6d2bac066db8194ed0ec5c330abb115daa5a79ff07a9b80b8ea80c925baacf354c4c12edd878c0529927ff03 - languageName: node - linkType: hard - -"yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: "npm:^7.0.2" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.0" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^20.2.2" - checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 - languageName: node - linkType: hard - -"yargs@npm:^17.7.2": - version: 17.7.2 - resolution: "yargs@npm:17.7.2" - dependencies: - cliui: "npm:^8.0.1" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.3" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^21.1.1" - checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 - languageName: node - linkType: hard - -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f - languageName: node - linkType: hard - -"zod@npm:^3.23.8": - version: 3.25.76 - resolution: "zod@npm:3.25.76" - checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c - languageName: node - linkType: hard +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@^1.11.0": + version "1.11.1" + resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz" + integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@angular-devkit/core@17.3.11": + version "17.3.11" + resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz" + integrity sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ== + dependencies: + ajv "8.12.0" + ajv-formats "2.1.1" + jsonc-parser "3.2.1" + picomatch "4.0.1" + rxjs "7.8.1" + source-map "0.7.4" + +"@angular-devkit/schematics-cli@17.3.11": + version "17.3.11" + resolved "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-17.3.11.tgz" + integrity sha512-kcOMqp+PHAKkqRad7Zd7PbpqJ0LqLaNZdY1+k66lLWmkEBozgq8v4ASn/puPWf9Bo0HpCiK+EzLf0VHE8Z/y6Q== + dependencies: + "@angular-devkit/core" "17.3.11" + "@angular-devkit/schematics" "17.3.11" + ansi-colors "4.1.3" + inquirer "9.2.15" + symbol-observable "4.0.0" + yargs-parser "21.1.1" + +"@angular-devkit/schematics@17.3.11": + version "17.3.11" + resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.11.tgz" + integrity sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ== + dependencies: + "@angular-devkit/core" "17.3.11" + jsonc-parser "3.2.1" + magic-string "0.30.8" + ora "5.4.1" + rxjs "7.8.1" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.27.2": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz" + integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0 || ^8.0.0-0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-beta.1", "@babel/core@^7.23.9", "@babel/core@^7.27.4", "@babel/core@>=7.0.0-beta.0 <8": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz" + integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.5" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.28.3" + "@babel/helpers" "^7.28.4" + "@babel/parser" "^7.28.5" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.27.5", "@babel/generator@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz" + integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== + dependencies: + "@babel/parser" "^7.28.5" + "@babel/types" "^7.28.5" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.28.3": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz" + integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.28.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helpers@^7.28.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz" + integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" + +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== + dependencies: + "@babel/types" "^7.28.5" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz" + integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.5" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.5" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.5" + debug "^4.3.1" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5": + version "7.28.5" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@borewit/text-codec@^0.1.0": + version "0.1.1" + resolved "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz" + integrity sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA== + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@contracts/arbitrum@*", "@contracts/arbitrum@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/arbitrum-contracts": + version "1.0.0" + resolved "file:packages/arbitrum-contracts" + dependencies: + "@openzeppelin/contracts" "5.4.0" + +"@contracts/creditcoin@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/creditcoin-contracts": + version "1.0.0" + resolved "file:packages/creditcoin-contracts" + dependencies: + "@openzeppelin/contracts" "5.4.0" + +"@contracts/mantle@*", "@contracts/mantle@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/contracts": + version "1.0.0" + resolved "file:packages/contracts" + dependencies: + "@openzeppelin/contracts" "5.4.0" + +"@contracts/stellar@*", "@contracts/stellar@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/stellar-contracts": + version "1.0.0" + resolved "file:packages/stellar-contracts" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.9.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/eslint-utils@^4.7.0", "@eslint-community/eslint-utils@^4.8.0": + version "4.9.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.12.2" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== + +"@eslint/config-array@^0.21.1": + version "0.21.1" + resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz" + integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== + dependencies: + "@eslint/object-schema" "^2.1.7" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/config-helpers@^0.4.2": + version "0.4.2" + resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz" + integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== + dependencies: + "@eslint/core" "^0.17.0" + +"@eslint/core@^0.17.0": + version "0.17.0" + resolved "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz" + integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/eslintrc@^3.3.1": + version "3.3.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz" + integrity sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.1" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@^9.39.2", "@eslint/js@9.39.2": + version "9.39.2" + resolved "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz" + integrity sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA== + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@eslint/object-schema@^2.1.7": + version "2.1.7" + resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz" + integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== + +"@eslint/plugin-kit@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz" + integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== + dependencies: + "@eslint/core" "^0.17.0" + levn "^0.4.1" + +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/rlp@^5.0.2": + version "5.0.2" + resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz" + integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== + +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + +"@ethereumjs/util@^9.1.0": + version "9.1.0" + resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz" + integrity sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog== + dependencies: + "@ethereumjs/rlp" "^5.0.2" + ethereum-cryptography "^2.2.1" + +"@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.8.0", "@ethersproject/abi@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz" + integrity sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q== + dependencies: + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/abstract-provider@^5.8.0", "@ethersproject/abstract-provider@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz" + integrity sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/networks" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/web" "^5.8.0" + +"@ethersproject/abstract-signer@^5.8.0", "@ethersproject/abstract-signer@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz" + integrity sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + +"@ethersproject/address@^5.0.2", "@ethersproject/address@^5.8.0", "@ethersproject/address@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz" + integrity sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + +"@ethersproject/base64@^5.8.0", "@ethersproject/base64@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz" + integrity sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ== + dependencies: + "@ethersproject/bytes" "^5.8.0" + +"@ethersproject/basex@^5.8.0", "@ethersproject/basex@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz" + integrity sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + +"@ethersproject/bignumber@^5.8.0", "@ethersproject/bignumber@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz" + integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.8.0", "@ethersproject/bytes@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz" + integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/constants@^5.8.0", "@ethersproject/constants@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz" + integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + +"@ethersproject/contracts@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz" + integrity sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ== + dependencies: + "@ethersproject/abi" "^5.8.0" + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + +"@ethersproject/hash@^5.8.0", "@ethersproject/hash@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz" + integrity sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/base64" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/hdnode@^5.8.0", "@ethersproject/hdnode@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz" + integrity sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/basex" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/pbkdf2" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/wordlists" "^5.8.0" + +"@ethersproject/json-wallets@^5.8.0", "@ethersproject/json-wallets@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz" + integrity sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hdnode" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/pbkdf2" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@^5.8.0", "@ethersproject/keccak256@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz" + integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng== + dependencies: + "@ethersproject/bytes" "^5.8.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.8.0", "@ethersproject/logger@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz" + integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== + +"@ethersproject/networks@^5.8.0", "@ethersproject/networks@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz" + integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/pbkdf2@^5.8.0", "@ethersproject/pbkdf2@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz" + integrity sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + +"@ethersproject/properties@^5.8.0", "@ethersproject/properties@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz" + integrity sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/providers@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz" + integrity sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/base64" "^5.8.0" + "@ethersproject/basex" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/networks" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/web" "^5.8.0" + bech32 "1.1.4" + ws "8.18.0" + +"@ethersproject/random@^5.8.0", "@ethersproject/random@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz" + integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/rlp@^5.8.0", "@ethersproject/rlp@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz" + integrity sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/sha2@^5.8.0", "@ethersproject/sha2@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz" + integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@^5.8.0", "@ethersproject/signing-key@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz" + integrity sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + bn.js "^5.2.1" + elliptic "6.6.1" + hash.js "1.1.7" + +"@ethersproject/solidity@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz" + integrity sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/strings@^5.8.0", "@ethersproject/strings@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz" + integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/transactions@^5.8.0", "@ethersproject/transactions@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz" + integrity sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg== + dependencies: + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + +"@ethersproject/units@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz" + integrity sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/wallet@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz" + integrity sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/hdnode" "^5.8.0" + "@ethersproject/json-wallets" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/wordlists" "^5.8.0" + +"@ethersproject/web@^5.8.0", "@ethersproject/web@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz" + integrity sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw== + dependencies: + "@ethersproject/base64" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/wordlists@^5.8.0", "@ethersproject/wordlists@5.8.0": + version "5.8.0" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz" + integrity sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.7" + resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz" + integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.4.0" + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== + +"@ioredis/commands@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz" + integrity sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz" + integrity sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + jest-message-util "30.2.0" + jest-util "30.2.0" + slash "^3.0.0" + +"@jest/core@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz" + integrity sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/pattern" "30.0.1" + "@jest/reporters" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + ci-info "^4.2.0" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-changed-files "30.2.0" + jest-config "30.2.0" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-resolve-dependencies "30.2.0" + jest-runner "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + jest-watcher "30.2.0" + micromatch "^4.0.8" + pretty-format "30.2.0" + slash "^3.0.0" + +"@jest/diff-sequences@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== + +"@jest/environment@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz" + integrity sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g== + dependencies: + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + jest-mock "30.2.0" + +"@jest/expect-utils@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz" + integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA== + dependencies: + "@jest/get-type" "30.1.0" + +"@jest/expect@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz" + integrity sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA== + dependencies: + expect "30.2.0" + jest-snapshot "30.2.0" + +"@jest/fake-timers@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz" + integrity sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw== + dependencies: + "@jest/types" "30.2.0" + "@sinonjs/fake-timers" "^13.0.0" + "@types/node" "*" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" + +"@jest/get-type@30.1.0": + version "30.1.0" + resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz" + integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== + +"@jest/globals@^28.0.0 || ^29.0.0 || ^30.0.0", "@jest/globals@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz" + integrity sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw== + dependencies: + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/types" "30.2.0" + jest-mock "30.2.0" + +"@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz" + integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== + dependencies: + "@types/node" "*" + jest-regex-util "30.0.1" + +"@jest/reporters@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz" + integrity sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@jridgewell/trace-mapping" "^0.3.25" + "@types/node" "*" + chalk "^4.1.2" + collect-v8-coverage "^1.0.2" + exit-x "^0.2.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^5.0.0" + istanbul-reports "^3.1.3" + jest-message-util "30.2.0" + jest-util "30.2.0" + jest-worker "30.2.0" + slash "^3.0.0" + string-length "^4.0.2" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@30.0.5": + version "30.0.5" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz" + integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== + dependencies: + "@sinclair/typebox" "^0.34.0" + +"@jest/snapshot-utils@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz" + integrity sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug== + dependencies: + "@jest/types" "30.2.0" + chalk "^4.1.2" + graceful-fs "^4.2.11" + natural-compare "^1.4.0" + +"@jest/source-map@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz" + integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + callsites "^3.1.0" + graceful-fs "^4.2.11" + +"@jest/test-result@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz" + integrity sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg== + dependencies: + "@jest/console" "30.2.0" + "@jest/types" "30.2.0" + "@types/istanbul-lib-coverage" "^2.0.6" + collect-v8-coverage "^1.0.2" + +"@jest/test-sequencer@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz" + integrity sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q== + dependencies: + "@jest/test-result" "30.2.0" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + slash "^3.0.0" + +"@jest/transform@^29.0.0 || ^30.0.0", "@jest/transform@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz" + integrity sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/types" "30.2.0" + "@jridgewell/trace-mapping" "^0.3.25" + babel-plugin-istanbul "^7.0.1" + chalk "^4.1.2" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-regex-util "30.0.1" + jest-util "30.2.0" + micromatch "^4.0.8" + pirates "^4.0.7" + slash "^3.0.0" + write-file-atomic "^5.0.1" + +"@jest/types@^29.0.0 || ^30.0.0", "@jest/types@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz" + integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg== + dependencies: + "@jest/pattern" "30.0.1" + "@jest/schemas" "30.0.5" + "@types/istanbul-lib-coverage" "^2.0.6" + "@types/istanbul-reports" "^3.0.4" + "@types/node" "*" + "@types/yargs" "^17.0.33" + chalk "^4.1.2" + +"@jimp/core@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz" + integrity sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w== + dependencies: + "@jimp/file-ops" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + await-to-js "^3.0.0" + exif-parser "^0.1.12" + file-type "^16.0.0" + mime "3" + +"@jimp/diff@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz" + integrity sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw== + dependencies: + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + pixelmatch "^5.3.0" + +"@jimp/file-ops@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz" + integrity sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ== + +"@jimp/js-bmp@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz" + integrity sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + bmp-ts "^1.0.9" + +"@jimp/js-gif@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz" + integrity sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + gifwrap "^0.10.1" + omggif "^1.0.10" + +"@jimp/js-jpeg@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz" + integrity sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + jpeg-js "^0.4.4" + +"@jimp/js-png@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz" + integrity sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + pngjs "^7.0.0" + +"@jimp/js-tiff@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz" + integrity sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + utif2 "^4.1.0" + +"@jimp/plugin-blit@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz" + integrity sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA== + dependencies: + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-blur@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz" + integrity sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/utils" "1.6.0" + +"@jimp/plugin-circle@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz" + integrity sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw== + dependencies: + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-color@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz" + integrity sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + tinycolor2 "^1.6.0" + zod "^3.23.8" + +"@jimp/plugin-contain@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz" + integrity sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/plugin-blit" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-cover@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz" + integrity sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/plugin-crop" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-crop@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz" + integrity sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-displace@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz" + integrity sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q== + dependencies: + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-dither@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz" + integrity sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ== + dependencies: + "@jimp/types" "1.6.0" + +"@jimp/plugin-fisheye@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz" + integrity sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA== + dependencies: + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-flip@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz" + integrity sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg== + dependencies: + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-hash@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz" + integrity sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/js-bmp" "1.6.0" + "@jimp/js-jpeg" "1.6.0" + "@jimp/js-png" "1.6.0" + "@jimp/js-tiff" "1.6.0" + "@jimp/plugin-color" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + any-base "^1.1.0" + +"@jimp/plugin-mask@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz" + integrity sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA== + dependencies: + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-print@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz" + integrity sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/js-jpeg" "1.6.0" + "@jimp/js-png" "1.6.0" + "@jimp/plugin-blit" "1.6.0" + "@jimp/types" "1.6.0" + parse-bmfont-ascii "^1.0.6" + parse-bmfont-binary "^1.0.6" + parse-bmfont-xml "^1.1.6" + simple-xml-to-json "^1.2.2" + zod "^3.23.8" + +"@jimp/plugin-quantize@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz" + integrity sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg== + dependencies: + image-q "^4.0.0" + zod "^3.23.8" + +"@jimp/plugin-resize@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz" + integrity sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/types" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-rotate@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz" + integrity sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/plugin-crop" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/plugin-threshold@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz" + integrity sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/plugin-color" "1.6.0" + "@jimp/plugin-hash" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + zod "^3.23.8" + +"@jimp/types@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz" + integrity sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg== + dependencies: + zod "^3.23.8" + +"@jimp/utils@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz" + integrity sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA== + dependencies: + "@jimp/types" "1.6.0" + tinycolor2 "^1.6.0" + +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.11" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz" + integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@ljharb/through@^2.3.12": + version "2.3.14" + resolved "https://registry.npmjs.org/@ljharb/through/-/through-2.3.14.tgz" + integrity sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A== + dependencies: + call-bind "^1.0.8" + +"@lukeed/csprng@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz" + integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== + +"@mantle/backend@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/backend": + version "0.0.1" + resolved "file:packages/backend" + dependencies: + "@mantle/contracts" "*" + "@nestjs/bullmq" "^11.0.4" + "@nestjs/common" "^10.0.0" + "@nestjs/config" "^4.0.2" + "@nestjs/core" "^10.0.0" + "@nestjs/jwt" "^11.0.2" + "@nestjs/mongoose" "^11.0.4" + "@nestjs/passport" "^11.0.5" + "@nestjs/platform-express" "^10.0.0" + "@nestjs/schedule" "^6.1.0" + "@nestjs/swagger" "^7.4.2" + "@octokit/rest" "^22.0.1" + "@openassets/types" "*" + "@stellar/stellar-sdk" "^14.5.0" + "@types/multer" "^2.0.0" + "@types/pdf-parse" "^1.1.5" + "@types/xml2js" "^0.4.14" + axios "^1.6.0" + bullmq "^5.66.2" + class-transformer "^0.5.1" + class-validator "^0.14.3" + fast-levenshtein "^3.0.0" + ioredis "^5.8.2" + jimp "^1.6.0" + jsqr "^1.4.0" + mongoose "^9.0.2" + passport "^0.7.0" + passport-jwt "^4.0.1" + pdf-parse "^2.4.5" + reflect-metadata "^0.1.13" + rxjs "^7.8.1" + swagger-ui-express "^5.0.1" + uuid "^13.0.0" + viem "^2.43.2" + xml2js "^0.6.2" + +"@microsoft/tsdoc@^0.15.0": + version "0.15.1" + resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz" + integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw== + +"@mongodb-js/saslprep@^1.3.0": + version "1.4.4" + resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.4.tgz" + integrity sha512-p7X/ytJDIdwUfFL/CLOhKgdfJe1Fa8uw9seJYvdOmnP9JBWGWHW69HkOixXS6Wy9yvGf1MbhcS6lVmrhy4jm2g== + dependencies: + sparse-bitfield "^3.0.3" + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz" + integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== + +"@napi-rs/canvas-darwin-arm64@0.1.80": + version "0.1.80" + resolved "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.80.tgz" + integrity sha512-O64APRTXRUiAz0P8gErkfEr3lipLJgM6pjATwavZ22ebhjYl/SUbpgM0xcWPQBNMP1n29afAC/Us5PX1vg+JNQ== + +"@napi-rs/canvas-darwin-arm64@0.1.85": + version "0.1.85" + +"@napi-rs/canvas@^0.1.80": + version "0.1.85" + optionalDependencies: + "@napi-rs/canvas-android-arm64" "0.1.85" + "@napi-rs/canvas-darwin-arm64" "0.1.85" + "@napi-rs/canvas-darwin-x64" "0.1.85" + "@napi-rs/canvas-linux-arm-gnueabihf" "0.1.85" + "@napi-rs/canvas-linux-arm64-gnu" "0.1.85" + "@napi-rs/canvas-linux-arm64-musl" "0.1.85" + "@napi-rs/canvas-linux-riscv64-gnu" "0.1.85" + "@napi-rs/canvas-linux-x64-gnu" "0.1.85" + "@napi-rs/canvas-linux-x64-musl" "0.1.85" + "@napi-rs/canvas-win32-arm64-msvc" "0.1.85" + "@napi-rs/canvas-win32-x64-msvc" "0.1.85" + +"@napi-rs/canvas@0.1.80": + version "0.1.80" + resolved "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.80.tgz" + integrity sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww== + optionalDependencies: + "@napi-rs/canvas-android-arm64" "0.1.80" + "@napi-rs/canvas-darwin-arm64" "0.1.80" + "@napi-rs/canvas-darwin-x64" "0.1.80" + "@napi-rs/canvas-linux-arm-gnueabihf" "0.1.80" + "@napi-rs/canvas-linux-arm64-gnu" "0.1.80" + "@napi-rs/canvas-linux-arm64-musl" "0.1.80" + "@napi-rs/canvas-linux-riscv64-gnu" "0.1.80" + "@napi-rs/canvas-linux-x64-gnu" "0.1.80" + "@napi-rs/canvas-linux-x64-musl" "0.1.80" + "@napi-rs/canvas-win32-x64-msvc" "0.1.80" + +"@nestjs/bull-shared@^11.0.4": + version "11.0.4" + resolved "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.4.tgz" + integrity sha512-VBJcDHSAzxQnpcDfA0kt9MTGUD1XZzfByV70su0W0eDCQ9aqIEBlzWRW21tv9FG9dIut22ysgDidshdjlnczLw== + dependencies: + tslib "2.8.1" + +"@nestjs/bullmq@^11.0.4": + version "11.0.4" + resolved "https://registry.npmjs.org/@nestjs/bullmq/-/bullmq-11.0.4.tgz" + integrity sha512-wBzK9raAVG0/6NTMdvLGM4/FQ1lsB35/pYS8L6a0SDgkTiLpd7mAjQ8R692oMx5s7IjvgntaZOuTUrKYLNfIkA== + dependencies: + "@nestjs/bull-shared" "^11.0.4" + tslib "2.8.1" + +"@nestjs/cli@^10.0.0": + version "10.4.9" + resolved "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.9.tgz" + integrity sha512-s8qYd97bggqeK7Op3iD49X2MpFtW4LVNLAwXFkfbRxKME6IYT7X0muNTJ2+QfI8hpbNx9isWkrLWIp+g5FOhiA== + dependencies: + "@angular-devkit/core" "17.3.11" + "@angular-devkit/schematics" "17.3.11" + "@angular-devkit/schematics-cli" "17.3.11" + "@nestjs/schematics" "^10.0.1" + chalk "4.1.2" + chokidar "3.6.0" + cli-table3 "0.6.5" + commander "4.1.1" + fork-ts-checker-webpack-plugin "9.0.2" + glob "10.4.5" + inquirer "8.2.6" + node-emoji "1.11.0" + ora "5.4.1" + tree-kill "1.2.2" + tsconfig-paths "4.2.0" + tsconfig-paths-webpack-plugin "4.2.0" + typescript "5.7.2" + webpack "5.97.1" + webpack-node-externals "3.0.0" + +"@nestjs/common@^10.0.0", "@nestjs/common@^10.0.0 || ^11.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", "@nestjs/common@^9.0.0 || ^10.0.0": + version "10.4.20" + resolved "https://registry.npmjs.org/@nestjs/common/-/common-10.4.20.tgz" + integrity sha512-hxJxZF7jcKGuUzM9EYbuES80Z/36piJbiqmPy86mk8qOn5gglFebBTvcx7PWVbRNSb4gngASYnefBj/Y2HAzpQ== + dependencies: + file-type "20.4.1" + iterare "1.2.1" + tslib "2.8.1" + uid "2.0.2" + +"@nestjs/config@^4.0.2": + version "4.0.2" + resolved "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz" + integrity sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA== + dependencies: + dotenv "16.4.7" + dotenv-expand "12.0.1" + lodash "4.17.21" + +"@nestjs/core@^10.0.0", "@nestjs/core@^10.0.0 || ^11.0.0", "@nestjs/core@^9.0.0 || ^10.0.0": + version "10.4.20" + resolved "https://registry.npmjs.org/@nestjs/core/-/core-10.4.20.tgz" + integrity sha512-kRdtyKA3+Tu70N3RQ4JgmO1E3LzAMs/eppj7SfjabC7TgqNWoS4RLhWl4BqmsNVmjj6D5jgfPVtHtgYkU3AfpQ== + dependencies: + "@nuxtjs/opencollective" "0.3.2" + fast-safe-stringify "2.1.1" + iterare "1.2.1" + path-to-regexp "3.3.0" + tslib "2.8.1" + uid "2.0.2" + +"@nestjs/jwt@^11.0.2": + version "11.0.2" + resolved "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.2.tgz" + integrity sha512-rK8aE/3/Ma45gAWfCksAXUNbOoSOUudU0Kn3rT39htPF7wsYXtKfjALKeKKJbFrIWbLjsbqfXX5bIJNvgBugGA== + dependencies: + "@types/jsonwebtoken" "9.0.10" + jsonwebtoken "9.0.3" + +"@nestjs/mapped-types@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz" + integrity sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg== + +"@nestjs/mongoose@^11.0.4": + version "11.0.4" + resolved "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-11.0.4.tgz" + integrity sha512-LUOlUeSOfbjdIu22QwOmczv2CzJQr9LUBo2mOfbXrGCu2svpr5Hiu71zBFrb/9UC+H8BjGMKbBOq1nEbMF6ZJA== + +"@nestjs/passport@^11.0.5": + version "11.0.5" + resolved "https://registry.npmjs.org/@nestjs/passport/-/passport-11.0.5.tgz" + integrity sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ== + +"@nestjs/platform-express@^10.0.0": + version "10.4.20" + resolved "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.20.tgz" + integrity sha512-rh97mX3rimyf4xLMLHuTOBKe6UD8LOJ14VlJ1F/PTd6C6ZK9Ak6EHuJvdaGcSFQhd3ZMBh3I6CuujKGW9pNdIg== + dependencies: + body-parser "1.20.3" + cors "2.8.5" + express "4.21.2" + multer "2.0.2" + tslib "2.8.1" + +"@nestjs/schedule@^6.1.0": + version "6.1.0" + resolved "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.0.tgz" + integrity sha512-W25Ydc933Gzb1/oo7+bWzzDiOissE+h/dhIAPugA39b9MuIzBbLybuXpc1AjoQLczO3v0ldmxaffVl87W0uqoQ== + dependencies: + cron "4.3.5" + +"@nestjs/schematics@^10.0.0": + version "10.2.3" + resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz" + integrity sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg== + dependencies: + "@angular-devkit/core" "17.3.11" + "@angular-devkit/schematics" "17.3.11" + comment-json "4.2.5" + jsonc-parser "3.3.1" + pluralize "8.0.0" + +"@nestjs/schematics@^10.0.1": + version "10.2.3" + resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz" + integrity sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg== + dependencies: + "@angular-devkit/core" "17.3.11" + "@angular-devkit/schematics" "17.3.11" + comment-json "4.2.5" + jsonc-parser "3.3.1" + pluralize "8.0.0" + +"@nestjs/swagger@^7.4.2": + version "7.4.2" + resolved "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.4.2.tgz" + integrity sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ== + dependencies: + "@microsoft/tsdoc" "^0.15.0" + "@nestjs/mapped-types" "2.0.5" + js-yaml "4.1.0" + lodash "4.17.21" + path-to-regexp "3.3.0" + swagger-ui-dist "5.17.14" + +"@nestjs/testing@^10.0.0": + version "10.4.20" + resolved "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.20.tgz" + integrity sha512-nMkRDukDKskdPruM6EsgMq7yJua+CPZM6I6FrLP8yXw8BiVSPv9Nm0CtcGGwt3kgZF9hfxKjGqLjsvVBsv6Vfw== + dependencies: + tslib "2.8.1" + +"@noble/ciphers@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz" + integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== + +"@noble/curves@^1.9.6": + version "1.9.7" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@~1.4.0", "@noble/curves@1.4.2": + version "1.4.2" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/curves@~1.8.1": + version "1.8.2" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz" + integrity sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g== + dependencies: + "@noble/hashes" "1.7.2" + +"@noble/curves@~1.9.0": + version "1.9.7" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz" + integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/hashes@^1.1.5", "@noble/hashes@^1.2.0", "@noble/hashes@^1.4.0", "@noble/hashes@^1.8.0", "@noble/hashes@~1.8.0", "@noble/hashes@1.8.0": + version "1.8.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + +"@noble/hashes@~1.2.0", "@noble/hashes@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/hashes@~1.4.0", "@noble/hashes@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/hashes@~1.7.1", "@noble/hashes@1.7.2": + version "1.7.2" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz" + integrity sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ== + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/secp256k1@~1.7.0": + version "1.7.2" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.2.tgz" + integrity sha512-/qzwYl5eFLH8OWIecQWM31qld2g1NfjgylK+TNhqtaUKP37Nm+Y+z30Fjhw0Ct8p9yCQEm2N3W/AckdIb3SMcQ== + +"@noble/secp256k1@1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nomicfoundation/edr-darwin-arm64@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-darwin-x64@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-linux-x64-musl@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.17": + version "0.12.0-next.17" + +"@nomicfoundation/edr@0.12.0-next.17": + version "0.12.0-next.17" + dependencies: + "@nomicfoundation/edr-darwin-arm64" "0.12.0-next.17" + "@nomicfoundation/edr-darwin-x64" "0.12.0-next.17" + "@nomicfoundation/edr-linux-arm64-gnu" "0.12.0-next.17" + "@nomicfoundation/edr-linux-arm64-musl" "0.12.0-next.17" + "@nomicfoundation/edr-linux-x64-gnu" "0.12.0-next.17" + "@nomicfoundation/edr-linux-x64-musl" "0.12.0-next.17" + "@nomicfoundation/edr-win32-x64-msvc" "0.12.0-next.17" + +"@nomicfoundation/hardhat-chai-matchers@^2.0.0", "@nomicfoundation/hardhat-chai-matchers@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.1.0.tgz" + integrity sha512-GPhBNafh1fCnVD9Y7BYvoLnblnvfcq3j8YDbO1gGe/1nOFWzGmV7gFu5DkwFXF+IpYsS+t96o9qc/mPu3V3Vfw== + dependencies: + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + +"@nomicfoundation/hardhat-errors@^3.0.0": + version "3.0.6" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.6.tgz" + integrity sha512-3x+OVdZv7Rgy3z6os9pB6kiHLxs6q0PCXHRu+WLZflr44PG9zW+7V9o+ehrUqmmivlHcIFr3Qh4M2wZVuoCYww== + dependencies: + "@nomicfoundation/hardhat-utils" "^3.0.1" + +"@nomicfoundation/hardhat-ethers@^3.0.0", "@nomicfoundation/hardhat-ethers@^3.0.8", "@nomicfoundation/hardhat-ethers@^3.1.0": + version "3.1.3" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.1.3.tgz" + integrity sha512-208JcDeVIl+7Wu3MhFUUtiA8TJ7r2Rn3Wr+lSx9PfsDTKkbsAsWPY6N6wQ4mtzDv0/pB9nIbJhkjoHe1EsgNsA== + dependencies: + debug "^4.1.1" + lodash.isequal "^4.5.0" + +"@nomicfoundation/hardhat-network-helpers@^1.0.0", "@nomicfoundation/hardhat-network-helpers@^1.0.12": + version "1.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.1.2.tgz" + integrity sha512-p7HaUVDbLj7ikFivQVNhnfMHUBgiHYMwQWvGn9AriieuopGOELIrwj2KjyM2a6z70zai5YKO264Vwz+3UFJZPQ== + dependencies: + ethereumjs-util "^7.1.4" + +"@nomicfoundation/hardhat-toolbox@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-3.0.0.tgz" + integrity sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA== + +"@nomicfoundation/hardhat-utils@^3.0.1", "@nomicfoundation/hardhat-utils@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.5.tgz" + integrity sha512-5zkQSuSxkwK7fQxKswJ1GGc/3AuWBSmxA7GhczTPLx28dAXQnubRU8nA48SkCkKesJq5x4TROP+XheSE2VkLUA== + dependencies: + "@streamparser/json-node" "^0.0.22" + debug "^4.3.2" + env-paths "^2.2.0" + ethereum-cryptography "^2.2.1" + fast-equals "^5.0.1" + json-stream-stringify "^3.1.6" + rfdc "^1.3.1" + undici "^6.16.1" + +"@nomicfoundation/hardhat-verify@^1.0.0", "@nomicfoundation/hardhat-verify@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-1.1.1.tgz" + integrity sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + lodash.clonedeep "^4.5.0" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + +"@nomicfoundation/hardhat-viem@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-viem/-/hardhat-viem-3.0.1.tgz" + integrity sha512-sUyi3Xn31vItf925YRgHp7x6FIFfG9B+jacWYyJ0RBi7BWCrC/aSUX4jRRmpzaZ4opLQ8KXAZdxS91Yka7AYtw== + dependencies: + "@nomicfoundation/hardhat-errors" "^3.0.0" + "@nomicfoundation/hardhat-utils" "^3.0.5" + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz" + integrity sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz" + integrity sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz" + integrity sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz" + integrity sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz" + integrity sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz" + integrity sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz" + integrity sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.2" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz" + integrity sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.2" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.2" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.2" + +"@nuxtjs/opencollective@0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" + integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== + dependencies: + chalk "^4.1.0" + consola "^2.15.0" + node-fetch "^2.6.1" + +"@octokit/auth-token@^6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz" + integrity sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w== + +"@octokit/core@^7.0.6", "@octokit/core@>=6": + version "7.0.6" + resolved "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz" + integrity sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q== + dependencies: + "@octokit/auth-token" "^6.0.0" + "@octokit/graphql" "^9.0.3" + "@octokit/request" "^10.0.6" + "@octokit/request-error" "^7.0.2" + "@octokit/types" "^16.0.0" + before-after-hook "^4.0.0" + universal-user-agent "^7.0.0" + +"@octokit/endpoint@^11.0.2": + version "11.0.2" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz" + integrity sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ== + dependencies: + "@octokit/types" "^16.0.0" + universal-user-agent "^7.0.2" + +"@octokit/graphql@^9.0.3": + version "9.0.3" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz" + integrity sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA== + dependencies: + "@octokit/request" "^10.0.6" + "@octokit/types" "^16.0.0" + universal-user-agent "^7.0.0" + +"@octokit/openapi-types@^27.0.0": + version "27.0.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz" + integrity sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA== + +"@octokit/plugin-paginate-rest@^14.0.0": + version "14.0.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz" + integrity sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw== + dependencies: + "@octokit/types" "^16.0.0" + +"@octokit/plugin-request-log@^6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz" + integrity sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q== + +"@octokit/plugin-rest-endpoint-methods@^17.0.0": + version "17.0.0" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz" + integrity sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw== + dependencies: + "@octokit/types" "^16.0.0" + +"@octokit/request-error@^7.0.2": + version "7.1.0" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz" + integrity sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw== + dependencies: + "@octokit/types" "^16.0.0" + +"@octokit/request@^10.0.6": + version "10.0.7" + resolved "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz" + integrity sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA== + dependencies: + "@octokit/endpoint" "^11.0.2" + "@octokit/request-error" "^7.0.2" + "@octokit/types" "^16.0.0" + fast-content-type-parse "^3.0.0" + universal-user-agent "^7.0.2" + +"@octokit/rest@^22.0.1": + version "22.0.1" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz" + integrity sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw== + dependencies: + "@octokit/core" "^7.0.6" + "@octokit/plugin-paginate-rest" "^14.0.0" + "@octokit/plugin-request-log" "^6.0.0" + "@octokit/plugin-rest-endpoint-methods" "^17.0.0" + +"@octokit/types@^16.0.0": + version "16.0.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz" + integrity sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg== + dependencies: + "@octokit/openapi-types" "^27.0.0" + +"@openassets/types@*", "@openassets/types@file:/Users/deadbytes/Documents/Hackathons/Mantle/rwa/packages/types": + version "1.0.0" + resolved "file:packages/types" + +"@openzeppelin/contracts@5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz" + integrity sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A== + +"@paralleldrive/cuid2@^2.2.2": + version "2.3.1" + resolved "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz" + integrity sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw== + dependencies: + "@noble/hashes" "^1.1.5" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.2.9": + version "0.2.9" + resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz" + integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== + +"@scure/base@~1.1.0", "@scure/base@~1.1.6": + version "1.1.9" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== + +"@scure/base@~1.2.5": + version "1.2.6" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== + +"@scure/bip32@^1.7.0", "@scure/bip32@1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz" + integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== + dependencies: + "@noble/curves" "~1.9.0" + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip32@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz" + integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== + dependencies: + "@noble/curves" "~1.4.0" + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +"@scure/bip39@^1.6.0", "@scure/bip39@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz" + integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== + dependencies: + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz" + integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== + dependencies: + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sinclair/typebox@^0.34.0": + version "0.34.41" + +"@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^13.0.0": + version "13.0.5" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@solidity-parser/parser@^0.14.0": + version "0.14.5" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@solidity-parser/parser@^0.20.1": + version "0.20.2" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz" + integrity sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA== + +"@stellar/js-xdr@^3.1.2": + version "3.1.2" + resolved "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.2.tgz" + integrity sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ== + +"@stellar/stellar-base@^14.0.4": + version "14.0.4" + resolved "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-14.0.4.tgz" + integrity sha512-UbNW6zbdOBXJwLAV2mMak0bIC9nw3IZVlQXkv2w2dk1jgCbJjy3oRVC943zeGE5JAm0Z9PHxrIjmkpGhayY7kw== + dependencies: + "@noble/curves" "^1.9.6" + "@stellar/js-xdr" "^3.1.2" + base32.js "^0.1.0" + bignumber.js "^9.3.1" + buffer "^6.0.3" + sha.js "^2.4.12" + +"@stellar/stellar-sdk@^14.5.0": + version "14.5.0" + resolved "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-14.5.0.tgz" + integrity sha512-Uzjq+An/hUA+Q5ERAYPtT0+MMiwWnYYWMwozmZMjxjdL2MmSjucBDF8Q04db6K/ekU4B5cHuOfsdlrfaxQYblw== + dependencies: + "@stellar/stellar-base" "^14.0.4" + axios "^1.13.3" + bignumber.js "^9.3.1" + commander "^14.0.2" + eventsource "^2.0.2" + feaxios "^0.0.23" + randombytes "^2.1.0" + toml "^3.0.0" + urijs "^1.19.1" + +"@streamparser/json-node@^0.0.22": + version "0.0.22" + resolved "https://registry.npmjs.org/@streamparser/json-node/-/json-node-0.0.22.tgz" + integrity sha512-sJT2ptNRwqB1lIsQrQlCoWk5rF4tif9wDh+7yluAGijJamAhrHGYpFB/Zg3hJeceoZypi74ftXk8DHzwYpbZSg== + dependencies: + "@streamparser/json" "^0.0.22" + +"@streamparser/json@^0.0.22": + version "0.0.22" + resolved "https://registry.npmjs.org/@streamparser/json/-/json-0.0.22.tgz" + integrity sha512-b6gTSBjJ8G8SuO3Gbbj+zXbVx8NSs1EbpbMKpzGLWMdkR+98McH9bEjSz3+0mPJf68c5nxa3CrJHp5EQNXM6zQ== + +"@tokenizer/inflate@^0.2.6": + version "0.2.7" + resolved "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz" + integrity sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg== + dependencies: + debug "^4.4.0" + fflate "^0.8.2" + token-types "^6.0.0" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@tsconfig/node10@^1.0.7": + version "1.0.12" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz" + integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@typechain/ethers-v6@^0.4.0", "@typechain/ethers-v6@^0.4.3", "@typechain/ethers-v6@^0.5.1": + version "0.5.1" + resolved "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz" + integrity sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/hardhat@^8.0.0": + version "8.0.3" + resolved "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-8.0.3.tgz" + integrity sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng== + dependencies: + fs-extra "^9.1.0" + +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.27.0" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*": + version "7.28.0" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz" + integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== + dependencies: + "@babel/types" "^7.28.2" + +"@types/bn.js@^5.1.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q== + dependencies: + "@types/node" "*" + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/chai-as-promised@^7.1.3": + version "7.1.8" + resolved "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz" + integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== + dependencies: + "@types/chai" "*" + +"@types/chai@*": + version "5.2.3" + resolved "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz" + integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== + dependencies: + "@types/deep-eql" "*" + assertion-error "^2.0.1" + +"@types/chai@^4.2.0", "@types/chai@^4.3.11": + version "4.3.20" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz" + integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/cookiejar@^2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz" + integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== + +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== + +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@>=8.0.0": + version "9.6.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.6", "@types/estree@^1.0.8": + version "1.0.8" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/express-serve-static-core@^4.17.33": + version "4.19.7" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz" + integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express-serve-static-core@^5.0.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz" + integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.6" + resolved "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz" + integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "^2" + +"@types/express@^4.17.17": + version "4.17.25" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "^1" + +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^30.0.0": + version "30.0.0" + resolved "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz" + integrity sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA== + dependencies: + expect "^30.0.0" + pretty-format "^30.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/jsonwebtoken@*", "@types/jsonwebtoken@9.0.10": + version "9.0.10" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz" + integrity sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA== + dependencies: + "@types/ms" "*" + "@types/node" "*" + +"@types/luxon@~3.7.0": + version "3.7.1" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz" + integrity sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg== + +"@types/methods@^1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz" + integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/minimatch@*": + version "5.1.2" + +"@types/mocha@^10.0.10", "@types/mocha@>=9.1.0": + version "10.0.10" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz" + integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== + +"@types/ms@*": + version "2.1.0" + resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + +"@types/multer@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@types/multer/-/multer-2.0.0.tgz" + integrity sha512-C3Z9v9Evij2yST3RSBktxP9STm6OdMc5uR1xF1SGr98uv8dUlAL2hqwrZ3GVB3uyMyiegnscEK6PGtYvNrjTjw== + dependencies: + "@types/express" "*" + +"@types/node@*", "@types/node@^25.0.3", "@types/node@>=12.0.0": + version "25.0.3" + resolved "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz" + integrity sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA== + dependencies: + undici-types "~7.16.0" + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^20.0.0": + version "20.19.33" + resolved "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz" + integrity sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw== + dependencies: + undici-types "~6.21.0" + +"@types/node@^20.3.1": + version "20.19.27" + resolved "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz" + integrity sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug== + dependencies: + undici-types "~6.21.0" + +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/node@16.9.1": + version "16.9.1" + resolved "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz" + integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== + +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + +"@types/passport-jwt@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@types/passport-jwt/-/passport-jwt-4.0.1.tgz" + integrity sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ== + dependencies: + "@types/jsonwebtoken" "*" + "@types/passport-strategy" "*" + +"@types/passport-strategy@*": + version "0.2.38" + resolved "https://registry.npmjs.org/@types/passport-strategy/-/passport-strategy-0.2.38.tgz" + integrity sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA== + dependencies: + "@types/express" "*" + "@types/passport" "*" + +"@types/passport@*", "@types/passport@^1.0.17": + version "1.0.17" + resolved "https://registry.npmjs.org/@types/passport/-/passport-1.0.17.tgz" + integrity sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg== + dependencies: + "@types/express" "*" + +"@types/pbkdf2@^3.0.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== + dependencies: + "@types/node" "*" + +"@types/pdf-parse@^1.1.5": + version "1.1.5" + resolved "https://registry.npmjs.org/@types/pdf-parse/-/pdf-parse-1.1.5.tgz" + integrity sha512-kBfrSXsloMnUJOKi25s3+hRmkycHfLK6A09eRGqF/N8BkQoPUmaCr+q8Cli5FnfohEz/rsv82zAiPz/LXtOGhA== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/qs@*", "@types/qs@^6.2.31": + version "6.14.0" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/secp256k1@^4.0.1": + version "4.0.7" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.7.tgz" + integrity sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw== + dependencies: + "@types/node" "*" + +"@types/semver@^7.5.0": + version "7.7.1" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz" + integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== + +"@types/send@*": + version "1.2.1" + resolved "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@^1": + version "1.15.10" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + +"@types/serve-static@^2": + version "2.2.0" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz" + integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + +"@types/stack-utils@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/superagent@^8.1.0": + version "8.1.9" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz" + integrity sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ== + dependencies: + "@types/cookiejar" "^2.1.5" + "@types/methods" "^1.1.4" + "@types/node" "*" + form-data "^4.0.0" + +"@types/supertest@^6.0.3": + version "6.0.3" + resolved "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz" + integrity sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w== + dependencies: + "@types/methods" "^1.1.4" + "@types/superagent" "^8.1.0" + +"@types/uuid@^11.0.0": + version "11.0.0" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-11.0.0.tgz" + integrity sha512-HVyk8nj2m+jcFRNazzqyVKiZezyhDKrGUA3jlEcg/nZ6Ms+qHwocba1Y/AaVaznJTAM9xpdFSh+ptbNrhOGvZA== + dependencies: + uuid "*" + +"@types/validator@^13.15.3": + version "13.15.10" + resolved "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz" + integrity sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA== + +"@types/webidl-conversions@*": + version "7.0.3" + resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz" + integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== + +"@types/whatwg-url@^13.0.0": + version "13.0.0" + resolved "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-13.0.0.tgz" + integrity sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q== + dependencies: + "@types/webidl-conversions" "*" + +"@types/xml2js@^0.4.14": + version "0.4.14" + resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz" + integrity sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.33": + version "17.0.35" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^6.0.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz" + integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/eslint-plugin@^8.50.0", "@typescript-eslint/eslint-plugin@8.50.0": + version "8.50.0" + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.50.0" + "@typescript-eslint/type-utils" "8.50.0" + "@typescript-eslint/utils" "8.50.0" + "@typescript-eslint/visitor-keys" "8.50.0" + ignore "^7.0.0" + natural-compare "^1.4.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/parser@^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== + dependencies: + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^8.50.0", "@typescript-eslint/parser@8.50.0": + version "8.50.0" + dependencies: + "@typescript-eslint/scope-manager" "8.50.0" + "@typescript-eslint/types" "8.50.0" + "@typescript-eslint/typescript-estree" "8.50.0" + "@typescript-eslint/visitor-keys" "8.50.0" + debug "^4.3.4" + +"@typescript-eslint/project-service@8.50.0": + version "8.50.0" + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.50.0" + "@typescript-eslint/types" "^8.50.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + +"@typescript-eslint/scope-manager@8.50.0": + version "8.50.0" + dependencies: + "@typescript-eslint/types" "8.50.0" + "@typescript-eslint/visitor-keys" "8.50.0" + +"@typescript-eslint/tsconfig-utils@^8.50.0", "@typescript-eslint/tsconfig-utils@8.50.0": + version "8.50.0" + +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz" + integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== + dependencies: + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/type-utils@8.50.0": + version "8.50.0" + dependencies: + "@typescript-eslint/types" "8.50.0" + "@typescript-eslint/typescript-estree" "8.50.0" + "@typescript-eslint/utils" "8.50.0" + debug "^4.3.4" + ts-api-utils "^2.1.0" + +"@typescript-eslint/types@^8.50.0", "@typescript-eslint/types@8.50.0": + version "8.50.0" + +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/typescript-estree@8.50.0": + version "8.50.0" + dependencies: + "@typescript-eslint/project-service" "8.50.0" + "@typescript-eslint/tsconfig-utils" "8.50.0" + "@typescript-eslint/types" "8.50.0" + "@typescript-eslint/visitor-keys" "8.50.0" + debug "^4.3.4" + minimatch "^9.0.4" + semver "^7.6.0" + tinyglobby "^0.2.15" + ts-api-utils "^2.1.0" + +"@typescript-eslint/utils@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + semver "^7.5.4" + +"@typescript-eslint/utils@8.50.0": + version "8.50.0" + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.50.0" + "@typescript-eslint/types" "8.50.0" + "@typescript-eslint/typescript-estree" "8.50.0" + +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + dependencies: + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@8.50.0": + version "8.50.0" + dependencies: + "@typescript-eslint/types" "8.50.0" + eslint-visitor-keys "^4.2.1" + +"@ungap/structured-clone@^1.2.0", "@ungap/structured-clone@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@unrs/resolver-binding-darwin-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz" + integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== + +"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abbrev@1: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== + +abitype@^1.2.3, abitype@1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz" + integrity sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-phases@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz" + integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-formats@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@8.12.0: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ajv@^8.8.2, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-colors@^4.1.1, ansi-colors@^4.1.3, ansi-colors@4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.2.2" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + +ansi-styles@^3.2.1: + 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== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.3" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz" + integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== + +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-dev" + dependencies: + source-map-support "^0.5.16" + +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== + +anymatch@^3.1.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" + integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-timsort@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz" + integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +asap@^2.0.0, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-function@^1.0.0: + version "1.0.0" + +async-generator-function@^1.0.0: + version "1.0.0" + +async@1.x: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +await-to-js@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz" + integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g== + +axios@^1.13.3, axios@^1.5.1, axios@^1.6.0: + version "1.13.5" + resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz" + integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== + dependencies: + follow-redirects "^1.15.11" + form-data "^4.0.5" + proxy-from-env "^1.1.0" + +"babel-jest@^29.0.0 || ^30.0.0", babel-jest@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz" + integrity sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw== + dependencies: + "@jest/transform" "30.2.0" + "@types/babel__core" "^7.20.5" + babel-plugin-istanbul "^7.0.1" + babel-preset-jest "30.2.0" + chalk "^4.1.2" + graceful-fs "^4.2.11" + slash "^3.0.0" + +babel-plugin-istanbul@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz" + integrity sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-instrument "^6.0.2" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz" + integrity sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA== + dependencies: + "@types/babel__core" "^7.20.5" + +babel-preset-current-node-syntax@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz" + integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + +babel-preset-jest@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz" + integrity sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ== + dependencies: + babel-plugin-jest-hoist "30.2.0" + babel-preset-current-node-syntax "^1.2.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.11" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz" + integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== + dependencies: + safe-buffer "^5.0.1" + +base32.js@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz" + integrity sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +baseline-browser-mapping@^2.9.0: + version "2.9.11" + resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz" + integrity sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +before-after-hook@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz" + integrity sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ== + +bignumber.js@^9.3.1: + version "9.3.1" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bip39@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz" + integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== + dependencies: + "@noble/hashes" "^1.2.0" + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bmp-ts@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz" + integrity sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw== + +bn.js@^4.11.9: + version "4.12.2" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz" + integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.2" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-stdout@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserslist@^4.24.0, browserslist@^4.28.1, "browserslist@>= 4.21.0": + version "4.28.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz" + integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== + dependencies: + baseline-browser-mapping "^2.9.0" + caniuse-lite "^1.0.30001759" + electron-to-chromium "^1.5.263" + node-releases "^2.0.27" + update-browserslist-db "^1.2.0" + +bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +bson@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/bson/-/bson-7.0.0.tgz" + integrity sha512-Kwc6Wh4lQ5OmkqqKhYGKIuELXl+EPYSCObVE6bWsp1T/cGkOCBN0I8wF/T44BiuhHyNi1mmKVPXk60d41xZ7kw== + +buffer-equal-constant-time@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +"bullmq@^3.0.0 || ^4.0.0 || ^5.0.0", bullmq@^5.66.2: + version "5.66.2" + dependencies: + cron-parser "4.9.0" + ioredis "5.8.2" + msgpackr "1.11.5" + node-abort-controller "3.1.1" + semver "7.7.3" + tslib "2.8.1" + uuid "11.1.0" + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@~3.1.2, bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0, callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001759: + version "1.0.30001761" + +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== + dependencies: + nofilter "^3.1.0" + +chai-as-promised@^7.1.1: + version "7.1.2" + resolved "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz" + integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== + dependencies: + check-error "^1.0.2" + +chai@^4.2.0, chai@^4.3.10, "chai@>= 2.1.2 < 6": + version "4.5.0" + resolved "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.1.0" + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0: + version "5.6.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +check-error@^1.0.2, check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@^3.5.2, chokidar@^3.5.3, chokidar@3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^4.2.0: + version "4.3.1" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz" + integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.7" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz" + integrity sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.2" + +cjs-module-lexer@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz" + integrity sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ== + +class-transformer@*, "class-transformer@^0.4.0 || ^0.5.0", class-transformer@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz" + integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== + +class-validator@*, "class-validator@^0.13.0 || ^0.14.0", class-validator@^0.14.3: + version "0.14.3" + resolved "https://registry.npmjs.org/class-validator/-/class-validator-0.14.3.tgz" + integrity sha512-rXXekcjofVN1LTOSw+u4u9WXVEUvNBVjORW154q/IdmYWy1nMbOU9aNtZB0t8m+FJQ9q91jlr2f9CwwUFdFMRA== + dependencies: + "@types/validator" "^13.15.3" + libphonenumber-js "^1.11.1" + validator "^13.15.20" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cli-table3@0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz" + integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +cluster-key-slot@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz" + integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz" + integrity sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +colors@^1.1.2, colors@1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@^14.0.2: + version "14.0.3" + resolved "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz" + integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^8.1.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commander@4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +comment-json@4.2.5: + version "4.2.5" + resolved "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz" + integrity sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw== + dependencies: + array-timsort "^1.0.3" + core-util-is "^1.0.3" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + +component-emitter@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +consola@^2.15.0: + version "2.15.3" + resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +cookiejar@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +core-util-is@^1.0.3, core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@2.8.5: + version "2.8.5" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^8.2.0: + version "8.3.6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.7, create-hmac@1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cron-parser@4.9.0: + version "4.9.0" + resolved "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz" + integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== + dependencies: + luxon "^3.2.1" + +cron@4.3.5: + version "4.3.5" + resolved "https://registry.npmjs.org/cron/-/cron-4.3.5.tgz" + integrity sha512-hKPP7fq1+OfyCqoePkKfVq7tNAdFwiQORr4lZUHwrf0tebC65fYEeWgOrXOL6prn1/fegGOdTfrM6e34PJfksg== + dependencies: + "@types/luxon" "~3.7.0" + luxon "~3.7.0" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +death@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/death/-/death-1.1.0.tgz" + integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.7, debug@^4.4.0, debug@4: + version "4.4.3" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +dedent@^1.6.0: + version "1.7.1" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz" + integrity sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg== + +deep-eql@^4.0.1, deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2, deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@~2.0.0, depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.1: + version "2.1.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + +detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +dezalgo@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + +difflib@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz" + integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== + dependencies: + heap ">= 0.2.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dotenv-expand@12.0.1: + version "12.0.1" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz" + integrity sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ== + dependencies: + dotenv "^16.4.5" + +dotenv@^16.4.5: + version "16.6.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz" + integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== + +dotenv@^17.2.3: + version "17.3.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz" + integrity sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA== + +dotenv@16.4.7: + version "16.4.7" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +ed25519-hd-key@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.3.0.tgz" + integrity sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg== + dependencies: + create-hmac "1.1.7" + tweetnacl "1.0.3" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.5.263: + version "1.5.267" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz" + integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw== + +elliptic@^6.5.7, elliptic@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.17.4, enhanced-resolve@^5.7.0: + version "5.18.4" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz" + integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@^2.3.0: + version "2.4.1" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +error-ex@^1.3.1: + version "1.3.4" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz" + integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== + dependencies: + is-arrayish "^0.2.1" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.7.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + +es-module-lexer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz" + integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" + integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +eslint-config-prettier@^9.0.0, "eslint-config-prettier@>= 7.0.0 <10.0.0 || >=10.1.0": + version "9.1.2" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz" + integrity sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ== + +eslint-plugin-prettier@^5.0.0: + version "5.5.4" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz" + integrity sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.11.7" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.39.2: + version "9.39.2" + resolved "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz" + integrity sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw== + dependencies: + "@eslint-community/eslint-utils" "^4.8.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.1" + "@eslint/config-helpers" "^0.4.2" + "@eslint/core" "^0.17.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.39.2" + "@eslint/plugin-kit" "^0.4.1" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.6" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + json-stable-stringify-without-jsonify "^1.0.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + +"eslint@^7.0.0 || ^8.0.0", eslint@^8.42.0, eslint@>=7.0.0, eslint@>=8.0.0: + version "8.57.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^10.0.1, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== + dependencies: + acorn "^8.15.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.1" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esprima@2.7.x: + version "2.7.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esquery@^1.4.2, esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz" + integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-gas-reporter@^0.2.25: + version "0.2.27" + resolved "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz" + integrity sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw== + dependencies: + "@solidity-parser/parser" "^0.14.0" + axios "^1.5.1" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^5.7.2" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^10.2.0" + req-cwd "^2.0.0" + sha1 "^1.1.1" + sync-request "^6.0.0" + +ethereum-bloom-filters@^1.0.6: + version "1.2.0" + resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz" + integrity sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA== + dependencies: + "@noble/hashes" "^1.4.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2, ethereum-cryptography@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz" + integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== + dependencies: + "@noble/curves" "1.4.2" + "@noble/hashes" "1.4.0" + "@scure/bip32" "1.4.0" + "@scure/bip39" "1.3.0" + +ethereumjs-util@^7.1.4: + version "7.1.5" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@^5.7.2: + version "5.8.0" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz" + integrity sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg== + dependencies: + "@ethersproject/abi" "5.8.0" + "@ethersproject/abstract-provider" "5.8.0" + "@ethersproject/abstract-signer" "5.8.0" + "@ethersproject/address" "5.8.0" + "@ethersproject/base64" "5.8.0" + "@ethersproject/basex" "5.8.0" + "@ethersproject/bignumber" "5.8.0" + "@ethersproject/bytes" "5.8.0" + "@ethersproject/constants" "5.8.0" + "@ethersproject/contracts" "5.8.0" + "@ethersproject/hash" "5.8.0" + "@ethersproject/hdnode" "5.8.0" + "@ethersproject/json-wallets" "5.8.0" + "@ethersproject/keccak256" "5.8.0" + "@ethersproject/logger" "5.8.0" + "@ethersproject/networks" "5.8.0" + "@ethersproject/pbkdf2" "5.8.0" + "@ethersproject/properties" "5.8.0" + "@ethersproject/providers" "5.8.0" + "@ethersproject/random" "5.8.0" + "@ethersproject/rlp" "5.8.0" + "@ethersproject/sha2" "5.8.0" + "@ethersproject/signing-key" "5.8.0" + "@ethersproject/solidity" "5.8.0" + "@ethersproject/strings" "5.8.0" + "@ethersproject/transactions" "5.8.0" + "@ethersproject/units" "5.8.0" + "@ethersproject/wallet" "5.8.0" + "@ethersproject/web" "5.8.0" + "@ethersproject/wordlists" "5.8.0" + +ethers@^6.1.0, ethers@^6.14.0, ethers@^6.16.0, ethers@^6.4.0, ethers@6.x: + version "6.16.0" + resolved "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz" + integrity sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@^3.2.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz" + integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exif-parser@^0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz" + integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw== + +exit-x@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz" + integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== + +expect@^30.0.0, expect@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz" + integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== + dependencies: + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" + +"express@>=4.0.0 || >=5.0.0-beta", express@4.21.2: + version "4.21.2" + resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.12" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +external-editor@^3.0.3, external-editor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-content-type-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz" + integrity sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + 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== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-equals@^5.0.1: + version "5.4.0" + resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz" + integrity sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw== + +fast-glob@^3.0.3, fast-glob@^3.2.9: + version "3.3.3" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: + 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== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-levenshtein@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz" + integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== + dependencies: + fastest-levenshtein "^1.0.7" + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-safe-stringify@^2.1.1, fast-safe-stringify@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + +fastest-levenshtein@^1.0.7: + version "1.0.16" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastq@^1.6.0: + version "1.19.1" + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + +feaxios@^0.0.23: + version "0.0.23" + resolved "https://registry.npmjs.org/feaxios/-/feaxios-0.0.23.tgz" + integrity sha512-eghR0A21fvbkcQBgZuMfQhrXxJzC0GNUGC9fXhBge33D+mFDTwl0aJ35zoQQn575BhyjQitRc5N4f+L4cP708g== + dependencies: + is-retry-allowed "^3.0.0" + +fflate@^0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz" + integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== + +figures@^3.0.0, figures@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + +file-type@^16.0.0: + version "16.5.4" + resolved "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + +file-type@20.4.1: + version "20.4.1" + resolved "https://registry.npmjs.org/file-type/-/file-type-20.4.1.tgz" + integrity sha512-hw9gNZXUfZ02Jo0uafWLaFVPter5/k2rfcrjFJJHX/77xtSDOfJuEFb6oKlFV86FLP1SuyHMW1PSk0U9M5tKkQ== + dependencies: + "@tokenizer/inflate" "^0.2.6" + strtok3 "^10.2.0" + token-types "^6.0.0" + uint8array-extras "^1.4.0" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +follow-redirects@^1.12.1, follow-redirects@^1.15.11: + version "1.15.11" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +fork-ts-checker-webpack-plugin@9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz" + integrity sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg== + dependencies: + "@babel/code-frame" "^7.16.7" + chalk "^4.1.2" + chokidar "^3.5.3" + cosmiconfig "^8.2.0" + deepmerge "^4.2.2" + fs-extra "^10.0.0" + memfs "^3.4.1" + minimatch "^3.0.4" + node-abort-controller "^3.0.1" + schema-utils "^3.1.1" + semver "^7.3.5" + tapable "^2.2.1" + +form-data@^2.2.0: + version "2.5.5" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz" + integrity sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.35" + safe-buffer "^5.2.1" + +form-data@^4.0.0, form-data@^4.0.4, form-data@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +formidable@^3.5.4: + version "3.5.4" + resolved "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz" + integrity sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug== + dependencies: + "@paralleldrive/cuid2" "^2.2.2" + dezalgo "^1.0.4" + once "^1.4.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.5.tgz" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz" + integrity sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw== + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.3, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +generator-function@^2.0.0: + version "2.0.1" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.1" + dependencies: + async-function "^1.0.0" + async-generator-function "^1.0.0" + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + generator-function "^2.0.0" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== + dependencies: + chalk "^2.4.2" + node-emoji "^1.10.0" + +gifwrap@^0.10.1: + version "0.10.1" + resolved "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz" + integrity sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw== + dependencies: + image-q "^4.0.0" + omggif "^1.0.10" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.3.10: + version "10.5.0" + resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz" + integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@10.4.5: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +handlebars@^4.0.1, handlebars@^4.7.8: + version "4.7.8" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +hardhat-gas-reporter@^1.0.10, hardhat-gas-reporter@^1.0.8: + version "1.0.10" + resolved "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz" + integrity sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA== + dependencies: + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" + sha1 "^1.1.1" + +hardhat@^2.0.2, hardhat@^2.0.4, hardhat@^2.11.0, hardhat@^2.22.3, hardhat@^2.26.0, hardhat@^2.28.0, hardhat@^2.9.9, hardhat@^3.0.0: + version "2.28.0" + dependencies: + "@ethereumjs/util" "^9.1.0" + "@ethersproject/abi" "^5.1.2" + "@nomicfoundation/edr" "0.12.0-next.17" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + boxen "^5.1.2" + chokidar "^4.0.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + find-up "^5.0.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + json-stream-stringify "^3.1.4" + keccak "^3.0.2" + lodash "^4.17.11" + micro-eth-signer "^0.14.0" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + picocolors "^1.1.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.8.26" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tinyglobby "^0.2.6" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash-base@^3.0.0, hash-base@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz" + integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg== + dependencies: + inherits "^2.0.4" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + to-buffer "^1.2.1" + +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7, hash.js@1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +"heap@>= 0.2.0": + version "0.2.7" + resolved "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@^0.4.24, iconv-lite@~0.4.24, iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: + version "5.3.2" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +ignore@^7.0.0: + version "7.0.5" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + +image-q@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz" + integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== + dependencies: + "@types/node" "16.9.1" + +immutable@^4.0.0-rc.12: + version "4.3.7" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== + +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@8.2.6: + version "8.2.6" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +inquirer@9.2.15: + version "9.2.15" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz" + integrity sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg== + dependencies: + "@ljharb/through" "^2.3.12" + ansi-escapes "^4.3.2" + chalk "^5.3.0" + cli-cursor "^3.1.0" + cli-width "^4.1.0" + external-editor "^3.1.0" + figures "^3.2.0" + lodash "^4.17.21" + mute-stream "1.0.0" + ora "^5.4.1" + run-async "^3.0.0" + rxjs "^7.8.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +ioredis@^5.8.2, ioredis@5.8.2: + version "5.8.2" + resolved "https://registry.npmjs.org/ioredis/-/ioredis-5.8.2.tgz" + integrity sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q== + dependencies: + "@ioredis/commands" "1.4.0" + cluster-key-slot "^1.1.0" + debug "^4.3.4" + denque "^2.1.0" + lodash.defaults "^4.2.0" + lodash.isarguments "^3.1.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + +ipaddr.js@1.9.1: + 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== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + 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== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-retry-allowed@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-3.0.0.tgz" + integrity sha512-9xH0xvoggby+u0uGF7cZXdrutWiBiaFG8ZT4YFPXL8NzkyAwX3AKGLeFQLvzDpM430+nDFBZ1LHkie/8ocL06A== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-typed-array@^1.1.14: + version "1.1.15" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isows@1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz" + integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^6.0.0, istanbul-lib-instrument@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^5.0.0: + version "5.0.6" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== + dependencies: + "@jridgewell/trace-mapping" "^0.3.23" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + +istanbul-reports@^3.1.3: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz" + integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterare@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" + integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jest-changed-files@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz" + integrity sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ== + dependencies: + execa "^5.1.1" + jest-util "30.2.0" + p-limit "^3.1.0" + +jest-circus@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz" + integrity sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg== + dependencies: + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + co "^4.6.0" + dedent "^1.6.0" + is-generator-fn "^2.1.0" + jest-each "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + p-limit "^3.1.0" + pretty-format "30.2.0" + pure-rand "^7.0.0" + slash "^3.0.0" + stack-utils "^2.0.6" + +jest-cli@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz" + integrity sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA== + dependencies: + "@jest/core" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + chalk "^4.1.2" + exit-x "^0.2.2" + import-local "^3.2.0" + jest-config "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + yargs "^17.7.2" + +jest-config@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz" + integrity sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/get-type" "30.1.0" + "@jest/pattern" "30.0.1" + "@jest/test-sequencer" "30.2.0" + "@jest/types" "30.2.0" + babel-jest "30.2.0" + chalk "^4.1.2" + ci-info "^4.2.0" + deepmerge "^4.3.1" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-circus "30.2.0" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-runner "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + micromatch "^4.0.8" + parse-json "^5.2.0" + pretty-format "30.2.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz" + integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== + dependencies: + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + pretty-format "30.2.0" + +jest-docblock@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz" + integrity sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA== + dependencies: + detect-newline "^3.1.0" + +jest-each@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz" + integrity sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" + chalk "^4.1.2" + jest-util "30.2.0" + pretty-format "30.2.0" + +jest-environment-node@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz" + integrity sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA== + dependencies: + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + jest-mock "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + +jest-haste-map@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz" + integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + anymatch "^3.1.3" + fb-watchman "^2.0.2" + graceful-fs "^4.2.11" + jest-regex-util "30.0.1" + jest-util "30.2.0" + jest-worker "30.2.0" + micromatch "^4.0.8" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.3" + +jest-leak-detector@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz" + integrity sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ== + dependencies: + "@jest/get-type" "30.1.0" + pretty-format "30.2.0" + +jest-matcher-utils@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz" + integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg== + dependencies: + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + jest-diff "30.2.0" + pretty-format "30.2.0" + +jest-message-util@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz" + integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@jest/types" "30.2.0" + "@types/stack-utils" "^2.0.3" + chalk "^4.1.2" + graceful-fs "^4.2.11" + micromatch "^4.0.8" + pretty-format "30.2.0" + slash "^3.0.0" + stack-utils "^2.0.6" + +jest-mock-extended@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jest-mock-extended/-/jest-mock-extended-4.0.0.tgz" + integrity sha512-7BZpfuvLam+/HC+NxifIi9b+5VXj/utUDMPUqrDJehGWVuXPtLS9Jqlob2mJLrI/pg2k1S8DMfKDvEB88QNjaQ== + dependencies: + ts-essentials "^10.0.2" + +jest-mock@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz" + integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + jest-util "30.2.0" + +jest-pnp-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== + +jest-resolve-dependencies@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz" + integrity sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w== + dependencies: + jest-regex-util "30.0.1" + jest-snapshot "30.2.0" + +jest-resolve@*, jest-resolve@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz" + integrity sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A== + dependencies: + chalk "^4.1.2" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-pnp-resolver "^1.2.3" + jest-util "30.2.0" + jest-validate "30.2.0" + slash "^3.0.0" + unrs-resolver "^1.7.11" + +jest-runner@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz" + integrity sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/environment" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + emittery "^0.13.1" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-haste-map "30.2.0" + jest-leak-detector "30.2.0" + jest-message-util "30.2.0" + jest-resolve "30.2.0" + jest-runtime "30.2.0" + jest-util "30.2.0" + jest-watcher "30.2.0" + jest-worker "30.2.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz" + integrity sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg== + dependencies: + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/globals" "30.2.0" + "@jest/source-map" "30.0.1" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + cjs-module-lexer "^2.1.0" + collect-v8-coverage "^1.0.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz" + integrity sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA== + dependencies: + "@babel/core" "^7.27.4" + "@babel/generator" "^7.27.5" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/types" "^7.27.3" + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + "@jest/snapshot-utils" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + babel-preset-current-node-syntax "^1.2.0" + chalk "^4.1.2" + expect "30.2.0" + graceful-fs "^4.2.11" + jest-diff "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-util "30.2.0" + pretty-format "30.2.0" + semver "^7.7.2" + synckit "^0.11.8" + +"jest-util@^29.0.0 || ^30.0.0", jest-util@^30.2.0, jest-util@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz" + integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + ci-info "^4.2.0" + graceful-fs "^4.2.11" + picomatch "^4.0.2" + +jest-validate@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz" + integrity sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" + camelcase "^6.3.0" + chalk "^4.1.2" + leven "^3.1.0" + pretty-format "30.2.0" + +jest-watcher@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz" + integrity sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg== + dependencies: + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + emittery "^0.13.1" + jest-util "30.2.0" + string-length "^4.0.2" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz" + integrity sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g== + dependencies: + "@types/node" "*" + "@ungap/structured-clone" "^1.3.0" + jest-util "30.2.0" + merge-stream "^2.0.0" + supports-color "^8.1.1" + +"jest@^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 || ^30.0.0", "jest@^29.0.0 || ^30.0.0", jest@^30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz" + integrity sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A== + dependencies: + "@jest/core" "30.2.0" + "@jest/types" "30.2.0" + import-local "^3.2.0" + jest-cli "30.2.0" + +jimp@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz" + integrity sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg== + dependencies: + "@jimp/core" "1.6.0" + "@jimp/diff" "1.6.0" + "@jimp/js-bmp" "1.6.0" + "@jimp/js-gif" "1.6.0" + "@jimp/js-jpeg" "1.6.0" + "@jimp/js-png" "1.6.0" + "@jimp/js-tiff" "1.6.0" + "@jimp/plugin-blit" "1.6.0" + "@jimp/plugin-blur" "1.6.0" + "@jimp/plugin-circle" "1.6.0" + "@jimp/plugin-color" "1.6.0" + "@jimp/plugin-contain" "1.6.0" + "@jimp/plugin-cover" "1.6.0" + "@jimp/plugin-crop" "1.6.0" + "@jimp/plugin-displace" "1.6.0" + "@jimp/plugin-dither" "1.6.0" + "@jimp/plugin-fisheye" "1.6.0" + "@jimp/plugin-flip" "1.6.0" + "@jimp/plugin-hash" "1.6.0" + "@jimp/plugin-mask" "1.6.0" + "@jimp/plugin-print" "1.6.0" + "@jimp/plugin-quantize" "1.6.0" + "@jimp/plugin-resize" "1.6.0" + "@jimp/plugin-rotate" "1.6.0" + "@jimp/plugin-threshold" "1.6.0" + "@jimp/types" "1.6.0" + "@jimp/utils" "1.6.0" + +jpeg-js@^0.4.4: + version "0.4.4" + resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz" + integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== + +js-sha3@^0.8.0, js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.2" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz" + integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0, js-yaml@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + dependencies: + argparse "^2.0.1" + +js-yaml@3.x: + version "3.14.2" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz" + integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + 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== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stream-stringify@^3.1.4, json-stream-stringify@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz" + integrity sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog== + +json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-parser@3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== + +jsonc-parser@3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz" + integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonschema@^1.2.4: + version "1.5.0" + resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz" + integrity sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw== + +jsonwebtoken@^9.0.0, jsonwebtoken@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz" + integrity sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g== + dependencies: + jws "^4.0.1" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^7.5.4" + +jsqr@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz" + integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A== + +jwa@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz" + integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== + dependencies: + buffer-equal-constant-time "^1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz" + integrity sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA== + dependencies: + jwa "^2.0.1" + safe-buffer "^5.0.1" + +kareem@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/kareem/-/kareem-3.0.0.tgz" + integrity sha512-RKhaOBSPN8L7y4yAgNhDT2602G5FD6QbOIISbjN9D6mjHPeqeg7K+EB5IGSU5o81/X2Gzm3ICnAvQW3x3OP8HA== + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.5.3, keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +libphonenumber-js@^1.11.1: + version "1.12.33" + resolved "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.33.tgz" + integrity sha512-r9kw4OA6oDO4dPXkOrXTkArQAafIKAU71hChInV4FxZ69dxCfbwQGDPzqR5/vea94wU705/3AZroEbSoeVWrQw== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0, loader-runner@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz" + integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" + integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +luxon@^3.2.1, luxon@~3.7.0: + version "3.7.2" + resolved "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz" + integrity sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew== + +magic-string@0.30.8: + version "0.30.8" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz" + integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.1.1, make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.1: + version "3.5.3" + dependencies: + fs-monkey "^1.0.4" + +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@^1.1.2, methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micro-eth-signer@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz" + integrity sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw== + dependencies: + "@noble/curves" "~1.8.1" + "@noble/hashes" "~1.7.1" + micro-packed "~0.7.2" + +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + +micro-packed@~0.7.2: + version "0.7.3" + resolved "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz" + integrity sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg== + dependencies: + "@scure/base" "~1.2.5" + +micromatch@^4.0.0, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@3: + version "3.0.0" + resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2, "minimatch@2 || 3": + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1, minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mkdirp@^0.5.6, mkdirp@0.5.x: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@^10.0.0, mocha@^10.2.0: + version "10.8.2" + resolved "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz" + integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" + +mongodb-connection-string-url@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-7.0.0.tgz" + integrity sha512-irhhjRVLE20hbkRl4zpAYLnDMM+zIZnp0IDB9akAFFUZp/3XdOfwwddc7y6cNvF2WCEtfTYRwYbIfYa2kVY0og== + dependencies: + "@types/whatwg-url" "^13.0.0" + whatwg-url "^14.1.0" + +mongodb@~7.0: + version "7.0.0" + resolved "https://registry.npmjs.org/mongodb/-/mongodb-7.0.0.tgz" + integrity sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg== + dependencies: + "@mongodb-js/saslprep" "^1.3.0" + bson "^7.0.0" + mongodb-connection-string-url "^7.0.0" + +"mongoose@^7.0.0 || ^8.0.0 || ^9.0.0", mongoose@^9.0.2: + version "9.0.2" + dependencies: + kareem "3.0.0" + mongodb "~7.0" + mpath "0.9.0" + mquery "6.0.0" + ms "2.1.3" + sift "17.1.3" + +mpath@0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz" + integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== + +mquery@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/mquery/-/mquery-6.0.0.tgz" + integrity sha512-b2KQNsmgtkscfeDgkYMcWGn9vZI9YoXh802VDEwE6qc50zxBFQ0Oo8ROkawbPAsXCY1/Z1yp0MagqsZStPWJjw== + +ms@^2.1.1, ms@^2.1.3, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +msgpackr-extract@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz" + integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== + dependencies: + node-gyp-build-optional-packages "5.2.2" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" + +msgpackr@1.11.5: + version "1.11.5" + resolved "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz" + integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== + optionalDependencies: + msgpackr-extract "^3.0.2" + +multer@2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz" + integrity sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw== + dependencies: + append-field "^1.0.0" + busboy "^1.6.0" + concat-stream "^2.0.0" + mkdirp "^0.5.6" + object-assign "^4.1.1" + type-is "^1.6.18" + xtend "^4.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +mute-stream@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +napi-postinstall@^0.3.0: + version "0.3.4" + resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz" + integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-abort-controller@^3.0.1, node-abort-controller@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + +node-emoji@^1.10.0, node-emoji@1.11.0: + version "1.11.0" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-fetch@^2.6.1: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build-optional-packages@5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz" + integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== + dependencies: + detect-libc "^2.0.1" + +node-gyp-build@^4.2.0: + version "4.8.4" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.27: + version "2.0.27" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== + +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +nopt@3.x: + version "3.0.6" + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +obliterator@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz" + integrity sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw== + +omggif@^1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.4.0, once@1.x: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@^5.4.1, ora@5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +ox@0.10.6: + version "0.10.6" + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.2.3" + eventemitter3 "5.0.1" + +ox@0.11.1: + version "0.11.1" + resolved "https://registry.npmjs.org/ox/-/ox-0.11.1.tgz" + integrity sha512-1l1gOLAqg0S0xiN1dH5nkPna8PucrZgrIJOfS49MLNiMevxu07Iz4ZjuJS9N+xifvT+PsZyIptS7WHM8nC+0+A== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.2.3" + eventemitter3 "5.0.1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pako@^1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-bmfont-ascii@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz" + integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA== + +parse-bmfont-binary@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz" + integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA== + +parse-bmfont-xml@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz" + integrity sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA== + dependencies: + xml-parse-from-string "^1.0.0" + xml2js "^0.5.0" + +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +passport-jwt@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz" + integrity sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ== + dependencies: + jsonwebtoken "^9.0.0" + passport-strategy "^1.0.0" + +passport-strategy@^1.0.0, passport-strategy@1.x.x: + version "1.0.0" + resolved "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== + +"passport@^0.5.0 || ^0.6.0 || ^0.7.0", passport@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz" + integrity sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ== + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + utils-merge "^1.0.1" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + +path-to-regexp@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" + integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pause@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== + +pbkdf2@^3.0.17: + version "3.1.5" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz" + integrity sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ== + dependencies: + create-hash "^1.2.0" + create-hmac "^1.1.7" + ripemd160 "^2.0.3" + safe-buffer "^5.2.1" + sha.js "^2.4.12" + to-buffer "^1.2.1" + +pdf-parse@^2.4.5: + version "2.4.5" + resolved "https://registry.npmjs.org/pdf-parse/-/pdf-parse-2.4.5.tgz" + integrity sha512-mHU89HGh7v+4u2ubfnevJ03lmPgQ5WU4CxAVmTSh/sxVTEDYd1er/dKS/A6vg77NX47KTEoihq8jZBLr8Cxuwg== + dependencies: + "@napi-rs/canvas" "0.1.80" + pdfjs-dist "5.4.296" + +pdfjs-dist@5.4.296: + version "5.4.296" + resolved "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.4.296.tgz" + integrity sha512-DlOzet0HO7OEnmUmB6wWGJrrdvbyJKftI1bhMitK7O2N8W2gc757yyYBbINy9IDafXAV9wmKr9t7xsTaNKRG5Q== + optionalDependencies: + "@napi-rs/canvas" "^0.1.80" + +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== + +picocolors@^1.1.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +"picomatch@^3 || ^4", picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +picomatch@^4.0.2: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +picomatch@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz" + integrity sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + +pixelmatch@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz" + integrity sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q== + dependencies: + pngjs "^6.0.0" + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pluralize@8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +pngjs@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz" + integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== + +pngjs@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz" + integrity sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow== + +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + dependencies: + fast-diff "^1.1.2" + +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +prettier@^3.0.0, prettier@>=3.0.0: + version "3.7.4" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz" + integrity sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA== + +pretty-format@^30.0.0, pretty-format@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz" + integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== + dependencies: + "@jest/schemas" "30.0.5" + ansi-styles "^5.2.0" + react-is "^18.3.1" + +process-nextick-args@~2.0.0: + 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== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@^2.1.0, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pure-rand@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz" + integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== + +qs@^6.11.2: + version "6.14.0" + dependencies: + side-channel "^1.1.0" + +qs@^6.4.0: + version "6.14.0" + dependencies: + side-channel "^1.1.0" + +qs@6.13.0: + version "6.13.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@^2.4.1: + version "2.5.3" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz" + integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + +readable-web-to-node-stream@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz" + integrity sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw== + dependencies: + readable-stream "^4.7.0" + +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz" + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz" + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== + dependencies: + redis-errors "^1.0.0" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +"reflect-metadata@^0.1.12 || ^0.2.0", reflect-metadata@^0.1.13: + version "0.1.14" + resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz" + integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz" + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== + dependencies: + req-from "^2.0.0" + +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz" + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== + dependencies: + resolve-from "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.1.6: + version "1.22.11" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== + dependencies: + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rfdc@^1.3.1: + version "1.4.1" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz" + integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA== + dependencies: + hash-base "^3.1.2" + inherits "^2.0.4" + +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.0.0, rxjs@^7.1.0, rxjs@^7.5.5, rxjs@^7.8.1: + version "7.8.2" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +rxjs@7.8.1: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@>=0.6.0: + version "1.4.3" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz" + integrity sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ== + +sc-istanbul@^0.4.5: + version "0.4.6" + resolved "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz" + integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.3.0: + version "4.3.3" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +schema-utils@^4.3.3: + version "4.3.3" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +scrypt-js@^3.0.0, scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.4" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz" + integrity sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw== + dependencies: + elliptic "^6.5.7" + node-addon-api "^5.0.0" + node-gyp-build "^4.2.0" + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.2, semver@^7.7.3, semver@7.7.3: + version "7.7.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@~1.2.0, setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.12, sha.js@^2.4.8: + version "2.4.12" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz" + integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.0" + +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shelljs@^0.8.3: + version "0.8.5" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.0.6, side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +sift@17.1.3: + version "17.1.3" + resolved "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz" + integrity sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ== + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-xml-to-json@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz" + integrity sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +solc@0.8.26: + version "0.8.26" + resolved "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz" + integrity sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g== + dependencies: + command-exists "^1.2.8" + commander "^8.1.0" + follow-redirects "^1.12.1" + js-sha3 "0.8.0" + memorystream "^0.3.1" + semver "^5.5.0" + tmp "0.0.33" + +solidity-coverage@^0.8.1, solidity-coverage@^0.8.17: + version "0.8.17" + resolved "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.17.tgz" + integrity sha512-5P8vnB6qVX9tt1MfuONtCTEaEGO/O4WuEidPHIAJjx4sktHHKhO3rFvnE0q8L30nWJPTrcqGQMT7jpE29B2qow== + dependencies: + "@ethersproject/abi" "^5.0.9" + "@solidity-parser/parser" "^0.20.1" + chalk "^2.4.2" + death "^1.1.0" + difflib "^0.2.4" + fs-extra "^8.1.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" + jsonschema "^1.2.4" + lodash "^4.17.21" + mocha "^10.2.0" + node-emoji "^1.10.0" + pify "^4.0.1" + recursive-readdir "^2.2.2" + sc-istanbul "^0.4.5" + semver "^7.3.4" + shelljs "^0.8.3" + web3-utils "^1.3.6" + +source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@^0.5.21, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.6" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz" + integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz" + integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== + dependencies: + amdefine ">=0.0.4" + +source-map@0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" + integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== + dependencies: + memory-pager "^1.0.2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stacktrace-parser@^0.1.10: + version "0.1.11" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz" + integrity sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg== + dependencies: + type-fest "^0.7.1" + +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + +statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string_decoder@^1.1.1, string_decoder@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-length@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.2" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" + integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strtok3@^10.2.0: + version "10.3.4" + resolved "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz" + integrity sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg== + dependencies: + "@tokenizer/token" "^0.3.0" + +strtok3@^6.2.4: + version "6.3.0" + resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.1.0" + +superagent@^10.2.3: + version "10.2.3" + resolved "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz" + integrity sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig== + dependencies: + component-emitter "^1.3.1" + cookiejar "^2.1.4" + debug "^4.3.7" + fast-safe-stringify "^2.1.1" + form-data "^4.0.4" + formidable "^3.5.4" + methods "^1.1.2" + mime "2.6.0" + qs "^6.11.2" + +supertest@^7.1.4: + version "7.1.4" + resolved "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz" + integrity sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg== + dependencies: + methods "^1.1.2" + superagent "^10.2.3" + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" + integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swagger-ui-dist@>=5.0.0, swagger-ui-dist@5.17.14: + version "5.17.14" + resolved "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.14.tgz" + integrity sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw== + +swagger-ui-express@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.1.tgz" + integrity sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA== + dependencies: + swagger-ui-dist ">=5.0.0" + +symbol-observable@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +synckit@^0.11.7, synckit@^0.11.8: + version "0.11.11" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz" + integrity sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw== + dependencies: + "@pkgr/core" "^0.2.9" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^6.8.0: + version "6.9.0" + resolved "https://registry.npmjs.org/table/-/table-6.9.0.tgz" + integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz" + integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== + +terser-webpack-plugin@^5.3.10: + version "5.3.16" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz" + integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser-webpack-plugin@^5.3.16: + version "5.3.16" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz" + integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@^5.31.1: + version "5.44.1" + resolved "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz" + integrity sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.15.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tinycolor2@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + +tinyglobby@^0.2.15, tinyglobby@^0.2.6: + version "0.2.15" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +tmp@^0.0.33, tmp@0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz" + integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@~1.0.1, toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +token-types@^4.1.1: + version "4.2.1" + resolved "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz" + integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +token-types@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz" + integrity sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ== + dependencies: + "@borewit/text-codec" "^0.1.0" + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@^5.1.0: + version "5.1.1" + resolved "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz" + integrity sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw== + dependencies: + punycode "^2.3.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-api-utils@^1.0.1: + version "1.4.3" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== + +ts-api-utils@^2.1.0: + version "2.1.0" + +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^10.0.2: + version "10.1.1" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-10.1.1.tgz" + integrity sha512-4aTB7KLHKmUvkjNj8V+EdnmuVTiECzn3K+zIbRthumvHu+j44x3w63xpfs0JL3NGIzGXqoQ7AV591xHO+XrOTw== + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-jest@^29.4.6: + version "29.4.6" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz" + integrity sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA== + dependencies: + bs-logger "^0.2.6" + fast-json-stable-stringify "^2.1.0" + handlebars "^4.7.8" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.7.3" + type-fest "^4.41.0" + yargs-parser "^21.1.1" + +ts-loader@^9.4.3: + version "9.5.4" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz" + integrity sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + +ts-node@*, ts-node@^10.9.0, ts-node@^10.9.2, ts-node@>=8.0.0, ts-node@>=9.0.0: + version "10.9.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +ts-node@^10.9.1: + version "10.9.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths-webpack-plugin@4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz" + integrity sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.7.0" + tapable "^2.2.1" + tsconfig-paths "^4.1.2" + +tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0, tsconfig-paths@4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0, tslib@2.8.1: + version "2.8.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tweetnacl@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-fest@^4.41.0: + version "4.41.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + +type-is@^1.6.18, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typechain@^8.2.0, typechain@^8.3.1, typechain@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript-eslint@^8.50.0: + version "8.50.0" + dependencies: + "@typescript-eslint/eslint-plugin" "8.50.0" + "@typescript-eslint/parser" "8.50.0" + "@typescript-eslint/typescript-estree" "8.50.0" + "@typescript-eslint/utils" "8.50.0" + +typescript@*, "typescript@^3.0.0 || ^4.0.0 || ^5.0.0", typescript@^5.0.0, typescript@^5.1.3, typescript@^5.9.3, typescript@>=2.7, typescript@>=3.7.0, typescript@>=4.2.0, "typescript@>=4.3 <6", typescript@>=4.3.0, typescript@>=4.5.0, typescript@>=4.7.0, typescript@>=4.8.2, typescript@>=4.8.4, "typescript@>=4.8.4 <6.0.0", typescript@>=5.0.4, typescript@>=5.4.0: + version "5.9.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== + +typescript@>=4.9.5, typescript@>3.6.0, typescript@5.7.2: + version "5.7.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.19.3" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== + +uid@2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz" + integrity sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g== + dependencies: + "@lukeed/csprng" "^1.0.0" + +uint8array-extras@^1.4.0: + version "1.5.0" + resolved "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz" + integrity sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== + +undici@^5.14.0: + version "5.29.0" + resolved "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz" + integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== + dependencies: + "@fastify/busboy" "^2.0.0" + +undici@^6.16.1: + version "6.22.0" + resolved "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz" + integrity sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw== + +universal-user-agent@^7.0.0, universal-user-agent@^7.0.2: + version "7.0.3" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz" + integrity sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@~1.0.0, unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unrs-resolver@^1.7.11: + version "1.11.1" + resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz" + integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== + dependencies: + napi-postinstall "^0.3.0" + optionalDependencies: + "@unrs/resolver-binding-android-arm-eabi" "1.11.1" + "@unrs/resolver-binding-android-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-x64" "1.11.1" + "@unrs/resolver-binding-freebsd-x64" "1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-arm64-musl" "1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-musl" "1.11.1" + "@unrs/resolver-binding-wasm32-wasi" "1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1" + "@unrs/resolver-binding-win32-x64-msvc" "1.11.1" + +update-browserslist-db@^1.2.0: + version "1.2.3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urijs@^1.19.1: + version "1.19.11" + resolved "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz" + integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +utif2@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz" + integrity sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w== + dependencies: + pako "^1.0.11" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@^1.0.1, utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@*, uuid@^13.0.0: + version "13.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz" + integrity sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz" + integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +validator@^13.15.20: + version "13.15.26" + resolved "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz" + integrity sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +viem@^2.30.0, viem@^2.43.3: + version "2.43.3" + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.2.3" + isows "1.0.7" + ox "0.11.1" + ws "8.18.3" + +viem@^2.43.2: + version "2.43.2" + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.2.3" + isows "1.0.7" + ox "0.10.6" + ws "8.18.3" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.4.1, watchpack@^2.4.4: + version "2.4.4" + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +web3-utils@^1.3.6: + version "1.10.4" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz" + integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +webpack-node-externals@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" + integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== + +webpack-sources@^3.2.3, webpack-sources@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz" + integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== + +webpack@^5.0.0, webpack@^5.1.0: + version "5.104.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz" + integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.8" + "@types/json-schema" "^7.0.15" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.15.0" + acorn-import-phases "^1.0.3" + browserslist "^4.28.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.4" + es-module-lexer "^2.0.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.3.1" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^4.3.3" + tapable "^2.3.0" + terser-webpack-plugin "^5.3.16" + watchpack "^2.4.4" + webpack-sources "^3.3.3" + +webpack@^5.11.0, webpack@5.97.1: + version "5.97.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz" + integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.14.0" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.1" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + +whatwg-url@^14.1.0: + version "14.2.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz" + integrity sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw== + dependencies: + tr46 "^5.1.0" + webidl-conversions "^7.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-typed-array@^1.1.16: + version "1.1.19" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + +which@^1.1.1, which@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +word-wrap@^1.2.5, word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + +ws@*, ws@8.18.3: + version "8.18.3" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + +ws@^7.4.6: + version "7.5.10" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +ws@8.18.0: + version "8.18.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xml-parse-from-string@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz" + integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== + +xml2js@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz" + integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1, yargs-parser@21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +"zod@^3.22.0 || ^4.0.0", zod@^3.23.8: + version "3.25.76" + resolved "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz" + integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== From 925b5e1fe56c691f2f19a367d4cde14de8e2ade3 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 16:24:45 +0530 Subject: [PATCH 17/21] "admin deployment completed" --- .../adapters/evm/evm-blockchain.adapter.ts | 14 +- .../adapters/evm/evm-wallet.adapter.ts | 30 +- .../modules/blockchain/blockchain.module.ts | 78 --- .../interfaces/chain-manager.interface.ts | 2 + .../blockchain/managers/arbitrum.manager.ts | 27 +- .../blockchain/managers/creditcoin.manager.ts | 46 +- .../blockchain/managers/mantle.manager.ts | 26 +- .../blockchain/managers/stellar.manager.ts | 26 +- .../middleware/network-context.middleware.ts | 19 +- .../blockchain/services/blockchain.service.ts | 641 ++---------------- .../chain-manager-registry.service.ts | 16 +- .../services/network-registry.service.ts | 68 +- 12 files changed, 261 insertions(+), 732 deletions(-) diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts index 3fac3653..54fe014f 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts @@ -32,11 +32,17 @@ export class EvmBlockchainAdapter implements BlockchainAdapter { private readonly walletAdapter: EvmWalletAdapter, private readonly contractAdapter: EvmContractAdapter, private readonly assetModel: Model, + configOverride?: { + rpcUrl?: string; + chainId?: number; + networkName?: string; + nativeSymbol?: string; + } ) { - const rpcUrl = this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; - const chainId = this.configService.get('blockchain.chainId') || 5003; - const networkName = this.configService.get('network.networkName') || 'Mantle Sepolia'; - const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; + const rpcUrl = configOverride?.rpcUrl || this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; + const chainId = configOverride?.chainId || this.configService.get('blockchain.chainId') || 5003; + const networkName = configOverride?.networkName || this.configService.get('network.networkName') || 'Mantle Sepolia'; + const nativeSymbol = configOverride?.nativeSymbol || this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; const chain = defineChain({ id: chainId, diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts index cc6f575e..93e831df 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-wallet.adapter.ts @@ -10,16 +10,26 @@ export class EvmWalletAdapter implements WalletAdapter { private chain: any; private rpcUrl: string; - constructor(private configService: ConfigService) { - const adminPk = this.configService.get('blockchain.adminPrivateKey'); - const platformPk = this.configService.get('blockchain.platformPrivateKey'); - this.rpcUrl = this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; - const chainId = this.configService.get('blockchain.chainId') || 5003; - const networkName = this.configService.get('network.networkName') || 'Mantle Sepolia'; - const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; - - if (!adminPk) throw new Error('ADMIN_PRIVATE_KEY not configured'); - if (!platformPk) throw new Error('PLATFORM_PRIVATE_KEY not configured'); + constructor( + private configService: ConfigService, + configOverride?: { + rpcUrl?: string; + chainId?: number; + networkName?: string; + nativeSymbol?: string; + adminPk?: string; + platformPk?: string; + } + ) { + const adminPk = configOverride?.adminPk || this.configService.get('blockchain.adminPrivateKey'); + const platformPk = configOverride?.platformPk || this.configService.get('blockchain.platformPrivateKey'); + this.rpcUrl = configOverride?.rpcUrl || this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; + const chainId = configOverride?.chainId || this.configService.get('blockchain.chainId') || 5003; + const networkName = configOverride?.networkName || this.configService.get('network.networkName') || 'Mantle Sepolia'; + const nativeSymbol = configOverride?.nativeSymbol || this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; + + if (!adminPk) throw new Error('Admin private key not configured'); + if (!platformPk) throw new Error('Platform private key not configured'); this.adminAccount = privateKeyToAccount(adminPk as `0x${string}`); this.platformAccount = privateKeyToAccount(platformPk as `0x${string}`); diff --git a/packages/backend/src/modules/blockchain/blockchain.module.ts b/packages/backend/src/modules/blockchain/blockchain.module.ts index 92d0487c..d248f8f4 100644 --- a/packages/backend/src/modules/blockchain/blockchain.module.ts +++ b/packages/backend/src/modules/blockchain/blockchain.module.ts @@ -81,78 +81,6 @@ export class BlockchainModule implements NestModule { ChainManagerRegistry, NetworkContextService, - // Adapters (Determined at runtime via factory) - { - provide: CONTRACT_ADAPTER, - useFactory: (configService: ConfigService) => { - const networkType = configService.get('network.networkType'); - if (networkType === 'stellar') { - return new StellarContractAdapter(); - } - return new EvmContractAdapter(configService); - }, - inject: [ConfigService], - }, - { - provide: WALLET_ADAPTER, - useFactory: (configService: ConfigService) => { - const networkType = configService.get('network.networkType'); - if (networkType === 'stellar') { - return new StellarWalletAdapter(configService); - } - return new EvmWalletAdapter(configService); - }, - inject: [ConfigService], - }, - { - provide: BLOCKCHAIN_ADAPTER, - useFactory: (configService: ConfigService, wallet: any, contract: any, assetModel: Model) => { - const networkType = configService.get('network.networkType'); - if (networkType === 'stellar') { - return new StellarBlockchainAdapter(configService, wallet, contract, assetModel); - } - return new EvmBlockchainAdapter(configService, wallet, contract, assetModel); - }, - inject: [ConfigService, WALLET_ADAPTER, CONTRACT_ADAPTER, getModelToken(Asset.name)], - }, - { - provide: EVENT_ADAPTER, - useFactory: (configService: ConfigService, contract: any, queue: Queue) => { - const networkType = configService.get('network.networkType'); - if (networkType === 'stellar') { - // TODO: Implement StellarEventAdapter - return { - startListening: async () => {}, - stopListening: async () => {}, - }; - } - return new EvmEventAdapter(configService, contract, queue); - }, - inject: [ConfigService, CONTRACT_ADAPTER, 'BullQueue_event-processing'], - }, - { - provide: AUTH_VERIFICATION_ADAPTER, - useFactory: (configService: ConfigService) => { - const networkType = configService.get('network.networkType'); - if (networkType === 'stellar') { - return new StellarAuthVerificationAdapter(); - } - return new EvmAuthVerificationAdapter(); - }, - inject: [ConfigService], - }, - { - provide: PAYMENT_ADAPTER, - useFactory: (configService: ConfigService) => { - const networkType = configService.get('network.networkType'); - if (networkType === 'stellar') { - return new StellarPaymentAdapter(configService); - } - return new EvmPaymentAdapter(configService); - }, - inject: [ConfigService], - }, - // Legacy Services (Wrappers) BlockchainService, WalletService, @@ -163,12 +91,6 @@ export class BlockchainModule implements NestModule { EventProcessor, ], exports: [ - BLOCKCHAIN_ADAPTER, - WALLET_ADAPTER, - EVENT_ADAPTER, - CONTRACT_ADAPTER, - AUTH_VERIFICATION_ADAPTER, - PAYMENT_ADAPTER, NetworkRegistryService, ChainManagerRegistry, NetworkContextService, diff --git a/packages/backend/src/modules/blockchain/interfaces/chain-manager.interface.ts b/packages/backend/src/modules/blockchain/interfaces/chain-manager.interface.ts index a22cf96a..5e8be0fa 100644 --- a/packages/backend/src/modules/blockchain/interfaces/chain-manager.interface.ts +++ b/packages/backend/src/modules/blockchain/interfaces/chain-manager.interface.ts @@ -1,9 +1,11 @@ import { NetworkType } from '@openassets/types'; import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { BlockchainAdapter } from '../adapters/blockchain-adapter.interface'; export interface ChainManager { getType(): NetworkType; getContractAdapter(): ContractAdapter; + getBlockchainAdapter(): BlockchainAdapter; startBackgroundOperations(): Promise; stopBackgroundOperations(): Promise; } diff --git a/packages/backend/src/modules/blockchain/managers/arbitrum.manager.ts b/packages/backend/src/modules/blockchain/managers/arbitrum.manager.ts index 4d2e53d2..7e73accd 100644 --- a/packages/backend/src/modules/blockchain/managers/arbitrum.manager.ts +++ b/packages/backend/src/modules/blockchain/managers/arbitrum.manager.ts @@ -3,14 +3,33 @@ import { ConfigService } from '@nestjs/config'; import { NetworkType } from '@openassets/types'; import { ChainManager } from '../interfaces/chain-manager.interface'; import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { BlockchainAdapter } from '../adapters/blockchain-adapter.interface'; import { EvmContractAdapter } from '../adapters/evm/evm-contract-loader.adapter'; +import { EvmWalletAdapter } from '../adapters/evm/evm-wallet.adapter'; +import { EvmBlockchainAdapter } from '../adapters/evm/evm-blockchain.adapter'; +import { Model } from 'mongoose'; +import { AssetDocument } from '../../../database/schemas/asset.schema'; export class ArbitrumChainManager implements ChainManager { private readonly logger = new Logger(ArbitrumChainManager.name); - private readonly contractAdapter: ContractAdapter; + private readonly contractAdapter: EvmContractAdapter; + private readonly walletAdapter: EvmWalletAdapter; + private readonly blockchainAdapter: EvmBlockchainAdapter; - constructor(private configService: ConfigService) { + constructor( + private configService: ConfigService, + private assetModel: Model + ) { + // Arbitrum currently uses Mantle config as default if not specified, + // but EvmContractAdapter handles the network-specific contract loading. this.contractAdapter = new EvmContractAdapter(this.configService); + this.walletAdapter = new EvmWalletAdapter(this.configService); + this.blockchainAdapter = new EvmBlockchainAdapter( + this.configService, + this.walletAdapter, + this.contractAdapter, + this.assetModel + ); } getType(): NetworkType { @@ -21,6 +40,10 @@ export class ArbitrumChainManager implements ChainManager { return this.contractAdapter; } + getBlockchainAdapter(): BlockchainAdapter { + return this.blockchainAdapter; + } + async startBackgroundOperations(): Promise { this.logger.log('Starting Arbitrum background operations...'); } diff --git a/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts b/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts index 6c3517be..ca994038 100644 --- a/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts +++ b/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts @@ -3,19 +3,56 @@ import { ConfigService } from '@nestjs/config'; import { NetworkType } from '@openassets/types'; import { ChainManager } from '../interfaces/chain-manager.interface'; import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { BlockchainAdapter } from '../adapters/blockchain-adapter.interface'; import { EvmContractAdapter } from '../adapters/evm/evm-contract-loader.adapter'; +import { EvmWalletAdapter } from '../adapters/evm/evm-wallet.adapter'; +import { EvmBlockchainAdapter } from '../adapters/evm/evm-blockchain.adapter'; import { CreditCoinContracts, CreditCoinAbis } from '@contracts/creditcoin'; +import { Model } from 'mongoose'; +import { AssetDocument } from '../../../database/schemas/asset.schema'; export class CreditCoinChainManager implements ChainManager { private readonly logger = new Logger(CreditCoinChainManager.name); - private readonly contractAdapter: ContractAdapter; + private readonly contractAdapter: EvmContractAdapter; + private readonly walletAdapter: EvmWalletAdapter; + private readonly blockchainAdapter: EvmBlockchainAdapter; + + constructor( + private configService: ConfigService, + private assetModel: Model + ) { + const rpcUrl = this.configService.get('CREDITCOIN_RPC_URL'); + const chainId = Number(this.configService.get('CREDITCOIN_CHAIN_ID')); + const adminPk = this.configService.get('CREDITCOIN_ADMIN_PRIVATE_KEY'); + const platformPk = this.configService.get('CREDITCOIN_PLATFORM_PRIVATE_KEY'); - constructor(private configService: ConfigService) { this.contractAdapter = new EvmContractAdapter( this.configService, CreditCoinContracts as Record, CreditCoinAbis as Record, ); + + this.walletAdapter = new EvmWalletAdapter(this.configService, { + rpcUrl, + chainId, + adminPk, + platformPk, + networkName: 'Credit Coin CC3', + nativeSymbol: 'CTC', + }); + + this.blockchainAdapter = new EvmBlockchainAdapter( + this.configService, + this.walletAdapter, + this.contractAdapter, + this.assetModel, + { + rpcUrl, + chainId, + networkName: 'Credit Coin CC3', + nativeSymbol: 'CTC', + } + ); } getType(): NetworkType { @@ -26,9 +63,12 @@ export class CreditCoinChainManager implements ChainManager { return this.contractAdapter; } + getBlockchainAdapter(): BlockchainAdapter { + return this.blockchainAdapter; + } + async startBackgroundOperations(): Promise { this.logger.log('Starting Credit Coin background operations...'); - // Block polling and event processing to be added here } async stopBackgroundOperations(): Promise { diff --git a/packages/backend/src/modules/blockchain/managers/mantle.manager.ts b/packages/backend/src/modules/blockchain/managers/mantle.manager.ts index 48e82557..7195989b 100644 --- a/packages/backend/src/modules/blockchain/managers/mantle.manager.ts +++ b/packages/backend/src/modules/blockchain/managers/mantle.manager.ts @@ -3,14 +3,31 @@ import { ConfigService } from '@nestjs/config'; import { NetworkType } from '@openassets/types'; import { ChainManager } from '../interfaces/chain-manager.interface'; import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { BlockchainAdapter } from '../adapters/blockchain-adapter.interface'; import { EvmContractAdapter } from '../adapters/evm/evm-contract-loader.adapter'; +import { EvmWalletAdapter } from '../adapters/evm/evm-wallet.adapter'; +import { EvmBlockchainAdapter } from '../adapters/evm/evm-blockchain.adapter'; +import { Model } from 'mongoose'; +import { AssetDocument } from '../../../database/schemas/asset.schema'; export class MantleChainManager implements ChainManager { private readonly logger = new Logger(MantleChainManager.name); - private readonly contractAdapter: ContractAdapter; + private readonly contractAdapter: EvmContractAdapter; + private readonly walletAdapter: EvmWalletAdapter; + private readonly blockchainAdapter: EvmBlockchainAdapter; - constructor(private configService: ConfigService) { + constructor( + private configService: ConfigService, + private assetModel: Model + ) { this.contractAdapter = new EvmContractAdapter(this.configService); + this.walletAdapter = new EvmWalletAdapter(this.configService); + this.blockchainAdapter = new EvmBlockchainAdapter( + this.configService, + this.walletAdapter, + this.contractAdapter, + this.assetModel + ); } getType(): NetworkType { @@ -21,9 +38,12 @@ export class MantleChainManager implements ChainManager { return this.contractAdapter; } + getBlockchainAdapter(): BlockchainAdapter { + return this.blockchainAdapter; + } + async startBackgroundOperations(): Promise { this.logger.log('Starting Mantle background operations...'); - // TODO: Move polling logic here in next step } async stopBackgroundOperations(): Promise { diff --git a/packages/backend/src/modules/blockchain/managers/stellar.manager.ts b/packages/backend/src/modules/blockchain/managers/stellar.manager.ts index f4df1a29..a66b80a0 100644 --- a/packages/backend/src/modules/blockchain/managers/stellar.manager.ts +++ b/packages/backend/src/modules/blockchain/managers/stellar.manager.ts @@ -1,15 +1,33 @@ import { Logger } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { NetworkType } from '@openassets/types'; import { ChainManager } from '../interfaces/chain-manager.interface'; import { ContractAdapter } from '../adapters/contract-adapter.interface'; +import { BlockchainAdapter } from '../adapters/blockchain-adapter.interface'; import { StellarContractAdapter } from '../adapters/stellar/stellar-contract-loader.adapter'; +import { StellarWalletAdapter } from '../adapters/stellar/stellar-wallet.adapter'; +import { StellarBlockchainAdapter } from '../adapters/stellar/stellar-blockchain.adapter'; +import { Model } from 'mongoose'; +import { AssetDocument } from '../../../database/schemas/asset.schema'; export class StellarChainManager implements ChainManager { private readonly logger = new Logger(StellarChainManager.name); - private readonly contractAdapter: ContractAdapter; + private readonly contractAdapter: StellarContractAdapter; + private readonly walletAdapter: StellarWalletAdapter; + private readonly blockchainAdapter: StellarBlockchainAdapter; - constructor() { + constructor( + private configService: ConfigService, + private assetModel: Model + ) { this.contractAdapter = new StellarContractAdapter(); + this.walletAdapter = new StellarWalletAdapter(this.configService); + this.blockchainAdapter = new StellarBlockchainAdapter( + this.configService, + this.walletAdapter, + this.contractAdapter, + this.assetModel + ); } getType(): NetworkType { @@ -20,6 +38,10 @@ export class StellarChainManager implements ChainManager { return this.contractAdapter; } + getBlockchainAdapter(): BlockchainAdapter { + return this.blockchainAdapter; + } + async startBackgroundOperations(): Promise { this.logger.log('Starting Stellar background operations...'); } diff --git a/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts b/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts index 4ff932c8..aa588199 100644 --- a/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts +++ b/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts @@ -1,11 +1,22 @@ -import { Injectable, NestMiddleware, BadRequestException } from '@nestjs/common'; +import { Injectable, NestMiddleware, BadRequestException, ForbiddenException } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; +import { ConfigService } from '@nestjs/config'; import { NetworkType } from '@openassets/types'; import { NetworkContextService } from '../services/network-context.service'; @Injectable() export class NetworkContextMiddleware implements NestMiddleware { - constructor(private readonly networkContextService: NetworkContextService) {} + private enabledNetworks: NetworkType[] = []; + + constructor( + private readonly networkContextService: NetworkContextService, + private readonly configService: ConfigService, + ) { + const enabledStr = this.configService.get('ENABLED_NETWORKS') || + this.configService.get('network.networkType') || + 'mantle'; + this.enabledNetworks = enabledStr.split(',').map(n => n.trim() as NetworkType); + } use(req: Request, res: Response, next: NextFunction) { const networkHeader = req.header('X-Network')?.toLowerCase(); @@ -20,6 +31,10 @@ export class NetworkContextMiddleware implements NestMiddleware { } } + if (!this.enabledNetworks.includes(network)) { + throw new ForbiddenException(`Network ${network} is not enabled on this deployment`); + } + this.networkContextService.runWithNetwork(network, () => { // Add network to request object for easy access if needed (req as any).network = network; diff --git a/packages/backend/src/modules/blockchain/services/blockchain.service.ts b/packages/backend/src/modules/blockchain/services/blockchain.service.ts index 2b6235f5..22dfd9e2 100644 --- a/packages/backend/src/modules/blockchain/services/blockchain.service.ts +++ b/packages/backend/src/modules/blockchain/services/blockchain.service.ts @@ -1,309 +1,53 @@ import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { createPublicClient, http, Hash, Address, decodeEventLog, parseAbi, defineChain } from 'viem'; -import { ContractLoaderService } from './contract-loader.service'; -import { WalletService } from './wallet.service'; +import { Hash, ListingType } from 'viem'; +import { NetworkRegistryService } from './network-registry.service'; import { RegisterAssetDto } from '../dto/register-asset.dto'; import { DeployTokenDto } from '../dto/deploy-token.dto'; -import { InjectModel } from '@nestjs/mongoose'; -import { Model } from 'mongoose'; -import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; -import { fromCanonical } from '../utils/numeric-conversion'; @Injectable() export class BlockchainService { private readonly logger = new Logger(BlockchainService.name); - private publicClient; constructor( - private configService: ConfigService, - private contractLoader: ContractLoaderService, - private walletService: WalletService, - @InjectModel(Asset.name) private assetModel: Model, - ) { - const rpcUrl = this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; - const chainId = this.configService.get('blockchain.chainId') || 5003; - const networkName = this.configService.get('network.networkName') || 'Mantle Sepolia'; - const nativeSymbol = this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; - const chain = defineChain({ - id: chainId, - name: networkName, - nativeCurrency: { decimals: 18, name: nativeSymbol, symbol: nativeSymbol }, - rpcUrls: { default: { http: [rpcUrl] }, public: { http: [rpcUrl] } }, - }); - this.publicClient = createPublicClient({ - chain, - transport: http(rpcUrl), - }); - } - - private async executeWithRetry( - operation: () => Promise, - description: string, - maxRetries: number = 5, - initialDelay: number = 2000, - ): Promise { - let retries = 0; - let delay = initialDelay; - - while (true) { - try { - return await operation(); - } catch (error: any) { - retries++; - if (retries > maxRetries) { - this.logger.error(`Failed ${description} after ${maxRetries} retries: ${error.message}`); - throw error; - } - this.logger.warn( - `Error in ${description} (attempt ${retries}/${maxRetries}): ${error.message}. Retrying in ${delay}ms...`, - ); - await new Promise((resolve) => setTimeout(resolve, delay)); - delay *= 2; - } - } - } + private networkRegistry: NetworkRegistryService, + ) { } async registerAsset(dto: RegisterAssetDto): Promise { - const { assetId, attestationHash, blobId, payload, signature } = dto; - const wallet = this.walletService.getAdminWallet(); - const address = this.contractLoader.getContractAddress('AttestationRegistry'); - const abi = this.contractLoader.getContractAbi('AttestationRegistry'); - - this.logger.log(`Registering asset ${assetId} on-chain...`); - - const hash = await this.executeWithRetry(() => wallet.writeContract({ - address: address as Address, - abi, - functionName: 'registerAsset', - args: [assetId, attestationHash, blobId, payload, signature], - account: wallet.account!, - }), 'registerAsset write'); - - // Don't wait for receipt - return immediately - this.logger.log(`Asset registered: ${hash}`); - return hash; + const result = await this.networkRegistry.registerAssetOnChain(dto); + return result.txId as Hash; } async registerIdentity(walletAddress: string): Promise { - const wallet = this.walletService.getAdminWallet(); // Admin is trusted issuer - const address = this.contractLoader.getContractAddress('IdentityRegistry'); - const oaidAddress = this.contractLoader.getContractAddress('OAID'); - const abi = this.contractLoader.getContractAbi('IdentityRegistry'); - const oaidAbi = this.contractLoader.getContractAbi('OAID'); - - - this.logger.log(`Registering identity for ${walletAddress}...`); - - const hash = await this.executeWithRetry(() => wallet.writeContract({ - address: address as Address, - abi, - functionName: 'registerIdentity', - args: [walletAddress], - account: wallet.account!, - }), 'registerIdentity write'); - - this.logger.log(`Transaction submitted: ${hash}, waiting for confirmation...`); - await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash, - timeout: 300000, // 5 minutes timeout - }), 'registerIdentity receipt'); - this.logger.log(`Identity registration confirmed for ${walletAddress}`); - - this.logger.log(`Registering OAID for ${walletAddress}...`); - - // const oidHash = await this.executeWithRetry(() => wallet.writeContract({ - // address: oaidAddress as Address, - // abi: oaidAbi, - // functionName: 'registerUser', - // args: [walletAddress], - // }), 'registerUser write'); - - // this.logger.log(`Transaction submitted: ${oidHash}, waiting for confirmation...`); - // await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - // hash: oidHash, - // timeout: 300000, // 5 minutes timeout - // }), 'registerUser receipt'); - // this.logger.log(`Identity registration confirmed for ${walletAddress}`); - - return hash; + const result = await this.networkRegistry.registerIdentityOnChain(walletAddress); + return result.txId as Hash; } async deployToken(dto: DeployTokenDto): Promise<{ hash: string; tokenAddress?: string; complianceAddress?: string }> { - const wallet = this.walletService.getAdminWallet(); - const address = this.contractLoader.getContractAddress('TokenFactory'); - const abi = this.contractLoader.getContractAbi('TokenFactory'); - - this.logger.log(`Deploying token for asset ${dto.assetId}...`); - - // Convert UUID to bytes32 for on-chain usage - const assetIdBytes32 = '0x' + dto.assetId.replace(/-/g, '').padEnd(64, '0'); - - // Get total supply from asset or DTO - let totalSupplyWei: bigint; - - if (dto.totalSupply) { - totalSupplyWei = fromCanonical(dto.totalSupply, 18); - this.logger.log(`Using provided totalSupply: ${dto.totalSupply} → ${totalSupplyWei} wei`); - } else { - const asset = await this.assetModel.findOne({ assetId: dto.assetId }); - if (!asset) { - throw new Error(`Asset ${dto.assetId} not found`); - } - - if (!asset.tokenParams?.totalSupply) { - throw new Error(`Asset ${dto.assetId} missing tokenParams.totalSupply`); - } - - totalSupplyWei = fromCanonical(asset.tokenParams.totalSupply, 18); - this.logger.log(`Using asset's totalSupply: ${asset.tokenParams.totalSupply} → ${totalSupplyWei} wei`); - } - const issuer = dto.issuer || wallet.account!.address; // Default to admin wallet - - this.logger.log(`Token params: supply=${Number(totalSupplyWei) / 1e18} tokens (${totalSupplyWei} wei), name=${dto.name}, symbol=${dto.symbol}, issuer=${issuer}`); - - // Check wallet balance before submitting transaction - const balance = await this.publicClient.getBalance({ address: wallet.account!.address as Address }); - this.logger.log(`Admin wallet ${wallet.account!.address} balance: ${Number(balance) / 1e18} MNT`); - - if (balance === BigInt(0)) { - throw new Error(`Admin wallet has no MNT for gas. Please fund ${wallet.account!.address}`); - } - - this.logger.log(`Submitting transaction to TokenFactory at ${address}...`); - - let hash: `0x${string}`; - try { - hash = await this.executeWithRetry(() => wallet.writeContract({ - address: address as Address, - abi, - functionName: 'deployTokenSuite', - args: [assetIdBytes32, totalSupplyWei, dto.name, dto.symbol, issuer], - account: wallet.account!, - }), 'deployTokenSuite write'); - - this.logger.log(`Transaction submitted successfully: ${hash}`); - } catch (error) { - this.logger.error(`Failed to submit transaction:`, error); - throw error; - } - - this.logger.log(`Token deployment submitted in tx: ${hash}`); - this.logger.log(`Waiting for transaction confirmation...`); - - // Wait for transaction receipt (increased timeout for Mantle RPC) - const receipt = await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash, - timeout: 180000, // 3 minute timeout (Mantle RPC can be slow) - pollingInterval: 2000, // Check every 2 seconds - }), 'deployTokenSuite receipt'); - - this.logger.log(`Transaction confirmed in block ${receipt.blockNumber}`); - - // Parse logs to extract token address - let tokenAddress: string | undefined; - let complianceAddress: string | undefined; - - for (const log of receipt.logs) { - try { - const decoded = decodeEventLog({ - abi, - data: log.data, - topics: log.topics, - }) as { eventName: string; args: any }; - - if (decoded.eventName === 'TokenSuiteDeployed') { - const args = decoded.args; - tokenAddress = args.token; - complianceAddress = args.compliance; - this.logger.log(`Token deployed at: ${tokenAddress}`); - this.logger.log(`Compliance module at: ${complianceAddress}`); - break; - } - } catch (e) { - // Skip logs that don't match - continue; - } - } - - if (!tokenAddress) { - this.logger.error(`Could not find TokenSuiteDeployed event in transaction logs`); - // Still return hash, but status won't be updated - return { hash }; - } - - this.logger.log(`Token deployed successfully - Address: ${tokenAddress}, Compliance: ${complianceAddress}`); - - return { hash, tokenAddress, complianceAddress }; + const result = await this.networkRegistry.deployAssetToken(dto.assetId, dto.totalSupply || 0, { + name: dto.name, + symbol: dto.symbol, + }); + return { + hash: result.txId, + tokenAddress: result.primaryIdentifier, + complianceAddress: result.auxiliaryIdentifier, + }; } async depositYield(tokenAddress: string, amount: string): Promise { - const wallet = this.walletService.getPlatformWallet(); - const yieldVaultAddress = this.contractLoader.getContractAddress('YieldVault'); - const yieldVaultAbi = this.contractLoader.getContractAbi('YieldVault'); - - // Step 1: Approve USDC for YieldVault to spend - const usdcAddress = this.contractLoader.getContractAddress('USDC'); - const usdcAbi = this.contractLoader.getContractAbi('USDC'); - - this.logger.log(`Approving YieldVault to spend ${amount} USDC...`); - - const approvalHash = await this.executeWithRetry(() => wallet.writeContract({ - address: usdcAddress as Address, - abi: usdcAbi, - functionName: 'approve', - args: [yieldVaultAddress, BigInt(amount)], - account: wallet.account!, - }), 'approve USDC write'); - - await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash: approvalHash, - timeout: 180000, // 3 minute timeout (Mantle RPC can be slow) - pollingInterval: 2000, // Check every 2 seconds - }), 'approve USDC receipt'); - this.logger.log(`USDC approved in tx: ${approvalHash}`); - - // Step 2: Deposit yield to vault - this.logger.log(`Depositing ${amount} USDC to YieldVault for token ${tokenAddress}...`); - - const hash = await this.executeWithRetry(() => wallet.writeContract({ - address: yieldVaultAddress as Address, - abi: yieldVaultAbi, - functionName: 'depositYield', - args: [tokenAddress, BigInt(amount)], - account: wallet.account!, - }), 'depositYield write'); - - await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash, - timeout: 180000, // 3 minute timeout (Mantle RPC can be slow) - pollingInterval: 2000, // Check every 2 seconds - }), 'depositYield receipt'); - this.logger.log(`Yield deposited in tx: ${hash}`); - return hash; + const result = await this.networkRegistry.depositYieldToVault(tokenAddress, amount); + return result.txId as Hash; } async distributeYield(tokenAddress: string, holders: string[], amounts: string[]): Promise { - const wallet = this.walletService.getPlatformWallet(); - const address = this.contractLoader.getContractAddress('YieldVault'); - const abi = this.contractLoader.getContractAbi('YieldVault'); - - const amountBigInts = amounts.map(a => BigInt(a)); - - const hash = await this.executeWithRetry(() => wallet.writeContract({ - address: address as Address, - abi, - functionName: 'distributeYieldBatch', - args: [tokenAddress, holders, amountBigInts], - account: wallet.account!, - }), 'distributeYieldBatch write'); - - await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash, - timeout: 180000, // 3 minute timeout (Mantle RPC can be slow) - pollingInterval: 2000, // Check every 2 seconds - }), 'distributeYieldBatch receipt'); - return hash; + // This method is not in NetworkRegistryService yet, adding it would be better + // For now, route directly to adapter + const adapter = (this.networkRegistry as any).getBlockchainAdapter(); + if (adapter.distributeYield) { + return await adapter.distributeYield(tokenAddress, holders, amounts); + } + throw new Error('distributeYield not supported on this network'); } async listOnMarketplace( @@ -314,320 +58,51 @@ export class BlockchainService { duration?: string, minPrice?: string, ): Promise { - try { - const wallet = this.walletService.getAdminWallet(); - const address = this.contractLoader.getContractAddress('PrimaryMarketplace'); - const abi = this.contractLoader.getContractAbi('PrimaryMarketplace'); - - this.logger.log(`========== Starting listOnMarketplace ==========`); - this.logger.log(`Input params: tokenAddress=${tokenAddress}, type=${type}, price=${price}, minInvestment=${minInvestment}, duration=${duration}, minPrice=${minPrice}`); - this.logger.log(`Marketplace contract: ${address}`); - this.logger.log(`Admin wallet: ${wallet.account!.address}`); - - // Get asset info from database to extract assetId and totalSupply - this.logger.log(`Querying database for asset with token.address: ${tokenAddress}`); - const asset = await this.assetModel.findOne({ 'token.address': tokenAddress }); - - if (!asset) { - this.logger.error(`āŒ Asset not found for token ${tokenAddress}`); - throw new Error(`Asset not found for token ${tokenAddress}`); - } - - this.logger.log(`āœ“ Asset found: ${asset.assetId}`); - this.logger.log(`Asset data: tokenParams.totalSupply=${asset.tokenParams?.totalSupply}, token.supply=${asset.token?.supply}`); - - // Convert UUID to bytes32 - const assetIdBytes32 = ('0x' + asset.assetId.replace(/-/g, '').padEnd(64, '0')) as Hash; - this.logger.log(`AssetId bytes32: ${assetIdBytes32}`); - - const totalSupplyRaw = asset.tokenParams?.totalSupply || asset.token?.supply || '100000000000000000000'; - const totalSupplyWei = fromCanonical(totalSupplyRaw, 18); - this.logger.log(`Total supply: raw=${totalSupplyRaw}, wei=${totalSupplyWei.toString()}`); - - // Determine listing type enum (0 = STATIC, 1 = AUCTION) - const listingTypeEnum = type === 'STATIC' ? 0 : 1; - - // Log all contract call parameters - this.logger.log(`========== Contract Call Parameters ==========`); - this.logger.log(`Function: createListing`); - this.logger.log(` [0] assetId: ${assetIdBytes32}`); - this.logger.log(` [1] tokenAddress: ${tokenAddress}`); - this.logger.log(` [2] listingType: ${listingTypeEnum} (${type})`); - this.logger.log(` [3] priceOrReserve: ${price}`); - this.logger.log(` [4] minPrice: ${minPrice || '0'}`); - this.logger.log(` [5] duration: ${duration || '0'}`); - this.logger.log(` [6] totalSupply: ${totalSupplyWei.toString()}`); - this.logger.log(` [7] minInvestment: ${minInvestment}`); - this.logger.log(`==============================================`); - - // New createListing signature: - // createListing(assetId, tokenAddress, listingType, priceOrReserve, minPrice, duration, totalSupply, minInvestment) - - this.logger.log(`Submitting transaction...`); - const hash = await this.executeWithRetry(() => wallet.writeContract({ - address: address as Address, - abi, - functionName: 'createListing', - args: [ - assetIdBytes32, - tokenAddress as Address, - listingTypeEnum, - fromCanonical(price, 6), // priceOrReserve in USDC wei (6 decimals) - fromCanonical(minPrice || '0', 6), // minPrice in USDC wei (0 for STATIC) - BigInt(duration || '0'), // duration in seconds (integer) - totalSupplyWei, // totalSupply in token wei (18 decimals) - fromCanonical(minInvestment, 6), // minInvestment in USDC wei (6 decimals) - ], - account: wallet.account!, - }), 'createListing write'); - - this.logger.log(`āœ“ Transaction submitted: ${hash}`); - this.logger.log(`Waiting for transaction receipt...`); - - const receipt = await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash, - timeout: 180000, - pollingInterval: 2000, - }), 'createListing receipt'); - - this.logger.log(`āœ“ Transaction confirmed in block ${receipt.blockNumber}`); - this.logger.log(`Transaction status: ${receipt.status}`); - this.logger.log(`Gas used: ${receipt.gasUsed.toString()}`); - this.logger.log(`${type} listing created successfully in tx: ${hash}`); - this.logger.log(`========== listOnMarketplace completed ==========`); - - return hash; - } catch (error: any) { - this.logger.error(`========== listOnMarketplace FAILED ==========`); - this.logger.error(`Error type: ${error?.constructor?.name || typeof error}`); - this.logger.error(`Error message: ${error?.message || String(error)}`); - - // BigInt-safe JSON serializer - const bigIntReplacer = (_key: string, value: any) => - typeof value === 'bigint' ? value.toString() : value; - - if (error?.cause) { - this.logger.error(`Error cause: ${JSON.stringify(error.cause, bigIntReplacer, 2)}`); - } - - if (error?.metaMessages) { - this.logger.error(`Meta messages: ${JSON.stringify(error.metaMessages, bigIntReplacer, 2)}`); - } - - if (error?.details) { - this.logger.error(`Error details: ${error.details}`); - } - - if (error?.data) { - this.logger.error(`Error data: ${JSON.stringify(error.data, bigIntReplacer, 2)}`); - } - - if (error?.stack) { - this.logger.error(`Stack trace: ${error.stack}`); - } - - this.logger.error(`Full error: ${JSON.stringify(error, bigIntReplacer, 2)}`); - this.logger.error(`============================================`); - - throw error; - } + const listingType = type === 'STATIC' ? ListingType.STATIC : ListingType.AUCTION; + + // Total supply is needed for the adapter, but BlockchainService didn't take it as arg. + // The adapter will look it up from the DB if it's EVM. + const result = await this.networkRegistry.listAssetOnMarketplace( + tokenAddress, + listingType as any, + price, + minInvestment, + Number(duration || 0), + '0', // placeholder, adapter will look up if needed + minPrice + ); + return result.txId as Hash; } async approveMarketplace(tokenAddress: string): Promise { - const wallet = this.walletService.getPlatformWallet(); - const marketplaceAddress = this.contractLoader.getContractAddress('PrimaryMarketplace'); - - const tokenAbi = parseAbi([ - 'function approve(address spender, uint256 amount) returns (bool)', - 'function allowance(address owner, address spender) view returns (uint256)', - ]); - - this.logger.log(`Approving marketplace ${marketplaceAddress} to spend tokens from ${tokenAddress}`); - - // Check current allowance - const currentAllowance = await this.executeWithRetry(() => this.publicClient.readContract({ - address: tokenAddress as Address, - abi: tokenAbi, - functionName: 'allowance', - args: [wallet.account!.address, marketplaceAddress as Address], - }), 'allowance check') as bigint; - - if (currentAllowance > 0n) { - this.logger.log(`Marketplace already has approval: ${currentAllowance.toString()}`); - return '0x0' as Hash; // Return dummy hash if already approved + const adapter = (this.networkRegistry as any).getBlockchainAdapter(); + if (adapter.approveMarketplace) { + const result = await adapter.approveMarketplace(tokenAddress); + return result.txId as Hash; } - - // Approve max amount (unlimited approval) - const maxApproval = BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'); // MaxUint256 - - const hash = await this.executeWithRetry(() => wallet.writeContract({ - address: tokenAddress as Address, - abi: tokenAbi, - functionName: 'approve', - args: [marketplaceAddress as Address, maxApproval], - account: wallet.account!, - }), 'approve marketplace write'); - - await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash, - timeout: 180000, - pollingInterval: 2000, - }), 'approve marketplace receipt'); - - this.logger.log(`Marketplace approved in tx: ${hash}`); - return hash; + // Stellar handles this differently (no-op or trustline) + return '0x0' as Hash; } async endAuction(assetId: string, clearingPrice: string): Promise { - const wallet = this.walletService.getAdminWallet(); - const address = this.contractLoader.getContractAddress('PrimaryMarketplace'); - const abi = this.contractLoader.getContractAbi('PrimaryMarketplace'); - - const assetIdBytes32 = ('0x' + assetId.replace(/-/g, '').padEnd(64, '0')) as Hash; - - this.logger.log(`Ending auction for asset ${assetId} with clearing price ${clearingPrice}...`); - - const hash = await this.executeWithRetry(() => wallet.writeContract({ - address: address as Address, - abi, - functionName: 'endAuction', - args: [assetIdBytes32, BigInt(clearingPrice)], - account: wallet.account!, - }), 'endAuction write'); + // Find token address first since networkRegistry uses tokenIdentifier + const adapter = (this.networkRegistry as any).getBlockchainAdapter(); + const asset = await (adapter as any).assetModel.findOne({ assetId }); + if (!asset || !asset.token?.address) { + throw new Error(`Asset or token not found for ${assetId}`); + } - await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash, - timeout: 180000, // 3 minute timeout - pollingInterval: 2000, - }), 'endAuction receipt'); - this.logger.log(`Auction ended in tx: ${hash}`); - return hash; + const result = await this.networkRegistry.endAuctionOnMarketplace(asset.token.address, clearingPrice); + return result.txId as Hash; } async revokeAsset(assetId: string, reason: string): Promise { - const wallet = this.walletService.getAdminWallet(); - const address = this.contractLoader.getContractAddress('AttestationRegistry'); - const abi = this.contractLoader.getContractAbi('AttestationRegistry'); - - const hash = await this.executeWithRetry(() => wallet.writeContract({ - address: address as Address, - abi, - functionName: 'revokeAsset', - args: [assetId, reason], - account: wallet.account!, - }), 'revokeAsset write'); - - await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ hash }), 'revokeAsset receipt'); - return hash; + const result = await this.networkRegistry.revokeAssetOnChain(assetId); + return result.txId as Hash; } - /** - * Burn unsold tokens from custody wallet (marketplace inventory) - * This is called during payout to ensure only sold tokens remain in circulation - */ - async burnUnsoldTokens(tokenAddress: string, assetId: string): Promise<{ - tokensBurned: bigint; - newTotalSupply: bigint; - txHash: string; - }> { - const wallet = this.walletService.getPlatformWallet(); - const tokenAbi = this.contractLoader.getContractAbi('RWAToken'); - - // Get custody wallet address (where unsold tokens are held) - const custodyWalletAddress = this.configService.get('blockchain.custodyAddress'); - - if (!custodyWalletAddress) { - throw new Error('Custody wallet address not configured in .env (CUSTODY_WALLET_ADDRESS)'); - } - - this.logger.log(`Checking unsold token balance in custody wallet ${custodyWalletAddress}...`); - - const unsoldBalance = await this.executeWithRetry(() => this.publicClient.readContract({ - address: tokenAddress as Address, - abi: tokenAbi, - functionName: 'balanceOf', - args: [custodyWalletAddress as Address], - }), 'check unsold balance') as bigint; - - this.logger.log(`Custody wallet holds ${unsoldBalance.toString()} wei (${Number(unsoldBalance) / 1e18} tokens)`); - - if (unsoldBalance === 0n) { - this.logger.log(`āœ… No unsold tokens to burn - all tokens were sold`); - - // Get current total supply - const totalSupply = await this.executeWithRetry(() => this.publicClient.readContract({ - address: tokenAddress as Address, - abi: tokenAbi, - functionName: 'totalSupply', - args: [], - }), 'get totalSupply') as bigint; - - return { tokensBurned: 0n, newTotalSupply: totalSupply, txHash: '' }; - } - - // Burn unsold tokens from custody wallet - // The platform wallet should have authority to burn from custody - this.logger.log(`šŸ”„ Burning ${Number(unsoldBalance) / 1e18} unsold tokens from custody wallet...`); - - let hash: Hash; - if (wallet.account!.address.toLowerCase() === custodyWalletAddress.toLowerCase()) { - // If platform wallet IS custody wallet, use burn() directly - // This avoids allowance requirement for self-burn - hash = await this.executeWithRetry(() => wallet.writeContract({ - address: tokenAddress as Address, - abi: tokenAbi, - functionName: 'burn', - args: [unsoldBalance], - account: wallet.account!, - }), 'burn write'); - } else { - // If different, use burnFrom (requires allowance) - hash = await this.executeWithRetry(() => wallet.writeContract({ - address: tokenAddress as Address, - abi: tokenAbi, - functionName: 'burnFrom', - args: [custodyWalletAddress as Address, unsoldBalance], - account: wallet.account!, - }), 'burnFrom write'); - } - - this.logger.log(`Burn transaction submitted: ${hash}`); - - await this.executeWithRetry(() => this.publicClient.waitForTransactionReceipt({ - hash, - timeout: 180000, - pollingInterval: 2000, - }), 'burn receipt'); - - this.logger.log(`āœ… Burn transaction confirmed in tx: ${hash}`); - - // Get new total supply after burn - const newTotalSupply = await this.executeWithRetry(() => this.publicClient.readContract({ - address: tokenAddress as Address, - abi: tokenAbi, - functionName: 'totalSupply', - args: [], - }), 'get totalSupply after burn') as bigint; - - this.logger.log(`New total supply: ${newTotalSupply.toString()} wei (${Number(newTotalSupply) / 1e18} tokens)`); - - return { - tokensBurned: unsoldBalance, - newTotalSupply, - txHash: hash, - }; - } - - // Read Methods async isVerified(walletAddress: string): Promise { - const address = this.contractLoader.getContractAddress('IdentityRegistry'); - const abi = this.contractLoader.getContractAbi('IdentityRegistry'); - - return await this.executeWithRetry(() => this.publicClient.readContract({ - address: address as Address, - abi, - functionName: 'isVerified', - args: [walletAddress], - }), 'isVerified check') as boolean; + const adapter = (this.networkRegistry as any).getBlockchainAdapter(); + return await adapter.isVerified(walletAddress); } } diff --git a/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts b/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts index 9014d384..1052dde6 100644 --- a/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts +++ b/packages/backend/src/modules/blockchain/services/chain-manager-registry.service.ts @@ -1,6 +1,9 @@ import { Injectable, Logger, OnModuleInit, OnModuleDestroy } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { NetworkType } from '@openassets/types'; +import { InjectModel } from '@nestjs/mongoose'; +import { Model } from 'mongoose'; +import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; import { ChainManager } from '../interfaces/chain-manager.interface'; import { MantleChainManager } from '../managers/mantle.manager'; import { ArbitrumChainManager } from '../managers/arbitrum.manager'; @@ -12,7 +15,10 @@ export class ChainManagerRegistry implements OnModuleInit, OnModuleDestroy { private readonly logger = new Logger(ChainManagerRegistry.name); private readonly managers: Map = new Map(); - constructor(private configService: ConfigService) {} + constructor( + private configService: ConfigService, + @InjectModel(Asset.name) private assetModel: Model, + ) {} async onModuleInit() { this.initializeManagers(); @@ -32,22 +38,22 @@ export class ChainManagerRegistry implements OnModuleInit, OnModuleDestroy { const enabledNetworks = enabledNetworksStr.split(',').map(n => n.trim() as NetworkType); if (enabledNetworks.includes(NetworkType.MANTLE)) { - this.managers.set(NetworkType.MANTLE, new MantleChainManager(this.configService)); + this.managers.set(NetworkType.MANTLE, new MantleChainManager(this.configService, this.assetModel)); this.logger.log('MantleChainManager initialized'); } if (enabledNetworks.includes(NetworkType.ARBITRUM)) { - this.managers.set(NetworkType.ARBITRUM, new ArbitrumChainManager(this.configService)); + this.managers.set(NetworkType.ARBITRUM, new ArbitrumChainManager(this.configService, this.assetModel)); this.logger.log('ArbitrumChainManager initialized'); } if (enabledNetworks.includes(NetworkType.STELLAR)) { - this.managers.set(NetworkType.STELLAR, new StellarChainManager()); + this.managers.set(NetworkType.STELLAR, new StellarChainManager(this.configService, this.assetModel)); this.logger.log('StellarChainManager initialized'); } if (enabledNetworks.includes(NetworkType.CREDITCOIN)) { - this.managers.set(NetworkType.CREDITCOIN, new CreditCoinChainManager(this.configService)); + this.managers.set(NetworkType.CREDITCOIN, new CreditCoinChainManager(this.configService, this.assetModel)); this.logger.log('CreditCoinChainManager initialized'); } } diff --git a/packages/backend/src/modules/blockchain/services/network-registry.service.ts b/packages/backend/src/modules/blockchain/services/network-registry.service.ts index 980839c3..339f312e 100644 --- a/packages/backend/src/modules/blockchain/services/network-registry.service.ts +++ b/packages/backend/src/modules/blockchain/services/network-registry.service.ts @@ -1,57 +1,44 @@ -import { Injectable, OnModuleInit, Logger } from '@nestjs/common'; +import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { ModuleRef } from '@nestjs/core'; -import { ListingType, WalletAddress } from '@openassets/types'; -import { - BLOCKCHAIN_ADAPTER, - WALLET_ADAPTER, - CONTRACT_ADAPTER -} from '../blockchain.constants'; +import { ListingType, WalletAddress, NetworkType } from '@openassets/types'; import { BlockchainAdapter } from '../adapters/blockchain-adapter.interface'; +import { ChainManagerRegistry } from './chain-manager-registry.service'; +import { NetworkContextService } from './network-context.service'; @Injectable() -export class NetworkRegistryService implements OnModuleInit { +export class NetworkRegistryService { private readonly logger = new Logger(NetworkRegistryService.name); private features: Record; - private networkType: string; - private blockchainAdapter?: BlockchainAdapter; constructor( private readonly configService: ConfigService, - private readonly moduleRef: ModuleRef, + private readonly chainManagerRegistry: ChainManagerRegistry, + private readonly networkContextService: NetworkContextService, ) { this.features = this.configService.get>('network.features') || {}; - this.networkType = this.configService.get('network.networkType') || 'mantle'; } - async onModuleInit() { - try { - this.blockchainAdapter = this.moduleRef.get(BLOCKCHAIN_ADAPTER, { strict: false }); - } catch (e: any) { - this.logger.warn(`Blockchain adapter not yet available during onModuleInit: ${e.message}`); - } - } - - private async getBlockchainAdapter(): Promise { - if (!this.blockchainAdapter) { - this.blockchainAdapter = await this.moduleRef.resolve(BLOCKCHAIN_ADAPTER); - } - return this.blockchainAdapter; + private getBlockchainAdapter(): BlockchainAdapter { + const network = this.networkContextService.getNetwork(); + const manager = this.chainManagerRegistry.getManager(network); + return manager.getBlockchainAdapter(); } isAvailable(feature: string): boolean { + // In multi-network mode, features could also be per-network + // For now, keep the global check or expand it return !!this.features[feature]; } - getNetworkType(): string { - return this.networkType; + getNetworkType(): NetworkType { + return this.networkContextService.getNetwork(); } async registerIdentityOnChain(walletAddress: WalletAddress) { if (!this.isAvailable('kyc')) { return { completed: false, skipped: true, reason: 'KYC_FEATURE_DISABLED' }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); return await adapter.registerIdentity(walletAddress); } @@ -68,7 +55,7 @@ export class NetworkRegistryService implements OnModuleInit { if (!this.isAvailable('assets')) { return { completed: false, skipped: true, reason: 'ASSETS_FEATURE_DISABLED' }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); return await adapter.deployToken(assetId, totalSupply, params); } @@ -76,7 +63,7 @@ export class NetworkRegistryService implements OnModuleInit { if (!this.isAvailable('assets')) { return { completed: false, skipped: true, reason: 'ASSETS_FEATURE_DISABLED' }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); return await adapter.registerAsset(dto); } @@ -84,7 +71,7 @@ export class NetworkRegistryService implements OnModuleInit { if (!this.isAvailable('assets')) { return { completed: false, skipped: true, reason: 'ASSETS_FEATURE_DISABLED' }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); return await adapter.revokeAsset(assetId); } @@ -100,7 +87,7 @@ export class NetworkRegistryService implements OnModuleInit { if (!this.isAvailable('marketplace')) { return { completed: false, skipped: true, reason: 'MARKETPLACE_FEATURE_DISABLED' }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); return await adapter.listOnMarketplace( tokenIdentifier, listingType, @@ -116,15 +103,16 @@ export class NetworkRegistryService implements OnModuleInit { if (!this.isAvailable('marketplace')) { return { completed: false, skipped: true, reason: 'MARKETPLACE_FEATURE_DISABLED' }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); return await adapter.endAuction(tokenIdentifier, clearingPrice); } async approveTrustlineForUser(userAddress: WalletAddress, assetIdentifier: string) { - if (this.networkType !== 'stellar') { + const network = this.getNetworkType(); + if (network !== NetworkType.STELLAR) { return { completed: false, skipped: true, reason: 'NOT_APPLICABLE_ON_NETWORK' }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); if (adapter && adapter.approveTrustline) { return await adapter.approveTrustline(userAddress, assetIdentifier); } @@ -136,10 +124,10 @@ export class NetworkRegistryService implements OnModuleInit { usdcAmount: string, ): Promise<{ txId: string; skipped?: boolean }> { if (!this.isAvailable('yield')) { - this.logger.warn(`Yield feature disabled on ${this.networkType}, skipping vault deposit`); + this.logger.warn(`Yield feature disabled on ${this.getNetworkType()}, skipping vault deposit`); return { txId: '', skipped: true }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); return await adapter.depositYieldToVault(tokenIdentifier, usdcAmount); } @@ -148,10 +136,10 @@ export class NetworkRegistryService implements OnModuleInit { usdcAmount: string, ): Promise<{ txId: string; skipped?: boolean }> { if (!this.isAvailable('yield')) { - this.logger.warn(`Yield feature disabled on ${this.networkType}, skipping fee transfer`); + this.logger.warn(`Yield feature disabled on ${this.getNetworkType()}, skipping fee transfer`); return { txId: '', skipped: true }; } - const adapter = await this.getBlockchainAdapter(); + const adapter = this.getBlockchainAdapter(); return await adapter.transferUSDC(recipientAddress, usdcAmount); } } From 6778d826e9044a44ecd3a4a7dee6b939b60c5def Mon Sep 17 00:00:00 2001 From: kaushalya4s5s7 Date: Wed, 4 Mar 2026 16:54:39 +0530 Subject: [PATCH 18/21] feat: Implement network-aware asset lifecycle operations, enforce enabled networks via middleware, and document the multi-network registry context. --- DOC.md | 158 ++++++++++++++++++ package.json | 4 +- packages/backend/src/main.ts | 2 +- .../backend/src/modules/assets/context.md | 11 ++ .../services/asset-lifecycle.service.ts | 40 +++-- .../middleware/network-context.middleware.ts | 25 ++- .../backend/src/modules/registry/context.md | 32 ++++ .../modules/registry/registry.constants.ts | 23 +++ .../services/module-registry.service.ts | 61 ++----- 9 files changed, 282 insertions(+), 74 deletions(-) create mode 100644 DOC.md create mode 100644 packages/backend/src/modules/registry/context.md diff --git a/DOC.md b/DOC.md new file mode 100644 index 00000000..a8390336 --- /dev/null +++ b/DOC.md @@ -0,0 +1,158 @@ +# Network Header to Asset Origination Mapping — Implementation Plan + +**Author:** Architecture Planning +**Date:** March 4, 2026 +**Status:** Proposed — addresses the per-request network context gap in the originator-facing asset origination flow. Companion to `creditcoin_asset_origination_backend_plan.md`. Must be implemented before any multi-network asset origination works correctly for any network, including Credit Coin. + +--- + +## The Problem in Plain Terms + +The network context pipeline is half-built. The `X-Network` header arrives at the middleware, the `NetworkContextService` stores it correctly in `AsyncLocalStorage`, and the value is available throughout the async call chain. But nothing downstream actually reads it. Two services that must be network-aware are both ignoring the context entirely: + +The `ModuleRegistryService` resolves which `IAssetOriginationService` implementation to return at application startup — once — based on the `NETWORK_TYPE` environment variable. Every call to `getAssetOriginationService()` for the lifetime of the process returns the same pre-baked instance, regardless of which `X-Network` header the current request carried. A `POST /assets` with `X-Network: creditcoin` receives the Mantle implementation because that is what the startup-time env var said. The header is silently ignored. + +The `AssetLifecycleService.createAsset()` method calls `getConfiguredNetworkType()`, which reads `process.env.NETWORK_TYPE` — a plain synchronous environment variable read that has no connection to `AsyncLocalStorage` whatsoever. Every asset document created in this process gets stamped with the same network field value regardless of which network header the originator sent. A Credit Coin originator's asset ends up tagged `network: 'mantle'` in MongoDB. + +Both problems have the same root cause: they were written before the multi-network per-request model existed, and they use the startup-time network config as a substitute for the per-request context. Fixing them is the minimum required change to make the header actually do what it promises. + +--- + +## The Two Problems and Their Exact Fix Points + +### Problem 1 — ModuleRegistryService: Startup Resolution vs. Per-Request Resolution + +**Where the code lives:** `packages/backend/src/modules/registry/services/module-registry.service.ts` + +**What it does today:** `onModuleInit()` reads `network.networkType` from `ConfigService` (which comes from `NETWORK_TYPE` env var), applies a binary `isEvm` check to decide between Mantle and Stellar tokens, resolves the matching implementations via `ModuleRef`, and stores them in a `serviceMap` keyed by generic domain tokens (`ASSET_ORIGINATION_SERVICE`, `ADMIN_DOMAIN_STRATEGY`). `getAssetOriginationService()` reads from this map — there is only one entry per key, so it always returns the same thing. + +**What needs to change:** The registry must hold all enabled network implementations simultaneously at startup, keyed by `NetworkType`. `getAssetOriginationService()` must read the current network from `NetworkContextService` at call time and use it as the lookup key to return the right implementation for the current request. + +This means the `serviceMap` structure changes from `Map` to `Map>`. At startup, the registry resolves every implementation it can for every enabled network and populates all entries. At request time, the `getAssetOriginationService()` call reads `NetworkContextService.getNetwork()`, looks up the matching inner map, and returns the entry for `ASSET_ORIGINATION_SERVICE`. If no entry exists for the requested network (because it was not in `ENABLED_NETWORKS` or its module was not loaded), the registry throws a descriptive error that the controller translates into a `503 Network Not Available` response. + +**The per-request lookup chain:** A request carrying `X-Network: creditcoin` arrives. The middleware already stored `NetworkType.CREDITCOIN` in `AsyncLocalStorage`. The controller calls `moduleRegistryService.getAssetOriginationService()`. Inside that method, `networkContextService.getNetwork()` returns `NetworkType.CREDITCOIN` from the storage. The registry looks up `serviceMap.get(NetworkType.CREDITCOIN).get(ASSET_ORIGINATION_SERVICE)` and returns the `CreditCoinAssetOriginationService` instance. The controller calls `createAsset()` on that instance. Everything proceeds on the Credit Coin path. + +### Problem 2 — AssetLifecycleService: Environment Read vs. Context Read + +**Where the code lives:** Line 109 of `packages/backend/src/modules/assets/services/asset-lifecycle.service.ts` + +**What it does today:** `createAsset()` calls `getConfiguredNetworkType()`, which is a plain module-level function that executes `process.env.NETWORK_TYPE`. This has no awareness of `AsyncLocalStorage`, no knowledge of the current HTTP request, and no connection to the middleware pipeline. The result is stored in a local variable named `network` and stamped onto the new asset document. + +**What needs to change:** `AssetLifecycleService` must inject `NetworkContextService` (already a globally available provider from the blockchain module). The `getConfiguredNetworkType()` call on line 109 must be replaced with `this.networkContextService.getNetwork()`. This single change makes the `network` field on the asset document reflect the actual `X-Network` header from the originator's request. + +The import of `getConfiguredNetworkType` from the auth utils folder can be removed from this file entirely once this change is made. If `getConfiguredNetworkType` is used nowhere else in `AssetLifecycleService`, the entire import line is cleaned up. + +--- + +## Problem 3 — Query Filtering: Missing Network Scope on Read Operations + +The two write-side problems above are the most critical — they determine whether data is stamped correctly. But there are also read-side problems in `AssetLifecycleService` that produce incorrect results in a multi-network deployment. + +**`getAllAssets()`** builds a MongoDB query with optional `status` and `originator` filters but no `network` filter. When a Credit Coin originator calls `GET /assets` with `X-Network: creditcoin`, they receive every asset in the database regardless of which chain it belongs to — Mantle assets, Stellar assets, and Credit Coin assets all come back. This is wrong. The query must include `network: networkContextService.getNetwork()` as a mandatory condition. + +**`getAssetsByOriginator()`** queries by `{ originator }` only. Same problem — no network scoping. Must include `network` in the query. + +**`getAsset()`** queries by `{ assetId }` only. In the multi-network world, the same real-world asset can be tokenized independently on Mantle and Credit Coin, producing two distinct asset documents with the same UUID but different network fields. The query for a specific asset must be `{ assetId, network }` to unambiguously identify which chain's version is being requested. + +**`approveAsset()`** fetches the asset to generate attestation. Same single-field lookup issue — it should use the composite `{ assetId, network }` filter so that an admin approving on the Credit Coin context modifies the Credit Coin version of the asset, not the Mantle version. + +In all of these cases, the fix is the same pattern: inject `NetworkContextService`, call `getNetwork()` at the start of the method, include the result as a filter condition in every MongoDB query that touches network-sensitive collections. + +--- + +## Problem 4 — Registry Constants: Missing Credit Coin Tokens + +**Where the code lives:** `packages/backend/src/modules/registry/registry.constants.ts` + +**What it contains today:** Constants for `MANTLE_ASSET_ORIGINATION_TOKEN`, `STELLAR_ASSET_ORIGINATION_TOKEN`, `MANTLE_ADMIN_STRATEGY_TOKEN`, `STELLAR_ADMIN_STRATEGY_TOKEN`. No Arbitrum token, no Credit Coin token. + +**What must be added:** `CREDITCOIN_ASSET_ORIGINATION_TOKEN` and `CREDITCOIN_ADMIN_STRATEGY_TOKEN` constants. Optionally `ARBITRUM_ASSET_ORIGINATION_TOKEN` and `ARBITRUM_ADMIN_STRATEGY_TOKEN` if the Arbitrum implementations exist and need routing. These constants are the strings that `ModuleRef.get(token)` uses to resolve the NestJS-injected instances of the Credit Coin strategy classes. + +The naming convention matches the existing pattern: the network name in uppercase as a prefix, then the domain role, then `_TOKEN` as the suffix. + +--- + +## Problem 5 — ModuleRegistryService: The isEvm Binary Branch Must Die + +**Where the code lives:** `resolveServices()` in `module-registry.service.ts` + +**What it does today:** It applies `const isEvm = networkType === MANTLE || networkType === ARBITRUM` and then uses `isEvm ? MANTLE_ADMIN_STRATEGY_TOKEN : STELLAR_ADMIN_STRATEGY_TOKEN` to pick the admin strategy token. This means every EVM chain (Mantle, Arbitrum, Credit Coin) maps to the Mantle implementation. Credit Coin on EVM would silently get Mantle's strategy, which calls Mantle's chain manager and Mantle's contracts. This would produce wrong transactions on the wrong chain. + +**What must replace it:** A per-network map that is explicit about which token corresponds to which network. The startup resolution loop iterates over the enabled networks and for each one, looks up the correct pair of tokens (asset origination token and admin strategy token) from a static mapping table defined in the registry constants file. The mapping table entries are: +- `NetworkType.MANTLE` → `MANTLE_ASSET_ORIGINATION_TOKEN` and `MANTLE_ADMIN_STRATEGY_TOKEN` +- `NetworkType.STELLAR` → `STELLAR_ASSET_ORIGINATION_TOKEN` and `STELLAR_ADMIN_STRATEGY_TOKEN` +- `NetworkType.ARBITRUM` → (its own tokens when those implementations exist) +- `NetworkType.CREDITCOIN` → `CREDITCOIN_ASSET_ORIGINATION_TOKEN` and `CREDITCOIN_ADMIN_STRATEGY_TOKEN` + +For any network where a token is not yet defined (because the implementation does not exist yet), the registry logs a warning and skips that entry rather than crashing. The implementation is only required for networks that are in `ENABLED_NETWORKS`. + +--- + +## Problem 6 — ENABLED_NETWORKS Guard in the Middleware + +**Where the code lives:** `packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts` + +**What it does today:** It validates the `X-Network` header value against `Object.values(NetworkType)` and throws a `BadRequestException` (400) if the value is not a recognized enum member. It does not check whether the recognized network is actually enabled in this deployment. + +**What must be added:** After determining the network value is a valid `NetworkType`, the middleware must check whether the `ChainManagerRegistry` has a running manager for that network (or equivalently, check the `ENABLED_NETWORKS` env var). If the network is recognized but not enabled, the middleware must return a `ForbiddenException` (403) — not a 400. A 400 says "you sent bad data." A 403 says "this network is not available in this deployment." The distinction matters for frontend error handling. + +The middleware should inject the `ChainManagerRegistry` and call `getEnabledNetworks()` to get the list of active networks. The validation order is: first check format validity (still a 400), then check enabled status (a 403). + +--- + +## Problem 7 — The Decimal Logic That Hard-Codes Network by Name + +Scattered through `AssetLifecycleService` (lines 565, 616, 648, 709, 737, 992) there are decimal precision conditionals that read `asset.network === 'stellar'` to choose between 7 and 6 (or 18) decimal places. This is the right approach for a stored document — reading the network field off the document is correct because the document knows which chain it belongs to. This code does not need to change. + +However, the logic of "if not Stellar, then 6 or 18" silently assumes that every non-Stellar network uses the same decimal precision as Mantle. Credit Coin uses 6 decimal places for USDC (same as Mantle) and 18 for ERC-20 tokens (same as Mantle), so this assumption happens to be correct for Credit Coin. No change is required here for the immediate scope, but a future chain with different decimal conventions would require this logic to be extended. A note should be added to the relevant code location documenting this assumption so it is not silently wrong when the next chain is added. + +--- + +## The Complete Flow After These Fixes + +An originator on Credit Coin calls `POST /assets` with `X-Network: creditcoin` and their JWT. + +The `NetworkContextMiddleware` runs first. It reads `creditcoin` from the header. It validates that `creditcoin` is a member of `NetworkType`. It checks that `creditcoin` is in the enabled networks list from `ChainManagerRegistry`. Both checks pass. It calls `networkContextService.runWithNetwork(NetworkType.CREDITCOIN, () => next())`. The `AsyncLocalStorage` now holds `NetworkType.CREDITCOIN` for the entire async execution chain of this request. + +The `JwtAuthGuard` and `OriginatorGuard` run. Auth is network-agnostic — the guards check the JWT and the user's role without caring about which network the request is for. + +The `AssetsController.uploadAsset()` method executes. It calls `this.assetService` (the lazy getter), which calls `moduleRegistryService.getAssetOriginationService()`. Inside that method, `networkContextService.getNetwork()` reads the `AsyncLocalStorage` and returns `NetworkType.CREDITCOIN`. The registry looks up the inner map for Credit Coin and returns the `CreditCoinAssetOriginationService` instance. + +The controller calls `createAsset(req.user.walletAddress, dto, file)` on the `CreditCoinAssetOriginationService`. That service delegates to `assetLifecycleService.createAsset(walletAddress, dto, file)`. + +Inside `AssetLifecycleService.createAsset()`, `networkContextService.getNetwork()` returns `NetworkType.CREDITCOIN`. The asset document is created with `network: 'creditcoin'`. The truth engine queue job is pushed. The notification is sent. The response returns. The asset is in MongoDB correctly tagged. + +When the same originator calls `GET /assets` with `X-Network: creditcoin`, the `getAllAssets()` query includes `{ network: 'creditcoin', originator: walletAddress }`. Only their Credit Coin assets are returned. Their Mantle assets, if any, are invisible in this context — as intended. + +--- + +## Implementation Sequence + +This work has four steps, each of which can be done and verified independently. + +**Step 1 — Constants and Token Map:** Add `CREDITCOIN_ASSET_ORIGINATION_TOKEN` and `CREDITCOIN_ADMIN_STRATEGY_TOKEN` to `registry.constants.ts`. Add a static `NETWORK_TOKEN_MAP` constant (also in the constants file or in a new `registry.token-map.ts` file in the registry folder) that maps each `NetworkType` to its pair of domain tokens. This step is purely additive — no existing behavior changes. + +**Step 2 — ModuleRegistryService Refactor:** Replace the startup-time single-network resolution in `resolveServices()` with a loop over all networks in `ENABLED_NETWORKS`. For each network, use the `NETWORK_TOKEN_MAP` to find the correct tokens, resolve both implementations via `ModuleRef`, and store them in the nested map keyed by `NetworkType`. Inject `NetworkContextService` into the registry. Change `getAssetOriginationService()` and `getAdminDomainStrategy()` to call `networkContextService.getNetwork()` at call time. Add the nested map lookup and the graceful error for missing implementations. Verify that existing Mantle and Stellar behavior is unchanged with the appropriate `ENABLED_NETWORKS` setting. + +**Step 3 — AssetLifecycleService Network Context:** Inject `NetworkContextService` into `AssetLifecycleService` constructor. Replace the `getConfiguredNetworkType()` call in `createAsset()` with `this.networkContextService.getNetwork()`. Add `network` as a filter condition in `getAllAssets()`, `getAssetsByOriginator()`, `getAsset()`, and `approveAsset()`. Remove the `getConfiguredNetworkType` import if it is no longer used elsewhere in this file. Verify that existing queries still return correct results for Mantle (because the context defaults to Mantle when no header is provided). + +**Step 4 — Middleware ENABLED_NETWORKS Guard:** Inject `ChainManagerRegistry` into `NetworkContextMiddleware`. After the enum membership check, add the enabled-networks check. Return 403 with a clear message (`Network 'creditcoin' is not enabled in this deployment`) when the network is recognized but not enabled. Update the Swagger global parameter description to document this behavior. + +--- + +## What Does Not Change + +The `IAssetOriginationService` interface contract is unchanged. The controller code is unchanged. The queue job structure for the truth engine is unchanged. The MongoDB schema for the asset document is unchanged (the `network` field already exists on the schema per the multi-network schema evolution plan). The notification system is unchanged. The JWT auth flow is unchanged. + +The only behavior difference visible to an existing Mantle deployment: `getAllAssets()` queries now include a `network: 'mantle'` filter. Existing Mantle documents that have been migrated by the schema migration script (which sets `network: 'mantle'` on all historical records) will continue to be returned correctly. Documents that predate the migration and have no `network` field will not be returned — this is the expected behavior once the migration has run. The migration must be run before deploying this code change. + +--- + +## Files Modified + +- `packages/backend/src/modules/registry/registry.constants.ts` — add Credit Coin tokens and the network-to-token map +- `packages/backend/src/modules/registry/services/module-registry.service.ts` — refactor to per-request resolution via `NetworkContextService` +- `packages/backend/src/modules/assets/services/asset-lifecycle.service.ts` — inject `NetworkContextService`, fix `createAsset()` network stamp, add network filter to all query methods +- `packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts` — add ENABLED_NETWORKS guard, inject `ChainManagerRegistry` +- `packages/backend/src/modules/registry/context.md` — update to document per-request resolution model +- `packages/backend/src/modules/assets/context.md` — update to document that all queries are network-scoped \ No newline at end of file diff --git a/package.json b/package.json index 0a43bb68..d68a9f5c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mantle-rwa-platform", "private": true, - "packageManager": "yarn@4.6.0", + "packageManager": "yarn@4.6.0+sha512.5383cc12567a95f1d668fbe762dfe0075c595b4bfff433be478dbbe24e05251a8e8c3eb992a986667c1d53b6c3a9c85b8398c35a960587fbd9fa3a0915406728", "type": "module", "engines": { "node": "22.x" @@ -34,4 +34,4 @@ "dotenv": "^16.4.5", "ed25519-hd-key": "^1.3.0" } -} +} \ No newline at end of file diff --git a/packages/backend/src/main.ts b/packages/backend/src/main.ts index 86dd8ca5..016c81bb 100644 --- a/packages/backend/src/main.ts +++ b/packages/backend/src/main.ts @@ -66,7 +66,7 @@ async function bootstrap() { }), ); - const port = process.env.PORT || 3000; + const port = process.env.PORT || 3005; await app.listen(port, '0.0.0.0'); } diff --git a/packages/backend/src/modules/assets/context.md b/packages/backend/src/modules/assets/context.md index 03319e4b..03f42494 100644 --- a/packages/backend/src/modules/assets/context.md +++ b/packages/backend/src/modules/assets/context.md @@ -88,9 +88,20 @@ The payout system transfers raised USDC from the platform to originators after m - All database operations are network-agnostic - Transaction hashes and block numbers store in network-specific formats +## Network Scoping (Multi-Network) +All read and write operations in `AssetLifecycleService` that touch asset documents are scoped to the current request's network via `NetworkContextService.getNetwork()` (backed by `AsyncLocalStorage`). The following methods include `network` as a mandatory filter condition: +- `createAsset()` — stamps the asset document with `network` from context +- `getAsset()` — queries `{ assetId, network }` +- `getAssetsByOriginator()` — queries `{ originator, network }` +- `getAllAssets()` — queries include `{ network }` alongside optional status/originator filters +- `approveAsset()` — both the `findOne` and the `updateOne` use `{ assetId, network }` + +**Note on decimal precision:** Several methods in this service apply decimal precision conditionally based on `asset.network === 'stellar'` to choose between 7 (Stellar) and 6 or 18 (EVM) decimal places. This assumes all non-Stellar networks use the same decimal conventions as Mantle (6 for USDC, 18 for ERC-20). This assumption is currently correct for Mantle, Arbitrum, and CreditCoin. If a future chain uses different precision, this logic must be extended. + ## Invariants - Payout can only be executed once per asset (status check) - Only confirmed PRIMARY_MARKET purchases count toward payout - Leverage positions must reference the exact asset token address - Token burning is optional (skips if all tokens sold) - Notification failures never block payout completion +- All asset queries are network-scoped; documents without a `network` field (pre-migration) will not appear in query results diff --git a/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts b/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts index 6a1cc8c6..bb2eeb11 100644 --- a/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts +++ b/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts @@ -12,19 +12,19 @@ import { User, UserDocument } from '../../../database/schemas/user.schema'; import { LeveragePosition, LeveragePositionDocument } from '../../../database/schemas/leverage-position.schema'; import { CreateAssetDto } from '../dto/create-asset.dto'; import { v4 as uuidv4 } from 'uuid'; -import { - AssetStatus, - UserRole, - NotificationType, - NotificationSeverity, - NotificationAction +import { + AssetStatus, + UserRole, + NotificationType, + NotificationSeverity, + NotificationAction } from '@openassets/types'; import { RegisterAssetDto } from '../../blockchain/dto/register-asset.dto'; import { AttestationService } from '../../compliance-engine/services/attestation.service'; import { AnnouncementService } from '../../announcements/services/announcement.service'; import { NotificationService } from '../../notifications/services/notification.service'; -import { getConfiguredNetworkType } from '../../auth/utils/wallet.util'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { fromCanonical } from '../../blockchain/utils/numeric-conversion'; import { PAYMENT_ADAPTER, BLOCKCHAIN_ADAPTER } from '../../blockchain/blockchain.constants'; import { PaymentAdapter } from '../../blockchain/adapters/payment-adapter.interface'; @@ -47,6 +47,7 @@ export class AssetLifecycleService { @Inject(forwardRef(() => AnnouncementService)) private announcementService: AnnouncementService, private notificationService: NotificationService, + private networkContextService: NetworkContextService, @Inject(PAYMENT_ADAPTER) private paymentAdapter: PaymentAdapter, @Inject(BLOCKCHAIN_ADAPTER) private blockchainAdapter: BlockchainAdapter, @InjectConnection() connection: Connection, @@ -105,8 +106,8 @@ export class AssetLifecycleService { const assetId = uuidv4(); this.logger.log(`Creating ${dto.assetType} asset ${assetId} for originator ${userWallet}`); - // Get configured network type from environment - const network = getConfiguredNetworkType(); + // Get configured network type from context + const network = this.networkContextService.getNetwork(); // All DTO values are now in canonical 4-decimal format // Parse them as floats for calculations @@ -241,18 +242,22 @@ export class AssetLifecycleService { } async getAsset(assetId: string) { - return this.assetModel.findOne({ assetId }); + const network = this.networkContextService.getNetwork(); + return this.assetModel.findOne({ assetId, network }); } async getAssetsByOriginator(originator: string) { - return this.assetModel.find({ originator }); + const network = this.networkContextService.getNetwork(); + return this.assetModel.find({ originator, network }); } async approveAsset(assetId: string, adminWallet: string) { this.logger.log(`Asset ${assetId} approved by admin ${adminWallet}`); + const network = this.networkContextService.getNetwork(); + // Get the asset to generate attestation - const asset = await this.assetModel.findOne({ assetId }); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { throw new Error('Asset not found'); } @@ -262,7 +267,7 @@ export class AssetLifecycleService { // Update asset with attestation and set status to ATTESTED await this.assetModel.updateOne( - { assetId }, + { assetId, network }, { $set: { status: AssetStatus.ATTESTED, @@ -562,8 +567,9 @@ export class AssetLifecycleService { throw new Error('Asset is not an auction type'); } - // Determine the decimal precision based on network type - // Stellar uses 7 decimals, EVM uses 6 decimals + // Determine the decimal precision based on network type. + // Stellar uses 7 decimals; all other networks (Mantle, Arbitrum, CreditCoin) use 6 for USDC. + // ASSUMPTION: any non-Stellar network uses Mantle's precision. If a future chain differs, extend this. const decimals = asset.network === 'stellar' ? 7 : 6; // Normalize clearing price: if it's a decimal string (canonical format), convert to integer @@ -850,7 +856,7 @@ export class AssetLifecycleService { page?: number; limit?: number; }) { - const query: any = {}; + const query: any = { network: this.networkContextService.getNetwork() }; // Apply status filter if (filters?.status) { @@ -1053,7 +1059,7 @@ export class AssetLifecycleService { } } else { this.logger.log(`āœ… No leverage positions found for this asset`); - + // Debug: Check if any positions exist for this assetId at all const anyPositions = await this.leveragePositionModel.find({ assetId }); this.logger.log(` Debug: Total positions with assetId ${assetId}: ${anyPositions.length}`); diff --git a/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts b/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts index 4ff932c8..e0f382c9 100644 --- a/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts +++ b/packages/backend/src/modules/blockchain/middleware/network-context.middleware.ts @@ -1,27 +1,36 @@ -import { Injectable, NestMiddleware, BadRequestException } from '@nestjs/common'; +import { Injectable, NestMiddleware, BadRequestException, ForbiddenException } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; import { NetworkType } from '@openassets/types'; import { NetworkContextService } from '../services/network-context.service'; +import { ChainManagerRegistry } from '../services/chain-manager-registry.service'; @Injectable() export class NetworkContextMiddleware implements NestMiddleware { - constructor(private readonly networkContextService: NetworkContextService) {} + constructor( + private readonly networkContextService: NetworkContextService, + private readonly chainManagerRegistry: ChainManagerRegistry + ) {} use(req: Request, res: Response, next: NextFunction) { const networkHeader = req.header('X-Network')?.toLowerCase(); - + let network: NetworkType = NetworkType.MANTLE; if (networkHeader) { - if (Object.values(NetworkType).includes(networkHeader as NetworkType)) { - network = networkHeader as NetworkType; - } else { - throw new BadRequestException(`Invalid X-Network header: ${networkHeader}`); + const validNetworks = Object.values(NetworkType).filter(n => n !== NetworkType.UNKNOWN); + if (!validNetworks.includes(networkHeader as NetworkType)) { + throw new BadRequestException(`Invalid network '${networkHeader}'. Valid networks: ${validNetworks.join(', ')}`); + } + + const enabledNetworks = this.chainManagerRegistry.getEnabledNetworks(); + if (!enabledNetworks.includes(networkHeader as NetworkType)) { + throw new ForbiddenException(`Network '${networkHeader}' is not enabled in this deployment`); } + + network = networkHeader as NetworkType; } this.networkContextService.runWithNetwork(network, () => { - // Add network to request object for easy access if needed (req as any).network = network; next(); }); diff --git a/packages/backend/src/modules/registry/context.md b/packages/backend/src/modules/registry/context.md new file mode 100644 index 00000000..fe3bd672 --- /dev/null +++ b/packages/backend/src/modules/registry/context.md @@ -0,0 +1,32 @@ +# Registry Module Context + +## Responsibilities +This module is the central service registry for multi-network domain implementations. It resolves which concrete implementation of a domain service (e.g. `IAssetOriginationService`) to use for the current HTTP request, based on the `X-Network` header carried in the request's `AsyncLocalStorage` context. + +## Core Components + +### `ModuleRegistryService` +- **Startup phase (`onModuleInit`):** Reads `ENABLED_NETWORKS` from config (falls back to `network.networkType`, then `mantle`). For each enabled network, looks up the pair of NestJS injection tokens from `NETWORK_TOKEN_MAP` and resolves the concrete implementation via `ModuleRef`. Results are stored in a nested map: `Map>`. If a token cannot be resolved (implementation not loaded), a warning is logged and the entry is skipped — no crash. +- **Request phase (`getAssetOriginationService`, `getAdminDomainStrategy`, `getService`):** Reads the current network from `NetworkContextService.getNetwork()` (backed by `AsyncLocalStorage`). Looks up the inner map for that network and returns the registered implementation. If no implementation is found for the requested network, throws an error (the controller translates this to 503). + +## Public Interface +- `getAssetOriginationService(): IAssetOriginationService` — returns the asset origination impl for the current request's network +- `getAdminDomainStrategy(): IAdminDomainStrategy` — returns the admin strategy impl for the current request's network +- `getService(token: string): T` — generic resolver by domain token and current network + +## Invariants +- The `implementationMap` is populated once at startup and is read-only at request time. +- Only networks listed in `ENABLED_NETWORKS` (or the fallback) are populated in the map at startup. +- All per-request lookups use `AsyncLocalStorage` via `NetworkContextService` — never `process.env`. +- Missing implementations for a network cause a warn-and-skip at startup, not a crash. They cause a thrown error at request time. + +## Dependencies +- `NetworkContextService` (from `BlockchainModule`) — per-request network context via `AsyncLocalStorage` +- `ConfigService` — reads `ENABLED_NETWORKS` at startup +- `ModuleRef` — resolves NestJS-injected instances by token +- `NETWORK_TOKEN_MAP` in `registry.constants.ts` — maps `NetworkType` → domain token pair + +## Constants (`registry.constants.ts`) +- Domain role tokens: `ASSET_ORIGINATION_SERVICE`, `ADMIN_DOMAIN_STRATEGY` +- Per-network implementation tokens: `MANTLE_*`, `STELLAR_*`, `ARBITRUM_*`, `CREDITCOIN_*` +- `NETWORK_TOKEN_MAP` — static mapping from `NetworkType` to its pair of domain tokens; this is the authoritative routing table for the registry diff --git a/packages/backend/src/modules/registry/registry.constants.ts b/packages/backend/src/modules/registry/registry.constants.ts index 2c7580af..2ba3d5e8 100644 --- a/packages/backend/src/modules/registry/registry.constants.ts +++ b/packages/backend/src/modules/registry/registry.constants.ts @@ -6,8 +6,31 @@ export const ADMIN_DOMAIN_STRATEGY = 'ADMIN_DOMAIN_STRATEGY'; export const MANTLE_ASSET_ORIGINATION_TOKEN = 'MANTLE_ASSET_ORIGINATION_TOKEN'; export const STELLAR_ASSET_ORIGINATION_TOKEN = 'STELLAR_ASSET_ORIGINATION_TOKEN'; +export const ARBITRUM_ASSET_ORIGINATION_TOKEN = 'ARBITRUM_ASSET_ORIGINATION_TOKEN'; export const CREDITCOIN_ASSET_ORIGINATION_TOKEN = 'CREDITCOIN_ASSET_ORIGINATION_TOKEN'; export const MANTLE_ADMIN_STRATEGY_TOKEN = 'MANTLE_ADMIN_STRATEGY_TOKEN'; export const STELLAR_ADMIN_STRATEGY_TOKEN = 'STELLAR_ADMIN_STRATEGY_TOKEN'; +export const ARBITRUM_ADMIN_STRATEGY_TOKEN = 'ARBITRUM_ADMIN_STRATEGY_TOKEN'; export const CREDITCOIN_ADMIN_STRATEGY_TOKEN = 'CREDITCOIN_ADMIN_STRATEGY_TOKEN'; + +import { NetworkType } from '@openassets/types'; + +export const NETWORK_TOKEN_MAP = { + [NetworkType.MANTLE]: { + [ASSET_ORIGINATION_SERVICE]: MANTLE_ASSET_ORIGINATION_TOKEN, + [ADMIN_DOMAIN_STRATEGY]: MANTLE_ADMIN_STRATEGY_TOKEN, + }, + [NetworkType.STELLAR]: { + [ASSET_ORIGINATION_SERVICE]: STELLAR_ASSET_ORIGINATION_TOKEN, + [ADMIN_DOMAIN_STRATEGY]: STELLAR_ADMIN_STRATEGY_TOKEN, + }, + [NetworkType.ARBITRUM]: { + [ASSET_ORIGINATION_SERVICE]: ARBITRUM_ASSET_ORIGINATION_TOKEN, + [ADMIN_DOMAIN_STRATEGY]: ARBITRUM_ADMIN_STRATEGY_TOKEN, + }, + [NetworkType.CREDITCOIN]: { + [ASSET_ORIGINATION_SERVICE]: CREDITCOIN_ASSET_ORIGINATION_TOKEN, + [ADMIN_DOMAIN_STRATEGY]: CREDITCOIN_ADMIN_STRATEGY_TOKEN, + }, +}; diff --git a/packages/backend/src/modules/registry/services/module-registry.service.ts b/packages/backend/src/modules/registry/services/module-registry.service.ts index 6e8c4b09..3742d527 100644 --- a/packages/backend/src/modules/registry/services/module-registry.service.ts +++ b/packages/backend/src/modules/registry/services/module-registry.service.ts @@ -5,13 +5,8 @@ import { NetworkType } from '@openassets/types'; import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { ASSET_ORIGINATION_SERVICE, - MANTLE_ASSET_ORIGINATION_TOKEN, - STELLAR_ASSET_ORIGINATION_TOKEN, - CREDITCOIN_ASSET_ORIGINATION_TOKEN, ADMIN_DOMAIN_STRATEGY, - MANTLE_ADMIN_STRATEGY_TOKEN, - STELLAR_ADMIN_STRATEGY_TOKEN, - CREDITCOIN_ADMIN_STRATEGY_TOKEN, + NETWORK_TOKEN_MAP, } from '../registry.constants'; import { IAssetOriginationService } from '../interfaces/asset-origination.interface'; import { IAdminDomainStrategy } from '../interfaces/admin-domain.interface'; @@ -19,7 +14,7 @@ import { IAdminDomainStrategy } from '../interfaces/admin-domain.interface'; @Injectable() export class ModuleRegistryService implements OnModuleInit { private readonly logger = new Logger(ModuleRegistryService.name); - + // Maps network -> (service key -> implementation) private readonly implementationMap = new Map>(); @@ -35,54 +30,28 @@ export class ModuleRegistryService implements OnModuleInit { } private async resolveAllImplementations() { - const networks = Object.values(NetworkType).filter(n => n !== NetworkType.UNKNOWN); - + const rawConfig = this.configService.get('ENABLED_NETWORKS') || this.configService.get('network.networkType') || 'mantle'; + const networks = rawConfig.split(',').map(n => n.trim() as NetworkType).filter(n => n !== NetworkType.UNKNOWN); + for (const network of networks) { const networkMap = new Map(); this.implementationMap.set(network, networkMap); - // Resolve Asset Origination - const assetToken = this.getAssetOriginationToken(network); - if (assetToken) { - await this.resolveAndRegister(network, ASSET_ORIGINATION_SERVICE, assetToken); - } + const tokens = NETWORK_TOKEN_MAP[network]; + if (tokens) { + const assetToken = tokens[ASSET_ORIGINATION_SERVICE]; + if (assetToken) { + await this.resolveAndRegister(network, ASSET_ORIGINATION_SERVICE, assetToken); + } - // Resolve Admin Strategy - const adminToken = this.getAdminStrategyToken(network); - if (adminToken) { - await this.resolveAndRegister(network, ADMIN_DOMAIN_STRATEGY, adminToken); + const adminToken = tokens[ADMIN_DOMAIN_STRATEGY]; + if (adminToken) { + await this.resolveAndRegister(network, ADMIN_DOMAIN_STRATEGY, adminToken); + } } } } - private getAssetOriginationToken(network: NetworkType): string | null { - switch (network) { - case NetworkType.MANTLE: - case NetworkType.ARBITRUM: - return MANTLE_ASSET_ORIGINATION_TOKEN; - case NetworkType.STELLAR: - return STELLAR_ASSET_ORIGINATION_TOKEN; - case NetworkType.CREDITCOIN: - return CREDITCOIN_ASSET_ORIGINATION_TOKEN; - default: - return null; - } - } - - private getAdminStrategyToken(network: NetworkType): string | null { - switch (network) { - case NetworkType.MANTLE: - case NetworkType.ARBITRUM: - return MANTLE_ADMIN_STRATEGY_TOKEN; - case NetworkType.STELLAR: - return STELLAR_ADMIN_STRATEGY_TOKEN; - case NetworkType.CREDITCOIN: - return CREDITCOIN_ADMIN_STRATEGY_TOKEN; - default: - return null; - } - } - private async resolveAndRegister(network: NetworkType, key: string, token: string) { try { const service = this.moduleRef.get(token, { strict: false }); From d23a53bb683beedd503ac8fb398b6b839b85e5c2 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 17:03:48 +0530 Subject: [PATCH 19/21] "bidas, purchase , settlement notify all done" --- .../processors/auction-status.processor.ts | 67 +++++++++++-------- .../services/asset-lifecycle.service.ts | 31 ++++++--- .../kyc/processors/verification.processor.ts | 18 +++-- .../src/modules/kyc/services/kyc.service.ts | 11 +-- .../controllers/marketplace.controller.ts | 25 +++++-- .../marketplace/services/auction.service.ts | 10 ++- .../services/bid-tracker.service.ts | 49 ++++++++------ .../services/purchase-tracker.service.ts | 65 ++++++++++-------- 8 files changed, 172 insertions(+), 104 deletions(-) diff --git a/packages/backend/src/modules/announcements/processors/auction-status.processor.ts b/packages/backend/src/modules/announcements/processors/auction-status.processor.ts index d490b558..ac7313fb 100644 --- a/packages/backend/src/modules/announcements/processors/auction-status.processor.ts +++ b/packages/backend/src/modules/announcements/processors/auction-status.processor.ts @@ -18,21 +18,26 @@ import { ListingType, } from '@openassets/types'; import { AssetLifecycleService } from '../../assets/services/asset-lifecycle.service'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { toISTISOString } from '../../../utils/date.utils'; +import { NetworkType } from '@openassets/types'; interface ActivateAuctionJob { assetId: string; scheduledStartTime: Date; + network: NetworkType; } interface CheckAuctionStatusJob { assetId: string; expectedStartTime: Date; + network: NetworkType; } interface CheckAuctionEndJob { assetId: string; expectedEndTime: Date; + network: NetworkType; } @Processor('auction-status-check') @@ -52,6 +57,7 @@ export class AuctionStatusProcessor extends WorkerHost { private networkRegistryService: NetworkRegistryService, private notificationService: NotificationService, private assetLifecycleService: AssetLifecycleService, + private networkContextService: NetworkContextService, ) { super(); } @@ -87,26 +93,30 @@ export class AuctionStatusProcessor extends WorkerHost { } async process(job: Job): Promise { - if (job.name === 'activate-auction') { - await this.activateAuction(job as Job); - } else if (job.name === 'check-auction-status') { - await this.checkAuctionStatus(job as Job); - } else if (job.name === 'check-auction-end') { - await this.checkAuctionEnd(job as Job); - } else { - this.logger.warn(`Unknown job type: ${job.name}`); - } + const network = (job.data as any).network || NetworkType.MANTLE; + + await this.networkContextService.runWithNetwork(network, async () => { + if (job.name === 'activate-auction') { + await this.activateAuction(job as Job); + } else if (job.name === 'check-auction-status') { + await this.checkAuctionStatus(job as Job); + } else if (job.name === 'check-auction-end') { + await this.checkAuctionEnd(job as Job); + } else { + this.logger.warn(`Unknown job type: ${job.name}`); + } + }); } private async activateAuction(job: Job): Promise { - const { assetId, scheduledStartTime } = job.data; + const { assetId, scheduledStartTime, network } = job.data; this.logger.log( - `Activating auction for asset ${assetId} (scheduled: ${scheduledStartTime})`, + `Activating auction for asset ${assetId} on ${network} (scheduled: ${scheduledStartTime})`, ); try { - const asset = await this.assetModel.findOne({ assetId }); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { this.logger.error(`Asset ${assetId} not found`); @@ -154,7 +164,7 @@ export class AuctionStatusProcessor extends WorkerHost { // Activate the auction in database const actualStartTime = new Date(); await this.assetModel.updateOne( - { assetId }, + { assetId, network }, { $set: { status: 'LISTED', @@ -208,6 +218,7 @@ export class AuctionStatusProcessor extends WorkerHost { { assetId, expectedStartTime: actualStartTime, + network, }, { delay: 60 * 1000, // 1 minute @@ -226,14 +237,14 @@ export class AuctionStatusProcessor extends WorkerHost { } private async checkAuctionStatus(job: Job): Promise { - const { assetId, expectedStartTime } = job.data; + const { assetId, expectedStartTime, network } = job.data; this.logger.log( - `Checking auction status for asset ${assetId} (expected start: ${expectedStartTime})`, + `Checking auction status for asset ${assetId} on ${network} (expected start: ${expectedStartTime})`, ); try { - const asset = await this.assetModel.findOne({ assetId }); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { this.logger.error(`Asset ${assetId} not found`); @@ -269,17 +280,17 @@ export class AuctionStatusProcessor extends WorkerHost { } private async checkAuctionEnd(job: Job): Promise { - const { assetId, expectedEndTime } = job.data; + const { assetId, expectedEndTime, network } = job.data; this.logger.log( - `Checking auction end for asset ${assetId} (expected end: ${expectedEndTime})`, + `Checking auction end for asset ${assetId} on ${network} (expected end: ${expectedEndTime})`, ); try { - const asset = await this.assetModel.findOne({ assetId }); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { - this.logger.error(`Asset ${assetId} not found`); + this.logger.error(`Asset ${assetId} not found on ${network}`); return; } @@ -304,8 +315,8 @@ export class AuctionStatusProcessor extends WorkerHost { this.logger.log(`Auction ${assetId} has ended. Checking if settled by admin...`); // Fetch all bids for this auction - const bids = await this.bidModel.find({ assetId }).sort({ price: -1 }).exec(); - this.logger.log(`Found ${bids.length} bids for auction ${assetId}`); + const bids = await this.bidModel.find({ assetId, network }).sort({ price: -1 }).exec(); + this.logger.log(`Found ${bids.length} bids for auction ${assetId} on ${network}`); // Calculate suggested clearing price and notify admins try { @@ -445,7 +456,7 @@ ${bidSummary || ' No bids received'} // Update asset status to ENDED (bidding closed, but results not yet declared) await this.assetModel.updateOne( - { assetId }, + { assetId, network }, { $set: { status: 'ENDED', // Bidding closed @@ -456,18 +467,18 @@ ${bidSummary || ' No bids received'} }, ); - this.logger.log(`Asset ${assetId} status updated to ENDED. Bidding is now closed.`); + this.logger.log(`Asset ${assetId} status updated to ENDED on ${network}. Bidding is now closed.`); // Update all bids for this auction from PLACED to FINALIZED const updateResult = await this.bidModel.updateMany( - { assetId, status: 'PLACED' }, + { assetId, status: 'PLACED', network }, { $set: { status: 'FINALIZED' } } ); - this.logger.log(`Updated ${updateResult.modifiedCount} bids from PLACED to FINALIZED for auction ${assetId}`); + this.logger.log(`Updated ${updateResult.modifiedCount} bids from PLACED to FINALIZED for auction ${assetId} on ${network}`); // Send notifications to all bidders who participated in this auction - const bidders = await this.bidModel.distinct('bidder', { assetId }); - this.logger.log(`Sending auction ended notifications to ${bidders.length} bidders for auction ${assetId}`); + const bidders = await this.bidModel.distinct('bidder', { assetId, network }); + this.logger.log(`Sending auction ended notifications to ${bidders.length} bidders for auction ${assetId} on ${network}`); for (const bidderWallet of bidders) { try { diff --git a/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts b/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts index 6a1cc8c6..204ed722 100644 --- a/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts +++ b/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts @@ -24,6 +24,7 @@ import { RegisterAssetDto } from '../../blockchain/dto/register-asset.dto'; import { AttestationService } from '../../compliance-engine/services/attestation.service'; import { AnnouncementService } from '../../announcements/services/announcement.service'; import { NotificationService } from '../../notifications/services/notification.service'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { getConfiguredNetworkType } from '../../auth/utils/wallet.util'; import { fromCanonical } from '../../blockchain/utils/numeric-conversion'; import { PAYMENT_ADAPTER, BLOCKCHAIN_ADAPTER } from '../../blockchain/blockchain.constants'; @@ -47,6 +48,7 @@ export class AssetLifecycleService { @Inject(forwardRef(() => AnnouncementService)) private announcementService: AnnouncementService, private notificationService: NotificationService, + private networkContextService: NetworkContextService, @Inject(PAYMENT_ADAPTER) private paymentAdapter: PaymentAdapter, @Inject(BLOCKCHAIN_ADAPTER) private blockchainAdapter: BlockchainAdapter, @InjectConnection() connection: Connection, @@ -384,6 +386,7 @@ export class AssetLifecycleService { { assetId, scheduledStartTime: auctionStartTime, + network: this.networkContextService.getNetwork(), }, { delay: startDelayMinutes * 60 * 1000, // Convert minutes to milliseconds @@ -401,6 +404,7 @@ export class AssetLifecycleService { { assetId, expectedEndTime: auctionEndTime, + network: this.networkContextService.getNetwork(), }, { delay: totalDelayMs, @@ -435,12 +439,13 @@ export class AssetLifecycleService { allBids: any[]; priceBreakdown: any[]; }> { - const asset = await this.assetModel.findOne({ assetId }); + const network = this.networkContextService.getNetwork(); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { throw new Error('Asset not found'); } - const bids = await this.bidModel.find({ assetId }).sort({ price: -1 }).exec(); + const bids = await this.bidModel.find({ assetId, network }).sort({ price: -1 }).exec(); // tokenParams.totalSupply is canonical 4-decimal format — parse as float const totalSupply = parseFloat(asset.tokenParams.totalSupply); @@ -552,8 +557,9 @@ export class AssetLifecycleService { async endAuction(assetId: string, clearingPrice: string, transactionHash: string) { this.logger.log(`Ending auction for asset ${assetId} with clearing price ${clearingPrice}`); + const network = this.networkContextService.getNetwork(); - const asset = await this.assetModel.findOne({ assetId }); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { throw new Error('Asset not found'); } @@ -592,7 +598,7 @@ export class AssetLifecycleService { this.logger.log(`Auction ${assetId} results already declared with clearing price ${clearingPriceBigInt.toString()} - skipping duplicate processing`); // Get all bids to calculate results for response - const bids = await this.bidModel.find({ assetId }).exec(); + const bids = await this.bidModel.find({ assetId, network }).exec(); let tokensSold = BigInt(0); let wonCount = 0; let lostCount = 0; @@ -682,7 +688,7 @@ export class AssetLifecycleService { this.logger.log(`Auction ${assetId} ended with clearing price ${storedClearingPrice}`); // Get all bids to calculate results - const bids = await this.bidModel.find({ assetId }).exec(); + const bids = await this.bidModel.find({ assetId, network }).exec(); this.logger.log(`Found ${bids.length} bids for auction ${assetId}`); // Calculate tokens sold and update bid statuses (bids > clearing price = WON, else LOST) @@ -940,8 +946,9 @@ export class AssetLifecycleService { */ async payoutOriginator(assetId: string) { this.logger.log(`Processing originator payout for asset: ${assetId}`); + const network = this.networkContextService.getNetwork(); - const asset = await this.assetModel.findOne({ assetId }); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { throw new Error('Asset not found'); } @@ -959,6 +966,7 @@ export class AssetLifecycleService { assetId, status: 'CONFIRMED', source: { $in: ['PRIMARY_MARKET', 'AUCTION'] }, + network, }); // Ask the payment adapter how many decimals it uses (6 for Mantle, 7 for Stellar) @@ -985,6 +993,7 @@ export class AssetLifecycleService { const wonBids = await this.bidModel.find({ assetId, status: { $in: ['WON', 'SETTLED', 'FINALIZED'] }, + network, }); if (wonBids.length > 0) { @@ -1036,6 +1045,7 @@ export class AssetLifecycleService { assetId, rwaTokenAddress: { $regex: new RegExp(`^${tokenAddressLower}$`, 'i') }, status: { $in: ['ACTIVE', 'LIQUIDATED'] }, // Include both active and liquidated positions + network, }); this.logger.log(` Query returned ${leveragePositions.length} positions`); @@ -1294,7 +1304,8 @@ export class AssetLifecycleService { * Includes both regular purchases and leveraged position purchases */ async getPurchaseHistory(assetId: string) { - const asset = await this.assetModel.findOne({ assetId }); + const network = this.networkContextService.getNetwork(); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { throw new Error('Asset not found'); } @@ -1306,7 +1317,7 @@ export class AssetLifecycleService { if (asset.listing?.type === 'STATIC') { // Get confirmed purchases for STATIC listings const confirmedPurchases = await this.purchaseModel - .find({ assetId, status: { $in: ['CONFIRMED', 'CLAIMED'] } }) + .find({ assetId, status: { $in: ['CONFIRMED', 'CLAIMED'] }, network }) .sort({ createdAt: 1 }) // Sort by time ascending .exec(); @@ -1327,7 +1338,7 @@ export class AssetLifecycleService { } } else if (asset.listing?.type === 'AUCTION') { const settlementPurchases = await this.purchaseModel - .find({ assetId, status: { $in: ['CONFIRMED', 'CLAIMED'] } }) + .find({ assetId, status: { $in: ['CONFIRMED', 'CLAIMED'] }, network }) .sort({ createdAt: 1 }) .exec(); @@ -1351,7 +1362,7 @@ export class AssetLifecycleService { // Get leveraged position purchases for this asset try { const leveragePositions = await this.leveragePositionModel - .find({ assetId, status: { $in: ['ACTIVE', 'SETTLED', 'LIQUIDATED', 'CLOSED'] } }) + .find({ assetId, status: { $in: ['ACTIVE', 'SETTLED', 'LIQUIDATED', 'CLOSED'] }, network }) .sort({ createdAt: 1 }) .exec(); diff --git a/packages/backend/src/modules/kyc/processors/verification.processor.ts b/packages/backend/src/modules/kyc/processors/verification.processor.ts index f7fd8f10..1e3596d7 100644 --- a/packages/backend/src/modules/kyc/processors/verification.processor.ts +++ b/packages/backend/src/modules/kyc/processors/verification.processor.ts @@ -15,6 +15,7 @@ import { NotificationType } from '../../notifications/enums/notification-type.en import { NotificationSeverity } from '../../notifications/enums/notification-type.enum'; import { NotificationAction } from '../../notifications/enums/notification-action.enum'; import { isStellarWallet, isEvmWallet, detectWalletNetwork } from '../utils/wallet-detector.util'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import * as fs from 'fs'; import * as path from 'path'; // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -36,15 +37,17 @@ export class VerificationProcessor extends WorkerHost { private notificationService: NotificationService, private userPortfolioService: UserPortfolioService, private configService: ConfigService, + private networkContextService: NetworkContextService, ) { super(); } async process(job: Job): Promise { - const { userId, fileUrl } = job.data; + const { userId, fileUrl, network = NetworkType.MANTLE } = job.data; - try { - const filePath = this.storageService.getFullPath(fileUrl); + return await this.networkContextService.runWithNetwork(network, async () => { + try { + const filePath = this.storageService.getFullPath(fileUrl); const dataBuffer = fs.readFileSync(filePath); const extension = path.extname(filePath).toLowerCase(); @@ -255,12 +258,12 @@ export class VerificationProcessor extends WorkerHost { // Detect wallet network from address format, not deployment config const isStellar = isStellarWallet(user.walletAddress); const walletNetwork = detectWalletNetwork(user.walletAddress); - const deploymentNetwork = (this.configService.get('network.networkType') || NetworkType.MANTLE) as NetworkType; + const deploymentNetwork = this.networkContextService.getNetwork(); let txHash: string | undefined; let oaidTxHash: string | undefined; let hasOAID = false; - this.logger.log(`šŸ” Detected wallet network: ${walletNetwork}, Deployment network: ${deploymentNetwork}`); + this.logger.log(`šŸ” Detected wallet network: ${walletNetwork}, Active context network: ${deploymentNetwork}`); // Stellar wallets use trustlines for compliance - skip on-chain identity registration if (!isStellar) { @@ -294,8 +297,8 @@ export class VerificationProcessor extends WorkerHost { // Initialize portfolio for the newly verified investor (all networks) try { - // Use wallet's network for portfolio, not deployment network - const portfolioNetwork = (isStellar ? NetworkType.STELLAR : deploymentNetwork) as NetworkType; + // Use active context network for portfolio initialization + const portfolioNetwork = deploymentNetwork; await this.userPortfolioService.initializePortfolio(user.walletAddress, portfolioNetwork); this.logger.log(`āœ… Portfolio initialized for ${user.walletAddress} on ${portfolioNetwork}`); } catch (portfolioError) { @@ -350,5 +353,6 @@ export class VerificationProcessor extends WorkerHost { ); throw e; } + }); } } diff --git a/packages/backend/src/modules/kyc/services/kyc.service.ts b/packages/backend/src/modules/kyc/services/kyc.service.ts index 793577e6..9544fe9f 100644 --- a/packages/backend/src/modules/kyc/services/kyc.service.ts +++ b/packages/backend/src/modules/kyc/services/kyc.service.ts @@ -17,6 +17,7 @@ import { NotificationType } from '../../notifications/enums/notification-type.en import { NotificationSeverity } from '../../notifications/enums/notification-type.enum'; import { NotificationAction } from '../../notifications/enums/notification-action.enum'; import { NetworkType } from '@openassets/types'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; @Injectable() export class KycService { @@ -30,6 +31,7 @@ export class KycService { private notificationService: NotificationService, private userPortfolioService: UserPortfolioService, private configService: ConfigService, + private networkContextService: NetworkContextService, ) {} async uploadDocument(user: UserDocument, file: Express.Multer.File) { @@ -66,6 +68,7 @@ export class KycService { walletAddress: user.walletAddress, fileUrl, documentId, + network: this.networkContextService.getNetwork(), }); return { @@ -160,10 +163,10 @@ export class KycService { // Register investor identity on blockchain (skip for Stellar wallets) const isStellar = isStellarWallet(fullUser.walletAddress); const walletNetwork = detectWalletNetwork(fullUser.walletAddress); - const deploymentNetwork = (this.configService.get('network.networkType') || NetworkType.MANTLE) as NetworkType; + const deploymentNetwork = this.networkContextService.getNetwork(); let txHash: string | undefined; - this.logger.log(`šŸ” Detected wallet network: ${walletNetwork}, Deployment network: ${deploymentNetwork}`); + this.logger.log(`šŸ” Detected wallet network: ${walletNetwork}, Active context network: ${deploymentNetwork}`); try { // Stellar wallets use trustlines for compliance - skip on-chain identity registration @@ -177,8 +180,8 @@ export class KycService { // Initialize portfolio for the newly verified investor (all networks) try { - // Use wallet's network for portfolio, not deployment network - const portfolioNetwork = (isStellar ? NetworkType.STELLAR : deploymentNetwork) as NetworkType; + // Use active network context for portfolio initialization + const portfolioNetwork = deploymentNetwork; await this.userPortfolioService.initializePortfolio(fullUser.walletAddress, portfolioNetwork); this.logger.log(`āœ… Portfolio initialized for ${fullUser.walletAddress} on ${portfolioNetwork}`); } catch (portfolioError) { diff --git a/packages/backend/src/modules/marketplace/controllers/marketplace.controller.ts b/packages/backend/src/modules/marketplace/controllers/marketplace.controller.ts index 6b5c7c53..1bc744cf 100644 --- a/packages/backend/src/modules/marketplace/controllers/marketplace.controller.ts +++ b/packages/backend/src/modules/marketplace/controllers/marketplace.controller.ts @@ -14,6 +14,7 @@ import { NotifyPurchaseDto } from '../dto/notify-purchase.dto'; import { NotifyBidDto } from '../dto/notify-bid.dto'; import { NotifySettlementDto } from '../dto/notify-settlement.dto'; import { NotifyYieldClaimDto } from '../dto/notify-yield-claim.dto'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { fromCanonical } from '../../blockchain/utils/numeric-conversion'; @Controller('marketplace') @@ -26,6 +27,7 @@ export class MarketplaceController { @InjectModel(User.name) private userModel: Model, private purchaseTracker: PurchaseTrackerService, private bidTracker: BidTrackerService, + private networkContextService: NetworkContextService, ) { } @Get('listings') @@ -34,10 +36,12 @@ export class MarketplaceController { @Query('status') status?: string, @Query('industry') industry?: string, ) { + const network = this.networkContextService.getNetwork(); const query: any = { status: { $in: [AssetStatus.LISTED, AssetStatus.TOKENIZED, ] }, 'listing.active': true, 'token.address': { $exists: true }, // Must have token deployed + network, }; if (industry) { @@ -98,7 +102,8 @@ export class MarketplaceController { @Get('listings/:assetId') @UseGuards(JwtAuthGuard) async getListingDetail(@Param('assetId') assetId: string) { - const asset = await this.assetModel.findOne({ assetId }); + const network = this.networkContextService.getNetwork(); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset) { return { @@ -140,9 +145,11 @@ export class MarketplaceController { @Get('stats') @UseGuards(JwtAuthGuard) async getMarketplaceStats() { + const network = this.networkContextService.getNetwork(); const totalListed = await this.assetModel.countDocuments({ 'listing.active': true, 'token.address': { $exists: true }, + network, }); const byIndustry = await this.assetModel.aggregate([ @@ -150,6 +157,7 @@ export class MarketplaceController { $match: { 'listing.active': true, 'token.address': { $exists: true }, + network, }, }, { @@ -173,6 +181,7 @@ export class MarketplaceController { @Get('info') @UseGuards(JwtAuthGuard) async getMarketplaceInfo() { + const network = this.networkContextService.getNetwork(); // Include all assets that have been tokenized and listed (regardless of current lifecycle stage) // This includes: TOKENIZED, SCHEDULED, LISTED, PAYOUT_COMPLETE, YIELD_SETTLED, ENDED const includedStatuses = [ @@ -188,16 +197,17 @@ export class MarketplaceController { const totalAssets = await this.assetModel.countDocuments({ 'token.address': { $exists: true }, status: { $in: includedStatuses }, + network, }); // 2. Active users (users who have made purchases or bids) - const purchaseInvestors = await this.purchaseModel.distinct('investorWallet'); - const bidInvestors = await this.bidModel.distinct('investor'); + const purchaseInvestors = await this.purchaseModel.distinct('investorWallet', { network }); + const bidInvestors = await this.bidModel.distinct('investor', { network }); const uniqueInvestors = new Set([...purchaseInvestors, ...bidInvestors]); const activeUsers = uniqueInvestors.size; // 3. Total settlements - const totalSettlements = await this.settlementModel.countDocuments(); + const totalSettlements = await this.settlementModel.countDocuments({ network }); // 4. Total value tokenized (sum of face values of all tokenized assets) const tokenizedAssets = await this.assetModel.aggregate([ @@ -205,6 +215,7 @@ export class MarketplaceController { $match: { 'token.address': { $exists: true }, status: { $in: includedStatuses }, + network, }, }, { @@ -231,6 +242,7 @@ export class MarketplaceController { @Get('top-grossing') @UseGuards(JwtAuthGuard) async getTopGrossingAssets(@Query('limit') limit?: string) { + const network = this.networkContextService.getNetwork(); const limitNum = limit ? parseInt(limit) : 5; // Default to 5 // Aggregate purchases by assetId @@ -238,6 +250,7 @@ export class MarketplaceController { { $match: { status: 'CONFIRMED', // Only count confirmed purchases + network, }, }, { @@ -250,6 +263,9 @@ export class MarketplaceController { // Aggregate bids by assetId const bidCounts = await this.bidModel.aggregate([ + { + $match: { network }, + }, { $group: { _id: '$assetId', @@ -295,6 +311,7 @@ export class MarketplaceController { .find({ assetId: { $in: assetIds }, status: AssetStatus.LISTED, + network, }) .select({ assetId: 1, diff --git a/packages/backend/src/modules/marketplace/services/auction.service.ts b/packages/backend/src/modules/marketplace/services/auction.service.ts index b9589857..e790477c 100644 --- a/packages/backend/src/modules/marketplace/services/auction.service.ts +++ b/packages/backend/src/modules/marketplace/services/auction.service.ts @@ -5,6 +5,7 @@ import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; import { AssetStatus } from '@openassets/types'; import { Bid, BidDocument } from '../../../database/schemas/bid.schema'; import { ModuleRegistryService } from '../../registry/services/module-registry.service'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { CreateAuctionDto } from '../dto/create-auction.dto'; @Injectable() @@ -15,10 +16,12 @@ export class AuctionService { @InjectModel(Asset.name) private assetModel: Model, @InjectModel(Bid.name) private bidModel: Model, private moduleRegistry: ModuleRegistryService, + private networkContextService: NetworkContextService, ) {} async createAuction(dto: CreateAuctionDto) { - const asset = await this.assetModel.findOne({ assetId: dto.assetId }); + const network = this.networkContextService.getNetwork(); + const asset = await this.assetModel.findOne({ assetId: dto.assetId, network }); if (!asset || !asset.token?.address) { throw new HttpException('Asset or token not found', HttpStatus.NOT_FOUND); } @@ -44,14 +47,15 @@ export class AuctionService { async calculateAndEndAuction(assetId: string) { this.logger.log(`Starting clearing price calculation for auction ${assetId}`); - const asset = await this.assetModel.findOne({ assetId }); + const network = this.networkContextService.getNetwork(); + const asset = await this.assetModel.findOne({ assetId, network }); if (!asset || !asset.listing || !asset.token) { throw new HttpException('Auction not found or asset not tokenized', HttpStatus.NOT_FOUND); } const strategy = this.moduleRegistry.getAdminDomainStrategy(); - const bids = await this.bidModel.find({ assetId }).sort({ price: -1 }); + const bids = await this.bidModel.find({ assetId, network }).sort({ price: -1 }); if (bids.length === 0) { this.logger.warn(`No bids found for auction ${assetId}. Ending without a sale.`); // End auction with a zero clearing price if no bids diff --git a/packages/backend/src/modules/marketplace/services/bid-tracker.service.ts b/packages/backend/src/modules/marketplace/services/bid-tracker.service.ts index c2a2c244..eb0a5133 100644 --- a/packages/backend/src/modules/marketplace/services/bid-tracker.service.ts +++ b/packages/backend/src/modules/marketplace/services/bid-tracker.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Logger, BadRequestException, ConflictException, Inject } from '@nestjs/common'; +import { Injectable, Logger, BadRequestException, ConflictException } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { ConfigService } from '@nestjs/config'; @@ -11,8 +11,8 @@ import { NotifySettlementDto } from '../dto/notify-settlement.dto'; import { NotificationService } from '../../notifications/services/notification.service'; import { NotificationType, NotificationSeverity } from '../../notifications/enums/notification-type.enum'; import { NotificationAction } from '../../notifications/enums/notification-action.enum'; -import { BLOCKCHAIN_ADAPTER } from '../../blockchain/blockchain.constants'; -import { BlockchainAdapter } from '../../blockchain/adapters/blockchain-adapter.interface'; +import { ChainManagerRegistry } from '../../blockchain/services/chain-manager-registry.service'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { UserPortfolioService } from '../../user-portfolio/services/user-portfolio.service'; import { toCanonical, fromCanonical } from '../../blockchain/utils/numeric-conversion'; @@ -22,7 +22,8 @@ export class BidTrackerService { constructor( private configService: ConfigService, - @Inject(BLOCKCHAIN_ADAPTER) private blockchainAdapter: BlockchainAdapter, + private chainManagerRegistry: ChainManagerRegistry, + private networkContextService: NetworkContextService, @InjectModel(Bid.name) private bidModel: Model, @InjectModel(Asset.name) private assetModel: Model, @InjectModel(Purchase.name) private purchaseModel: Model, @@ -35,16 +36,18 @@ export class BidTrackerService { */ async notifyBid(dto: NotifyBidDto, investorWallet: string) { this.logger.log(`Processing bid notification: ${dto.txHash}`); + const network = this.networkContextService.getNetwork(); // Check if already processed - const existing = await this.bidModel.findOne({ transactionHash: dto.txHash }); + const existing = await this.bidModel.findOne({ transactionHash: dto.txHash, network }); if (existing) { - this.logger.warn(`Bid ${dto.txHash} already processed`); + this.logger.warn(`Bid ${dto.txHash} already processed on ${network}`); throw new ConflictException('Bid already recorded'); } // Validate transaction on-chain - const bidData = await this.blockchainAdapter.verifyBidTransaction( + const adapter = this.chainManagerRegistry.getManager(network).getBlockchainAdapter(); + const bidData = await adapter.verifyBidTransaction( dto.txHash, dto.assetId, investorWallet, @@ -55,7 +58,7 @@ export class BidTrackerService { } // Get asset details - const asset = await this.assetModel.findOne({ assetId: dto.assetId }); + const asset = await this.assetModel.findOne({ assetId: dto.assetId, network }); if (!asset) { throw new BadRequestException('Asset not found'); } @@ -72,8 +75,6 @@ export class BidTrackerService { const usdcDepositedRaw = (priceBigInt * tokenAmountBigInt) / BigInt(10 ** 18); const usdcDepositedCanonical = toCanonical(usdcDepositedRaw, 6); - const network = this.configService.get('network.networkType') || NetworkType.MANTLE; - // Record bid in database const bid = await this.bidModel.create({ assetId: dto.assetId, @@ -133,8 +134,10 @@ export class BidTrackerService { * Get investor's bids for an auction */ async getInvestorBids(investorWallet: string, assetId?: string) { + const network = this.networkContextService.getNetwork(); const query: any = { bidder: investorWallet.toLowerCase(), + network, }; if (assetId) { @@ -168,8 +171,9 @@ export class BidTrackerService { * Get all bids for an auction (admin/public view) */ async getAuctionBids(assetId: string) { + const network = this.networkContextService.getNetwork(); const bids = await this.bidModel - .find({ assetId }) + .find({ assetId, network }) .sort({ price: -1, createdAt: 1 }); // Highest price first, then chronological // Calculate total demand at each price point @@ -210,12 +214,14 @@ export class BidTrackerService { */ async notifySettlement(dto: NotifySettlementDto, investorWallet: string) { this.logger.log(`Processing settlement notification: ${dto.txHash} for bid index ${dto.bidIndex}`); + const network = this.networkContextService.getNetwork(); // Find the bid by assetId, bidder, and bidIndex const bid = await this.bidModel.findOne({ assetId: dto.assetId, bidder: investorWallet.toLowerCase(), bidIndex: dto.bidIndex, + network, }); if (!bid) { @@ -230,7 +236,8 @@ export class BidTrackerService { this.logger.log('Validating settlement transaction on-chain...'); // Validate settlement transaction on-chain - const settlementData = await this.blockchainAdapter.verifyBidSettlement( + const adapter = this.chainManagerRegistry.getManager(network).getBlockchainAdapter(); + const settlementData = await adapter.verifyBidSettlement( dto.txHash, dto.assetId, investorWallet, @@ -283,7 +290,7 @@ export class BidTrackerService { // Send notification to bidder based on settlement outcome try { - const asset = await this.assetModel.findOne({ assetId: dto.assetId }); + const asset = await this.assetModel.findOne({ assetId: dto.assetId, network }); const assetName = asset ? `${asset.metadata?.invoiceNumber} - ${asset.metadata?.buyerName}` : dto.assetId; if (newStatus === BidStatus.SETTLED && tokensReceivedBigInt > 0n) { @@ -335,7 +342,7 @@ export class BidTrackerService { // Create purchase record if tokens were received if (newStatus === BidStatus.SETTLED && tokensReceivedBigInt > 0n) { try { - const asset = await this.assetModel.findOne({ assetId: dto.assetId }); + const asset = await this.assetModel.findOne({ assetId: dto.assetId, network }); if (!asset) { throw new Error(`Asset ${dto.assetId} not found`); } @@ -363,7 +370,7 @@ export class BidTrackerService { totalPayment: settlementData.cost.value, // Canonical status: 'CONFIRMED', source: 'PRIMARY_MARKET', - network: (asset.network || NetworkType.MANTLE) as NetworkType, + network, metadata: { assetName: asset.metadata?.invoiceNumber, industry: asset.metadata?.industry, @@ -373,12 +380,12 @@ export class BidTrackerService { // Update portfolio try { - await this.userPortfolioService.updateOnPurchase(purchase, (asset.network || NetworkType.MANTLE) as NetworkType); - this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || NetworkType.MANTLE}`); + await this.userPortfolioService.updateOnPurchase(purchase, network); + this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${network}`); } catch (error: any) { this.logger.error(`āŒ CRITICAL: Failed to update portfolio after auction settlement for ${investorWallet}: ${error.message}`); this.logger.error(`Error stack: ${error.stack}`); - this.logger.error(`Purchase details - assetId: ${dto.assetId}, amount: ${settlementData.tokensReceived.value}, network: ${asset.network || NetworkType.MANTLE}`); + this.logger.error(`Purchase details - assetId: ${dto.assetId}, amount: ${settlementData.tokensReceived.value}, network: ${network}`); // Continue operation - portfolio can be rebuilt later via admin endpoint } @@ -429,9 +436,11 @@ export class BidTrackerService { private async syncListingSold(assetId: string) { try { + const network = this.networkContextService.getNetwork(); const purchases = await this.purchaseModel.find({ assetId, status: { $in: ['CONFIRMED', 'CLAIMED'] }, + network, }).select({ amount: 1 }); const totalSold = purchases.reduce( (acc, p) => acc + parseFloat(p.amount || '0'), @@ -439,11 +448,11 @@ export class BidTrackerService { ); const totalSoldCanonical = totalSold.toFixed(4); await this.assetModel.updateOne( - { assetId }, + { assetId, network }, { $set: { 'listing.sold': totalSoldCanonical } }, ); this.logger.log( - `listing.sold synced for ${assetId}: ${totalSoldCanonical} tokens`, + `listing.sold synced for ${assetId} on ${network}: ${totalSoldCanonical} tokens`, ); } catch (error: any) { this.logger.error(`Failed to sync listing.sold for ${assetId}: ${error.message}`); diff --git a/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts b/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts index dc8fe106..56968040 100644 --- a/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts +++ b/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Logger, BadRequestException, ConflictException, Inject } from '@nestjs/common'; +import { Injectable, Logger, BadRequestException, ConflictException } from '@nestjs/common'; import { InjectModel, InjectConnection } from '@nestjs/mongoose'; import { Model, Connection } from 'mongoose'; import { ConfigService } from '@nestjs/config'; @@ -12,8 +12,8 @@ import { NotifyPurchaseDto } from '../dto/notify-purchase.dto'; import { NotificationService } from '../../notifications/services/notification.service'; import { NotificationType, NotificationSeverity } from '../../notifications/enums/notification-type.enum'; import { NotificationAction } from '../../notifications/enums/notification-action.enum'; -import { BLOCKCHAIN_ADAPTER } from '../../blockchain/blockchain.constants'; -import { BlockchainAdapter } from '../../blockchain/adapters/blockchain-adapter.interface'; +import { ChainManagerRegistry } from '../../blockchain/services/chain-manager-registry.service'; +import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { UserPortfolioService } from '../../user-portfolio/services/user-portfolio.service'; import { toCanonical, fromCanonical } from '../../blockchain/utils/numeric-conversion'; @@ -23,7 +23,8 @@ export class PurchaseTrackerService { constructor( private configService: ConfigService, - @Inject(BLOCKCHAIN_ADAPTER) private blockchainAdapter: BlockchainAdapter, + private chainManagerRegistry: ChainManagerRegistry, + private networkContextService: NetworkContextService, @InjectModel(Purchase.name) private purchaseModel: Model, @InjectModel(Asset.name) private assetModel: Model, @InjectModel(Settlement.name) private settlementModel: Model, @@ -38,16 +39,17 @@ export class PurchaseTrackerService { */ async notifyPurchase(dto: NotifyPurchaseDto, investorWallet: string, type?: string) { this.logger.log(`Processing purchase notification: ${dto.txHash}`); + const network = this.networkContextService.getNetwork(); // Check if already processed - const existing = await this.purchaseModel.findOne({ txHash: dto.txHash }); + const existing = await this.purchaseModel.findOne({ txHash: dto.txHash, network }); if (existing) { - this.logger.warn(`Purchase ${dto.txHash} already processed`); + this.logger.warn(`Purchase ${dto.txHash} already processed on ${network}`); throw new ConflictException('Purchase already recorded'); } // Get asset details - const asset = await this.assetModel.findOne({ assetId: dto.assetId }); + const asset = await this.assetModel.findOne({ assetId: dto.assetId, network }); if (!asset) { throw new BadRequestException('Asset not found'); } @@ -81,7 +83,7 @@ export class PurchaseTrackerService { blockNumber: blockNumber, blockTimestamp: new Date(), status: 'CONFIRMED', - network: (asset.network || NetworkType.MANTLE) as NetworkType, + network, metadata: { assetName: `${asset.metadata?.invoiceNumber} - ${asset.metadata?.buyerName}`, industry: asset.metadata?.industry, @@ -94,12 +96,12 @@ export class PurchaseTrackerService { // Update portfolio try { - await this.userPortfolioService.updateOnPurchase(purchase, (asset.network || NetworkType.MANTLE) as NetworkType); - this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || NetworkType.MANTLE}`); + await this.userPortfolioService.updateOnPurchase(purchase, network); + this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${network}`); } catch (error: any) { this.logger.error(`āŒ CRITICAL: Failed to update portfolio for ${investorWallet}: ${error.message}`); this.logger.error(`Error stack: ${error.stack}`); - this.logger.error(`Purchase details - assetId: ${purchase.assetId}, amount: ${purchase.amount}, network: ${asset.network || NetworkType.MANTLE}`); + this.logger.error(`Purchase details - assetId: ${purchase.assetId}, amount: ${purchase.amount}, network: ${network}`); // Continue operation - portfolio can be rebuilt later via admin endpoint } @@ -117,7 +119,8 @@ export class PurchaseTrackerService { // Handle normal purchase (positive amount) - validate on-chain // Validate transaction on-chain - const purchaseData = await this.blockchainAdapter.verifyPurchaseTransaction( + const adapter = this.chainManagerRegistry.getManager(network).getBlockchainAdapter(); + const purchaseData = await adapter.verifyPurchaseTransaction( dto.txHash, dto.assetId, investorWallet, @@ -145,7 +148,7 @@ export class PurchaseTrackerService { blockTimestamp: new Date(purchaseData.timestamp * 1000), status: 'CONFIRMED', source: 'PRIMARY_MARKET', - network: (asset.network || NetworkType.MANTLE) as NetworkType, + network, metadata: { assetName: `${asset.metadata?.invoiceNumber} - ${asset.metadata?.buyerName}`, industry: asset.metadata?.industry, @@ -158,12 +161,12 @@ export class PurchaseTrackerService { // Update portfolio try { - await this.userPortfolioService.updateOnPurchase(purchase as any, (asset.network || NetworkType.MANTLE) as NetworkType); - this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${asset.network || NetworkType.MANTLE}`); + await this.userPortfolioService.updateOnPurchase(purchase as any, network); + this.logger.log(`āœ… Portfolio updated successfully for ${investorWallet} on ${network}`); } catch (error: any) { this.logger.error(`āŒ CRITICAL: Failed to update portfolio for ${investorWallet}: ${error.message}`); this.logger.error(`Error stack: ${error.stack}`); - this.logger.error(`Purchase details - assetId: ${dto.assetId}, amount: ${purchaseData.amount.value}, network: ${asset.network || NetworkType.MANTLE}`); + this.logger.error(`Purchase details - assetId: ${dto.assetId}, amount: ${purchaseData.amount.value}, network: ${network}`); // Continue operation - portfolio can be rebuilt later via admin endpoint } @@ -176,7 +179,7 @@ export class PurchaseTrackerService { const newSoldAmountCanonical = toCanonical(newSoldAmountRaw, 18); const updateResult = await this.assetModel.updateOne( - { assetId: dto.assetId }, + { assetId: dto.assetId, network }, { $set: { 'listing.sold': newSoldAmountCanonical.value, @@ -237,22 +240,23 @@ export class PurchaseTrackerService { */ async notifyYieldClaim(dto: any, investorWallet: string) { this.logger.log(`Processing yield claim notification: ${dto.txHash}`); + const network = this.networkContextService.getNetwork(); // Check if already processed - const existing = await this.yieldClaimModel.findOne({ txHash: dto.txHash }); + const existing = await this.yieldClaimModel.findOne({ txHash: dto.txHash, network }); if (existing) { - this.logger.warn(`Yield claim ${dto.txHash} already processed`); + this.logger.warn(`Yield claim ${dto.txHash} already processed on ${network}`); throw new ConflictException('Yield claim already recorded'); } // Get asset details - const asset = await this.assetModel.findOne({ assetId: dto.assetId }); + const asset = await this.assetModel.findOne({ assetId: dto.assetId, network }); if (!asset) { throw new BadRequestException('Asset not found'); } // Get settlement info for metadata - const settlement = await this.settlementModel.findOne({ assetId: dto.assetId }).sort({ createdAt: -1 }); + const settlement = await this.settlementModel.findOne({ assetId: dto.assetId, network }).sort({ createdAt: -1 }); const tokensBurnedCanonical = toCanonical(dto.tokensBurned, 18); const usdcReceivedCanonical = toCanonical(dto.usdcReceived, 6); @@ -271,7 +275,7 @@ export class PurchaseTrackerService { rawUsdcReceived: usdcReceivedCanonical.rawPrice, blockNumber: dto.blockNumber ? parseInt(dto.blockNumber) : undefined, status: 'CONFIRMED', - network: (asset.network || NetworkType.MANTLE) as NetworkType, + network, metadata: { assetName: `${asset.metadata?.invoiceNumber} - ${asset.metadata?.buyerName}`, industry: asset.metadata?.industry, @@ -283,7 +287,7 @@ export class PurchaseTrackerService { // Update portfolio try { - await this.userPortfolioService.updateOnYieldClaim(yieldClaim as any, (asset.network || NetworkType.MANTLE) as NetworkType); + await this.userPortfolioService.updateOnYieldClaim(yieldClaim as any, network); } catch (error: any) { this.logger.error(`Failed to update portfolio on yield claim: ${error.message}`); } @@ -295,6 +299,7 @@ export class PurchaseTrackerService { assetId: dto.assetId, status: 'CONFIRMED', source: { $in: ['PRIMARY_MARKET', 'SECONDARY_MARKET'] }, + network, }, { $set: { status: 'CLAIMED' }, @@ -344,11 +349,12 @@ export class PurchaseTrackerService { * Get investor's portfolio (includes both static purchases and leverage positions) */ async getInvestorPortfolio(investorWallet: string) { - this.logger.log(`Building portfolio for ${investorWallet.toLowerCase()} including CONFIRMED/CLAIMED purchases`); + const network = this.networkContextService.getNetwork(); + this.logger.log(`Building portfolio for ${investorWallet.toLowerCase()} on ${network} including CONFIRMED/CLAIMED purchases`); const purchases = await this.purchaseModel.find({ investorWallet: investorWallet.toLowerCase(), status: { $in: ['CLAIMED', 'CONFIRMED'] }, - + network, }) .sort({ createdAt: -1 }); @@ -485,12 +491,13 @@ export class PurchaseTrackerService { try { // Check if settlement has been distributed for this asset const settlement = await this.settlementModel.findOne({ - assetId: item.assetId + assetId: item.assetId, + network, }).sort({ createdAt: -1 }); if (settlement && settlement.usdcAmount) { // Get asset details for total supply - const asset = await this.assetModel.findOne({ assetId: item.assetId }); + const asset = await this.assetModel.findOne({ assetId: item.assetId, network }); if (asset && (asset.listing?.sold || asset.tokenParams?.totalSupply)) { const userTokenBalanceRaw = fromCanonical(item.totalAmount, 18); @@ -524,6 +531,7 @@ export class PurchaseTrackerService { const yieldClaim = await this.yieldClaimModel.findOne({ assetId: item.assetId, investorWallet: investorWallet.toLowerCase(), + network, }); if (yieldClaim) { yieldInfo.yieldClaimTxHash = yieldClaim.txHash; @@ -759,8 +767,9 @@ export class PurchaseTrackerService { * Get purchase history for investor */ async getPurchaseHistory(investorWallet: string, limit = 50) { + const network = this.networkContextService.getNetwork(); const purchases = await this.purchaseModel - .find({ investorWallet: investorWallet.toLowerCase() }) + .find({ investorWallet: investorWallet.toLowerCase(), network }) .sort({ createdAt: -1 }) .limit(limit); From 48f8803e83c210d73e6a3ace9bcba15323337e3b Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 17:21:11 +0530 Subject: [PATCH 20/21] "admin payout , yield distribution" --- packages/backend/.env.example | 1 + .../backend/src/config/blockchain.config.ts | 9 ++++++ .../creditcoin-admin-strategy.service.ts | 7 +++-- .../services/asset-lifecycle.service.ts | 31 +++++++++---------- .../adapters/evm/evm-blockchain.adapter.ts | 7 +++-- .../blockchain/managers/creditcoin.manager.ts | 6 ++++ .../services/network-registry.service.ts | 16 ++++++++++ 7 files changed, 55 insertions(+), 22 deletions(-) diff --git a/packages/backend/.env.example b/packages/backend/.env.example index 1e24e2d3..6d96df49 100644 --- a/packages/backend/.env.example +++ b/packages/backend/.env.example @@ -66,6 +66,7 @@ CREDITCOIN_RPC_URL= CREDITCOIN_CHAIN_ID= CREDITCOIN_ADMIN_PRIVATE_KEY= CREDITCOIN_PLATFORM_PRIVATE_KEY= +CREDITCOIN_CUSTODY_WALLET_ADDRESS= CREDITCOIN_POLL_INTERVAL_MS=3000 # ============================================================================= diff --git a/packages/backend/src/config/blockchain.config.ts b/packages/backend/src/config/blockchain.config.ts index c0ce36b6..4916fe68 100644 --- a/packages/backend/src/config/blockchain.config.ts +++ b/packages/backend/src/config/blockchain.config.ts @@ -11,4 +11,13 @@ export default registerAs('blockchain', () => ({ adminPrivateKey: process.env.ADMIN_PRIVATE_KEY, platformPrivateKey: process.env.PLATFORM_PRIVATE_KEY, custodyAddress: process.env.CUSTODY_WALLET_ADDRESS, + + // Credit Coin specific + creditcoin: { + rpcUrl: process.env.CREDITCOIN_RPC_URL, + chainId: process.env.CREDITCOIN_CHAIN_ID, + adminPrivateKey: process.env.CREDITCOIN_ADMIN_PRIVATE_KEY, + platformPrivateKey: process.env.CREDITCOIN_PLATFORM_PRIVATE_KEY, + custodyAddress: process.env.CREDITCOIN_CUSTODY_WALLET_ADDRESS, + } })); diff --git a/packages/backend/src/modules/admin/implementations/creditcoin/creditcoin-admin-strategy.service.ts b/packages/backend/src/modules/admin/implementations/creditcoin/creditcoin-admin-strategy.service.ts index c614c7ce..e278944b 100644 --- a/packages/backend/src/modules/admin/implementations/creditcoin/creditcoin-admin-strategy.service.ts +++ b/packages/backend/src/modules/admin/implementations/creditcoin/creditcoin-admin-strategy.service.ts @@ -257,10 +257,11 @@ export class CreditCoinAdminStrategy implements IAdminDomainStrategy { this.logger.log(` Platform Fee: $${settlement.platformFee.toFixed(2)} (${platformFeeUsdcWei} USDC wei)`); this.logger.log(` Net Distribution: $${settlement.netDistribution.toFixed(2)} (${netDistributionUsdcWei} USDC wei)`); - // Get admin wallet address for fee transfer - let adminWalletAddress = this.configService.get('blockchain.adminWallet'); + // Get admin wallet address for fee transfer (try Credit Coin specific first) + let adminWalletAddress = this.configService.get('blockchain.creditcoin.adminWallet'); if (!adminWalletAddress) { - const pk = this.configService.get('blockchain.adminPrivateKey'); + const pk = this.configService.get('blockchain.creditcoin.adminPrivateKey') || + this.configService.get('blockchain.adminPrivateKey'); if (!pk) { throw new HttpException('Admin wallet address not configured', HttpStatus.INTERNAL_SERVER_ERROR); } diff --git a/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts b/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts index 204ed722..84f859ec 100644 --- a/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts +++ b/packages/backend/src/modules/assets/services/asset-lifecycle.service.ts @@ -27,9 +27,7 @@ import { NotificationService } from '../../notifications/services/notification.s import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { getConfiguredNetworkType } from '../../auth/utils/wallet.util'; import { fromCanonical } from '../../blockchain/utils/numeric-conversion'; -import { PAYMENT_ADAPTER, BLOCKCHAIN_ADAPTER } from '../../blockchain/blockchain.constants'; -import { PaymentAdapter } from '../../blockchain/adapters/payment-adapter.interface'; -import { BlockchainAdapter } from '../../blockchain/adapters/blockchain-adapter.interface'; +import { NetworkRegistryService } from '../../blockchain/services/network-registry.service'; @Injectable() export class AssetLifecycleService { @@ -49,8 +47,7 @@ export class AssetLifecycleService { private announcementService: AnnouncementService, private notificationService: NotificationService, private networkContextService: NetworkContextService, - @Inject(PAYMENT_ADAPTER) private paymentAdapter: PaymentAdapter, - @Inject(BLOCKCHAIN_ADAPTER) private blockchainAdapter: BlockchainAdapter, + private networkRegistryService: NetworkRegistryService, @InjectConnection() connection: Connection, ) { this.leveragePositionModel = connection.model(LeveragePosition.name); @@ -919,7 +916,7 @@ export class AssetLifecycleService { try { this.logger.log(`šŸ”„ Burn attempt ${attempt}/${maxRetries} for asset ${assetId}`); - const result = await this.blockchainAdapter.burnUnsoldTokens(tokenAddress, assetId); + const result = await this.networkRegistryService.burnUnsoldTokens(tokenAddress, assetId); this.logger.log(`āœ… Burn successful on attempt ${attempt}`); return result; @@ -969,8 +966,8 @@ export class AssetLifecycleService { network, }); - // Ask the payment adapter how many decimals it uses (6 for Mantle, 7 for Stellar) - const stablecoinDecimals = await this.paymentAdapter.getStablecoinDecimals(); + // Determine stablecoin decimals based on network + const stablecoinDecimals = network === 'stellar' ? 7 : 6; for (const purchase of confirmedPurchases) { // Handle both old (wei) and new (canonical) format purchases @@ -1081,15 +1078,15 @@ export class AssetLifecycleService { throw new Error('No USDC raised yet - no confirmed purchases or leverage positions'); } - this.logger.log(`Total USDC to payout: ${totalUsdcRaised.toString()} (${Number(totalUsdcRaised) / 1e6} USDC)`); + this.logger.log(`Total USDC to payout: ${totalUsdcRaised.toString()} (${Number(totalUsdcRaised) / 10 ** stablecoinDecimals} USDC)`); this.logger.log(` - PRIMARY_MARKET purchases: ${confirmedPurchases.length}`); this.logger.log(` - Leverage positions: ${leveragePositions.length}`); - // Execute transfer using payment adapter (network-agnostic) + // Execute transfer using network registry (which uses appropriate adapter) this.logger.log(`\nšŸ’ø ========== EXECUTING PAYOUT TRANSFER ==========`); - const transferResult = await this.paymentAdapter.transferStablecoin( + const transferResult = await this.networkRegistryService.payoutToRecipient( asset.originator, - totalUsdcRaised, + totalUsdcRaised.toString(), ); this.logger.log(`========================================\n`); @@ -1098,9 +1095,9 @@ export class AssetLifecycleService { assetId, originator: asset.originator, amount: totalUsdcRaised.toString(), - amountFormatted: transferResult.amountFormatted, + amountFormatted: `${(Number(totalUsdcRaised) / 10 ** stablecoinDecimals).toFixed(2)} USDC`, transactionHash: transferResult.txId, - blockNumber: transferResult.blockNumber, + blockNumber: 0, // Block number not returned by transferUSDC currently paidAt: new Date(), purchaseIds: confirmedPurchases.map(p => p._id.toString()), purchasesCount: confirmedPurchases.length, @@ -1268,7 +1265,7 @@ export class AssetLifecycleService { userId: asset.originator, walletAddress: asset.originator, header: 'Payout Complete', - detail: `Your payout of ${transferResult.amountFormatted} for asset ${asset.metadata.invoiceNumber} has been successfully transferred to your wallet.`, + detail: `Your payout of ${(Number(totalUsdcRaised) / 10 ** stablecoinDecimals).toFixed(2)} USDC for asset ${asset.metadata.invoiceNumber} has been successfully transferred to your wallet.`, type: NotificationType.PAYOUT_SETTLED, severity: NotificationSeverity.SUCCESS, action: NotificationAction.VIEW_PORTFOLIO, @@ -1289,11 +1286,11 @@ export class AssetLifecycleService { assetId, originator: asset.originator, totalUsdcRaised: totalUsdcRaised.toString(), - totalUsdcRaisedFormatted: transferResult.amountFormatted, + totalUsdcRaisedFormatted: `${(Number(totalUsdcRaised) / 10 ** stablecoinDecimals).toFixed(2)} USDC`, listingType: asset.listing?.type, transactionCount: confirmedPurchases.length + leveragePositions.length, transactionHash: transferResult.txId, - blockNumber: transferResult.blockNumber.toString(), + blockNumber: '0', payoutId: payoutRecord._id.toString(), message: 'Payout executed successfully!', }; diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts index 54fe014f..98c343ae 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts @@ -26,6 +26,7 @@ import { toCanonical, fromCanonical } from '../../utils/numeric-conversion'; export class EvmBlockchainAdapter implements BlockchainAdapter { private readonly logger = new Logger(EvmBlockchainAdapter.name); private publicClient: PublicClient; + private custodyAddress?: string; constructor( private readonly configService: ConfigService, @@ -37,12 +38,14 @@ export class EvmBlockchainAdapter implements BlockchainAdapter { chainId?: number; networkName?: string; nativeSymbol?: string; + custodyAddress?: string; } ) { const rpcUrl = configOverride?.rpcUrl || this.configService.get('blockchain.rpcUrl') || 'http://localhost:8545'; const chainId = configOverride?.chainId || this.configService.get('blockchain.chainId') || 5003; const networkName = configOverride?.networkName || this.configService.get('network.networkName') || 'Mantle Sepolia'; const nativeSymbol = configOverride?.nativeSymbol || this.configService.get('blockchain.evmNativeSymbol') || 'MNT'; + this.custodyAddress = configOverride?.custodyAddress; const chain = defineChain({ id: chainId, @@ -509,10 +512,10 @@ export class EvmBlockchainAdapter implements BlockchainAdapter { const tokenAbi = this.contractAdapter.getContractInterface('RWAToken'); // Get custody wallet address (where unsold tokens are held) - const custodyWalletAddress = this.configService.get('blockchain.custodyAddress'); + const custodyWalletAddress = this.custodyAddress || this.configService.get('blockchain.custodyAddress'); if (!custodyWalletAddress) { - throw new Error('Custody wallet address not configured in .env (CUSTODY_WALLET_ADDRESS)'); + throw new Error('Custody wallet address not configured'); } this.logger.log(` Checking custody wallet: ${custodyWalletAddress}`); diff --git a/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts b/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts index ca994038..d95ce245 100644 --- a/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts +++ b/packages/backend/src/modules/blockchain/managers/creditcoin.manager.ts @@ -25,6 +25,11 @@ export class CreditCoinChainManager implements ChainManager { const chainId = Number(this.configService.get('CREDITCOIN_CHAIN_ID')); const adminPk = this.configService.get('CREDITCOIN_ADMIN_PRIVATE_KEY'); const platformPk = this.configService.get('CREDITCOIN_PLATFORM_PRIVATE_KEY'); + const custodyAddress = this.configService.get('CREDITCOIN_CUSTODY_WALLET_ADDRESS'); + + if (!custodyAddress) { + this.logger.warn('CREDITCOIN_CUSTODY_WALLET_ADDRESS not configured. Burn operations might fail.'); + } this.contractAdapter = new EvmContractAdapter( this.configService, @@ -51,6 +56,7 @@ export class CreditCoinChainManager implements ChainManager { chainId, networkName: 'Credit Coin CC3', nativeSymbol: 'CTC', + custodyAddress, } ); } diff --git a/packages/backend/src/modules/blockchain/services/network-registry.service.ts b/packages/backend/src/modules/blockchain/services/network-registry.service.ts index 339f312e..debdfb00 100644 --- a/packages/backend/src/modules/blockchain/services/network-registry.service.ts +++ b/packages/backend/src/modules/blockchain/services/network-registry.service.ts @@ -142,4 +142,20 @@ export class NetworkRegistryService { const adapter = this.getBlockchainAdapter(); return await adapter.transferUSDC(recipientAddress, usdcAmount); } + + async burnUnsoldTokens(tokenIdentifier: string, assetId: string) { + if (!this.isAvailable('assets')) { + return null; + } + const adapter = this.getBlockchainAdapter(); + return await adapter.burnUnsoldTokens(tokenIdentifier, assetId); + } + + async payoutToRecipient(recipientAddress: string, usdcAmount: string) { + if (!this.isAvailable('assets')) { + return { txId: '', skipped: true }; + } + const adapter = this.getBlockchainAdapter(); + return await adapter.transferUSDC(recipientAddress, usdcAmount); + } } From dca090662bed628dab52ab6b056217ac96b3b956 Mon Sep 17 00:00:00 2001 From: Dead-Bytes Date: Wed, 4 Mar 2026 19:11:01 +0530 Subject: [PATCH 21/21] "yield claim notify updated" --- .../adapters/blockchain-adapter.interface.ts | 28 ++++++ .../adapters/evm/evm-blockchain.adapter.ts | 95 ++++++++++++++++++- .../services/network-registry.service.ts | 11 +++ .../controllers/marketplace.controller.ts | 25 +++++ .../services/purchase-tracker.service.ts | 21 +++- .../yield/controllers/yield.controller.ts | 53 +++++++++++ 6 files changed, 228 insertions(+), 5 deletions(-) diff --git a/packages/backend/src/modules/blockchain/adapters/blockchain-adapter.interface.ts b/packages/backend/src/modules/blockchain/adapters/blockchain-adapter.interface.ts index f2dff19b..946c3597 100644 --- a/packages/backend/src/modules/blockchain/adapters/blockchain-adapter.interface.ts +++ b/packages/backend/src/modules/blockchain/adapters/blockchain-adapter.interface.ts @@ -26,6 +26,13 @@ export interface BidSettlementResult { cost: PreciseNumeric; // Canonical 4-decimal (USDC) } +export interface YieldClaimVerificationResult { + tokensBurned: PreciseNumeric; // Canonical 4-decimal + usdcReceived: PreciseNumeric; // Canonical 4-decimal (USDC) + blockNumber: number; + timestamp: number; +} + export interface TokenBurnResult { txId: string; // Transaction hash/ID (network-specific format) blockNumber: number; // Block number (EVM) or ledger sequence (Stellar) @@ -131,6 +138,27 @@ export interface BlockchainAdapter { recipientAddress: string, usdcAmount: string, ): Promise<{ txId: string }>; + + /** + * Verify a yield claim transaction on-chain + */ + verifyYieldClaimTransaction( + txHash: string, + tokenAddress: string, + expectedInvestor: string, + ): Promise; + + /** + * Get the amount of USDC claimable by a user from YieldVault + * + * @param userAddress - Investor wallet address + * @param tokenAddress - Optional: scope to a specific token + * @returns Canonical string amount (e.g. "12.5000") + */ + getClaimableYield?( + userAddress: string, + tokenAddress?: string, + ): Promise; // Stellar specific (gracefully ignored on EVM) approveTrustline?(walletAddress: WalletAddress, assetIdentifier: string): Promise<{ txId: string; skipped?: boolean }>; diff --git a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts index 98c343ae..b3e5336e 100644 --- a/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts +++ b/packages/backend/src/modules/blockchain/adapters/evm/evm-blockchain.adapter.ts @@ -15,7 +15,8 @@ import { DeployedTokenResult, PurchaseVerificationResult, BidVerificationResult, - BidSettlementResult + BidSettlementResult, + YieldClaimVerificationResult } from '../blockchain-adapter.interface'; import { EvmWalletAdapter } from './evm-wallet.adapter'; import { EvmContractAdapter } from './evm-contract-loader.adapter'; @@ -686,5 +687,97 @@ export class EvmBlockchainAdapter implements BlockchainAdapter { return { txId: hash }; } + + async verifyYieldClaimTransaction( + txHash: string, + tokenAddress: string, + expectedInvestor: string, + ): Promise { + try { + const receipt = await this.executeWithRetry(() => this.publicClient.getTransactionReceipt({ hash: txHash as `0x${string}` }), 'getTransactionReceipt'); + + if (!receipt || receipt.status !== 'success') { + this.logger.error(`Transaction not found or failed: ${txHash}`); + return null; + } + + const block = await this.publicClient.getBlock({ blockNumber: receipt.blockNumber }); + const yieldVaultAddress = this.contractAdapter.getContractAddress('YieldVault'); + const abi = this.contractAdapter.getContractInterface('YieldVault'); + + for (const log of receipt.logs) { + if (log.address.toLowerCase() !== yieldVaultAddress.toLowerCase()) { + continue; + } + + try { + const decoded = decodeEventLog({ + abi, + data: log.data, + topics: log.topics, + }) as unknown as { eventName: string; args: any }; + + if (decoded.eventName === 'YieldClaimed') { + const { user, tokenAddress: eventTokenAddress, tokensBurned, usdcReceived } = decoded.args; + + if ( + user.toLowerCase() === expectedInvestor.toLowerCase() && + eventTokenAddress.toLowerCase() === tokenAddress.toLowerCase() + ) { + return { + tokensBurned: toCanonical(tokensBurned, 18), + usdcReceived: toCanonical(usdcReceived, 6), + blockNumber: Number(receipt.blockNumber), + timestamp: Number(block.timestamp), + }; + } + } + } catch { continue; } + } + + this.logger.error(`YieldClaimed event not found in transaction ${txHash}`); + return null; + } catch (error: any) { + this.logger.error(`Error validating yield claim ${txHash}:`, error.message); + return null; + } + } + + async getClaimableYield( + userAddress: string, + tokenAddress?: string, + ): Promise { + const yieldVaultAddress = this.contractAdapter.getContractAddress('YieldVault'); + const abi = this.contractAdapter.getContractInterface('YieldVault'); + + let claimableRaw: bigint; + + if (tokenAddress) { + // Get user's RWA token balance first + const rwaTokenAbi = this.contractAdapter.getContractInterface('RWAToken'); + const balance = await this.executeWithRetry(() => this.publicClient.readContract({ + address: tokenAddress as Address, + abi: rwaTokenAbi, + functionName: 'balanceOf', + args: [userAddress], + }), 'balanceOf read') as bigint; + + claimableRaw = await this.executeWithRetry(() => this.publicClient.readContract({ + address: yieldVaultAddress as Address, + abi, + functionName: 'getClaimableForTokens', + args: [tokenAddress, balance], + }), 'getClaimableForTokens read') as bigint; + } else { + claimableRaw = await this.executeWithRetry(() => this.publicClient.readContract({ + address: yieldVaultAddress as Address, + abi, + functionName: 'getUserClaimable', + args: [userAddress], + }), 'getUserClaimable read') as bigint; + } + + return toCanonical(claimableRaw, 6).value; + } } diff --git a/packages/backend/src/modules/blockchain/services/network-registry.service.ts b/packages/backend/src/modules/blockchain/services/network-registry.service.ts index debdfb00..7ecc8135 100644 --- a/packages/backend/src/modules/blockchain/services/network-registry.service.ts +++ b/packages/backend/src/modules/blockchain/services/network-registry.service.ts @@ -158,4 +158,15 @@ export class NetworkRegistryService { const adapter = this.getBlockchainAdapter(); return await adapter.transferUSDC(recipientAddress, usdcAmount); } + + async getInvestorClaimableYield(userAddress: string, tokenAddress?: string): Promise { + if (!this.isAvailable('yield')) { + return '0.0000'; + } + const adapter = this.getBlockchainAdapter(); + if (adapter.getClaimableYield) { + return await adapter.getClaimableYield(userAddress, tokenAddress); + } + return '0.0000'; + } } diff --git a/packages/backend/src/modules/marketplace/controllers/marketplace.controller.ts b/packages/backend/src/modules/marketplace/controllers/marketplace.controller.ts index 1bc744cf..ef71fcd4 100644 --- a/packages/backend/src/modules/marketplace/controllers/marketplace.controller.ts +++ b/packages/backend/src/modules/marketplace/controllers/marketplace.controller.ts @@ -1,4 +1,5 @@ import { Controller, Get, Post, Param, UseGuards, Query, Body, Request } from '@nestjs/common'; +import { ApiTags, ApiOperation, ApiResponse, ApiHeader, ApiBody } from '@nestjs/swagger'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; @@ -17,6 +18,8 @@ import { NotifyYieldClaimDto } from '../dto/notify-yield-claim.dto'; import { NetworkContextService } from '../../blockchain/services/network-context.service'; import { fromCanonical } from '../../blockchain/utils/numeric-conversion'; +@ApiTags('Marketplace') +@ApiHeader({ name: 'X-Network', description: 'Network context', enum: ['mantle', 'stellar', 'arbitrum', 'creditcoin'] }) @Controller('marketplace') export class MarketplaceController { constructor( @@ -30,6 +33,8 @@ export class MarketplaceController { private networkContextService: NetworkContextService, ) { } + @ApiOperation({ summary: 'Get marketplace listings', description: 'Returns active RWA token listings for the current network.' }) + @ApiResponse({ status: 200, description: 'List of assets' }) @Get('listings') @UseGuards(JwtAuthGuard) // Investors must be authenticated async getListings( @@ -371,6 +376,9 @@ export class MarketplaceController { }; } + @ApiOperation({ summary: 'Notify purchase', description: 'Records a primary market purchase after it has been executed on-chain.' }) + @ApiBody({ type: NotifyPurchaseDto }) + @ApiResponse({ status: 201, description: 'Purchase recorded' }) @Post('purchases/notify') @UseGuards(JwtAuthGuard) async notifyPurchase(@Request() req: any, @Body() dto: NotifyPurchaseDto) { @@ -378,6 +386,8 @@ export class MarketplaceController { return this.purchaseTracker.notifyPurchase(dto, investorWallet, dto.type); } + @ApiOperation({ summary: 'Get investor portfolio', description: 'Returns the aggregated portfolio for the authenticated investor.' }) + @ApiResponse({ status: 200, description: 'Portfolio data' }) @Get('portfolio') @UseGuards(JwtAuthGuard) async getPortfolio(@Request() req: any) { @@ -385,6 +395,8 @@ export class MarketplaceController { return this.purchaseTracker.getInvestorPortfolio(investorWallet); } + @ApiOperation({ summary: 'Get purchase history', description: 'Returns history of confirmed purchases for the authenticated investor.' }) + @ApiResponse({ status: 200, description: 'Purchase history' }) @Get('purchases/history') @UseGuards(JwtAuthGuard) async getPurchaseHistory(@Request() req: any, @Query('limit') limit?: string) { @@ -393,6 +405,9 @@ export class MarketplaceController { return this.purchaseTracker.getPurchaseHistory(investorWallet, limitNum); } + @ApiOperation({ summary: 'Notify bid', description: 'Records an auction bid after it has been executed on-chain.' }) + @ApiBody({ type: NotifyBidDto }) + @ApiResponse({ status: 201, description: 'Bid recorded' }) @Post('bids/notify') @UseGuards(JwtAuthGuard) async notifyBid(@Request() req: any, @Body() dto: NotifyBidDto) { @@ -400,6 +415,8 @@ export class MarketplaceController { return this.bidTracker.notifyBid(dto, investorWallet); } + @ApiOperation({ summary: 'Get my bids', description: 'Returns all auction bids for the authenticated investor.' }) + @ApiResponse({ status: 200, description: 'Bids history' }) @Get('bids/my-bids') @UseGuards(JwtAuthGuard) async getMyBids(@Request() req: any, @Query('assetId') assetId?: string) { @@ -407,12 +424,17 @@ export class MarketplaceController { return this.bidTracker.getInvestorBids(investorWallet, assetId); } + @ApiOperation({ summary: 'Get auction bids', description: 'Returns all bids for a specific auction (admin/public view).' }) + @ApiResponse({ status: 200, description: 'Auction bids' }) @Get('auctions/:assetId/bids') @UseGuards(JwtAuthGuard) async getAuctionBids(@Param('assetId') assetId: string) { return this.bidTracker.getAuctionBids(assetId); } + @ApiOperation({ summary: 'Notify settlement', description: 'Records an auction settlement after it has been executed on-chain.' }) + @ApiBody({ type: NotifySettlementDto }) + @ApiResponse({ status: 201, description: 'Settlement recorded' }) @Post('bids/settle-notify') @UseGuards(JwtAuthGuard) async notifySettlement(@Request() req: any, @Body() dto: NotifySettlementDto) { @@ -420,6 +442,9 @@ export class MarketplaceController { return this.bidTracker.notifySettlement(dto, investorWallet); } + @ApiOperation({ summary: 'Notify yield claim', description: 'Records a yield claim transaction after it has been executed on-chain.' }) + @ApiBody({ type: NotifyYieldClaimDto }) + @ApiResponse({ status: 201, description: 'Claim recorded' }) @Post('yield-claim/notify') @UseGuards(JwtAuthGuard) async notifyYieldClaim(@Request() req: any, @Body() dto: NotifyYieldClaimDto) { diff --git a/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts b/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts index 56968040..c4978990 100644 --- a/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts +++ b/packages/backend/src/modules/marketplace/services/purchase-tracker.service.ts @@ -258,8 +258,21 @@ export class PurchaseTrackerService { // Get settlement info for metadata const settlement = await this.settlementModel.findOne({ assetId: dto.assetId, network }).sort({ createdAt: -1 }); - const tokensBurnedCanonical = toCanonical(dto.tokensBurned, 18); - const usdcReceivedCanonical = toCanonical(dto.usdcReceived, 6); + this.logger.log('Validating yield claim transaction on-chain...'); + // Validate transaction on-chain + const adapter = this.chainManagerRegistry.getManager(network).getBlockchainAdapter(); + const claimData = await adapter.verifyYieldClaimTransaction( + dto.txHash, + asset.token?.address || '', + investorWallet, + ); + + if (!claimData) { + throw new BadRequestException('Invalid yield claim transaction'); + } + + const tokensBurnedCanonical = claimData.tokensBurned; + const usdcReceivedCanonical = claimData.usdcReceived; // Save yield claim record const yieldClaim = await this.yieldClaimModel.create({ @@ -270,10 +283,10 @@ export class PurchaseTrackerService { tokensBurned: tokensBurnedCanonical.value, usdcReceived: usdcReceivedCanonical.value, // Companion fields for precision - rawPrecise: (tokensBurnedCanonical as any).rawPrecise || (usdcReceivedCanonical as any).rawPrecise, + rawPrecise: tokensBurnedCanonical.rawPrecise || usdcReceivedCanonical.rawPrecise, rawTokensBurned: tokensBurnedCanonical.rawPrice, rawUsdcReceived: usdcReceivedCanonical.rawPrice, - blockNumber: dto.blockNumber ? parseInt(dto.blockNumber) : undefined, + blockNumber: claimData.blockNumber, status: 'CONFIRMED', network, metadata: { diff --git a/packages/backend/src/modules/yield/controllers/yield.controller.ts b/packages/backend/src/modules/yield/controllers/yield.controller.ts index 4a695ee2..535d6a94 100644 --- a/packages/backend/src/modules/yield/controllers/yield.controller.ts +++ b/packages/backend/src/modules/yield/controllers/yield.controller.ts @@ -1,4 +1,5 @@ import { Controller, Post, Get, UseGuards, Request, Body, Param, Query } from '@nestjs/common'; +import { ApiTags, ApiOperation, ApiResponse, ApiHeader, ApiBody } from '@nestjs/swagger'; import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard'; import { UserYieldClaimService } from '../services/user-yield-claim.service'; import { NotifyYieldClaimDto } from '../dto/notify-yield-claim.dto'; @@ -9,7 +10,9 @@ import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { Asset, AssetDocument } from '../../../database/schemas/asset.schema'; import { Logger } from '@nestjs/common'; +import { NetworkRegistryService } from '../../blockchain/services/network-registry.service'; +@ApiTags('Yield') @Controller('yield') export class YieldController { private readonly logger = new Logger(YieldController.name); @@ -17,6 +20,7 @@ export class YieldController { constructor( private userYieldClaimService: UserYieldClaimService, private notificationService: NotificationService, + private networkRegistryService: NetworkRegistryService, @InjectModel(Asset.name) private assetModel: Model, ) {} @@ -24,6 +28,10 @@ export class YieldController { * Notify backend when investor claims yield (burns tokens for USDC) * Called by frontend after successful claimYield() transaction */ + @ApiOperation({ summary: 'Notify yield claim', description: 'Records a yield claim transaction after it has been executed on-chain.' }) + @ApiHeader({ name: 'X-Network', description: 'Network context', enum: ['mantle', 'stellar', 'arbitrum', 'creditcoin'] }) + @ApiBody({ type: NotifyYieldClaimDto }) + @ApiResponse({ status: 201, description: 'Claim recorded' }) @Post('claims/notify') @UseGuards(JwtAuthGuard) async notifyYieldClaim(@Request() req: any, @Body() dto: NotifyYieldClaimDto) { @@ -109,6 +117,9 @@ export class YieldController { /** * Get user's yield claim history */ + @ApiOperation({ summary: 'Get my claims', description: 'Returns all yield claims for the authenticated investor.' }) + @ApiHeader({ name: 'X-Network', description: 'Network context', enum: ['mantle', 'stellar', 'arbitrum', 'creditcoin'] }) + @ApiResponse({ status: 200, description: 'Claims history' }) @Get('claims/my-claims') @UseGuards(JwtAuthGuard) async getMyClaims(@Request() req: any) { @@ -145,6 +156,9 @@ export class YieldController { /** * Get yield claims for a specific asset (for admin/originator) */ + @ApiOperation({ summary: 'Get asset claims', description: 'Returns all yield claims for a specific asset.' }) + @ApiHeader({ name: 'X-Network', description: 'Network context', enum: ['mantle', 'stellar', 'arbitrum', 'creditcoin'] }) + @ApiResponse({ status: 200, description: 'Asset claims history' }) @Get('claims/asset/:assetId') @UseGuards(JwtAuthGuard) async getAssetClaims(@Param('assetId') assetId: string) { @@ -185,6 +199,9 @@ export class YieldController { /** * Get recent yield claims (admin view) */ + @ApiOperation({ summary: 'Get recent claims', description: 'Returns recently recorded yield claims across all assets.' }) + @ApiHeader({ name: 'X-Network', description: 'Network context', enum: ['mantle', 'stellar', 'arbitrum', 'creditcoin'] }) + @ApiResponse({ status: 200, description: 'Recent claims' }) @Get('claims/recent') @UseGuards(JwtAuthGuard) async getRecentClaims(@Query('limit') limit?: string) { @@ -214,4 +231,40 @@ export class YieldController { }; } } + + /** + * Get exact on-chain claimable yield amount + */ + @ApiOperation({ summary: 'Get claimable yield', description: 'Queries the on-chain YieldVault for exact claimable USDC amount.' }) + @ApiHeader({ name: 'X-Network', description: 'Network context', enum: ['mantle', 'stellar', 'arbitrum', 'creditcoin'] }) + @ApiResponse({ status: 200, description: 'Claimable amount' }) + @Get('claimable') + @UseGuards(JwtAuthGuard) + async getClaimableYield( + @Request() req: any, + @Query('tokenAddress') tokenAddress?: string, + ) { + const investorWallet = req.user.walletAddress; + + try { + const claimable = await this.networkRegistryService.getInvestorClaimableYield( + investorWallet, + tokenAddress, + ); + + return { + success: true, + investorWallet, + tokenAddress: tokenAddress || 'ALL', + claimableUSDC: claimable, + claimableFormatted: `${claimable} USDC`, + }; + } catch (error: any) { + this.logger.error(`Failed to get claimable yield: ${error.message}`); + return { + success: false, + error: error.message, + }; + } + } }