diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1b3e1f5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,30 @@ +name: EpochSend CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + frontend-build: + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./frontend + + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: './frontend/package-lock.json' + + - name: Install dependencies + run: npm ci --legacy-peer-deps + + - name: Build Next.js + run: npm run build diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3d98995 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +node_modules/ +.next/ +out/ +dist/ +build/ +.env +.env.local +.env.*.local +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.DS_Store +*.pem \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c15b944 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,31 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We pledge to make participation in the **EpochSend** project a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. + +We are committed to building an **intent-based payment protocol** that allows users to define conditions under which funds are automatically executed on-chain. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +- Using welcoming and inclusive language. +- Being respectful of differing viewpoints and experiences. +- Gracefully accepting constructive criticism. +- Focusing on what is best for the community. +- Showing empathy towards other community members. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. All complaints will be reviewed and investigated. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1. + +[homepage]: https://www.contributor-covenant.org + +--- + +_EpochSend β€” Intent-Based Payment Protocol_ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d5c434a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,53 @@ +# Contributing to EpochSend Frontend + +Thank you for your interest in building the UI for the future of intent-based payments on Stellar! This guide will help you contribute effectively. + +## πŸ›  Tech Stack + +- **Frontend:** Next.js, TypeScript, Tailwind CSS, Freighter Wallet +- **Network:** Stellar (Testnet) + +## πŸ“ Commit Guidelines + +We follow a **Modular Commit** philosophy to ensure history is readable and revertable. + +**The Golden Rule:** + +> "Commit after every meaningful change, not every line." + +- **Meaningful Change:** Completing a function, finishing a fix, adding a feature block, creating a file, or making a significant modification. +- **Avoid:** Micro-commits for single-line edits unless they are standalone fixes. +- **Frequency:** Commit often, but only when you finish a logical piece of work. + +### Example Commit Messages + +- `feat(ui): add payment creation flow dashboard` +- `fix(hooks): correct wallet auto-connect logic` +- `docs: update deployment guide` +- `chore: update dependencies` + +## πŸ“‹ Issue Tracking + +1. Pick an issue from the `ISSUES.md` file. +2. When you start, comment on the issue or mark it as "In Progress". +3. **When Completed:** You MUST update the issue file with: + - Check the box `[x]` + - Append your GitHub username and Date/Time. + - _Example:_ `- [x] Implement payment creation (@bbkenny - 2024-04-13 14:00)` + +## πŸ§ͺ Development Workflow + +1. **Clone**: Clone the repo locally. +2. **Branch**: Create a feature branch (`feat/my-feature`). +3. **Develop**: Write code following the Style Guide (`STYLE.md`). +4. **Test**: Run `npm run test` (if available). +5. **Build**: Run `npm run build` before committing to ensure there are no TypeScript errors. +6. **Commit**: Follow the commit guidelines above. + +## Getting Help + +Read the **Integration Guides** located in the `docs/` directory for detailed setup instructions. + +--- + +_Help us transform payments from manual to intent-based on Stellar!_ diff --git a/ISSUES.md b/ISSUES.md deleted file mode 100644 index 441419b..0000000 --- a/ISSUES.md +++ /dev/null @@ -1,37 +0,0 @@ -# ForgeX Issues & Roadmap - -## πŸš€ Chainlink Integration - -### Issue #1: Price Feeds Integration -**Status:** βœ… COMPLETED -**Description:** Integrate Chainlink Price Feeds to get real-time USD valuation of vault assets. -- **Tasks:** - - [x] Add `AggregatorV3Interface`. - - [x] Update `UserVault` to store price feed address. - - [x] Implement `getAssetPrice()` function. - - [x] Implement `getTotalValueUSD()` function. - -### Issue #2: Automation Integration -**Status:** βœ… COMPLETED -**Description:** Use Chainlink Automation for rebalancing. -- **Tasks:** - - [x] Implement `checkUpkeep` and `performUpkeep`. - - [x] Register with Chainlink Automation. - -### Issue #4: Unified Tri-Tone Brand Identity -**Status:** βœ… COMPLETED -**Description:** Implement a unified color scheme using Magenta (#FF007A), Cyan-Blue (#0EA7CB), and Electric Cyan (#00F0FF). -- **Tasks:** - - [x] Configure global CSS variables (`#FF007A`, `#0EA7CB`, `#00F0FF`). - - [x] Redesign hero section with tri-tone gradients and circle collage. - - [x] Update navbar and footer iconography for color consistency. - -## 🏁 Repository Health - -### Issue #5: Contributor Meta-Data Audit & Purge -**Status:** βœ… COMPLETED -**Description:** Scrub history of legacy associations and ensure 100% account attribution accuracy. -- **Tasks:** - - [x] Rewrite git history for all branches. - - [x] Purge ghost PR objects from GitHub UI. - - [x] Verify single contributor count. diff --git a/MAINTAINERS.md b/MAINTAINERS.md new file mode 100644 index 0000000..1233f59 --- /dev/null +++ b/MAINTAINERS.md @@ -0,0 +1,17 @@ +# Maintainers - EpochSend + +The current maintainers of this project are: + +- **@bbkenny** (Project Lead) - jouleself@gmail.com + +## Roles & Responsibilities + +Maintainers are responsible for: + +- Reviewing code +- Managing roadmap strategy +- Enforcing code quality and conduct + +--- + +_EpochSend β€” Intent-Based Payment Protocol on Stellar_ diff --git a/README.md b/README.md index 06d2dbd..87b698c 100644 --- a/README.md +++ b/README.md @@ -1,305 +1,335 @@ -# ForgeX +# EpochSend β€” Frontend Client + +

+ EpochSend Banner +

+ +

+ The programmable financial layer for Stellar β€” turning intent into automated, trustless execution. +

+ +

+ + Live App + + Stellar Soroban + Next.js + MIT License + CI Status +

-A decentralized vault platform enabling users to create multiple ERC-4626 compliant vaults for automated yield generation on Base Mainnet. - -## Scenario - -A. On-chain Dollar Savings for Africans - -Users deposit USDC/USDT - -Receive a deposit token (dToken) - -Earn yield from low-risk DeFi - -Fully transparent reserves on-chain +--- -πŸ‘‰ Think: PiggyVest + Risevest + USDC, but on-chain +## 🧠 What Is EpochSend? +EpochSend is an **intent-based payment protocol** on the Stellar Network. +> *"Don't just send money. Define what money does."* -## Overview +Instead of transferring funds immediately, users define **conditions** β€” the money only moves when those conditions are provably met. Built on Soroban smart contracts, EpochSend converts payment intent into enforceable, automated, on-chain execution with zero third-party custody. -ForgeX is a comprehensive DeFi platform that allows users to: +**The core insight:** Every real-world payment has a condition attached to it β€” a delivery, a milestone, a date, an approval. Today, humans enforce those conditions manually and trust each other to be honest. EpochSend moves that enforcement on-chain. -- **Create Multiple Vaults**: Each user can create multiple personal ERC-4626 compliant vaults -- **Automated Yield Generation**: Deploy assets to DeFi protocols (Aave, Compound, Uniswap) automatically -- **ERC-4626 Standard**: Industry-standard tokenized vault interface for maximum interoperability -- **Share-Based Ownership**: Transferable ERC-20 vault shares representing ownership -- **Protocol Allocations**: Configure how assets are distributed across different DeFi protocols +--- -## Project Structure +## 🎯 The Problem -``` -ForgeX/ -β”œβ”€β”€ smartcontract/ # Solidity smart contracts -β”‚ β”œβ”€β”€ contracts/ # Contract source files -β”‚ β”œβ”€β”€ test/ # Contract tests -β”‚ β”œβ”€β”€ scripts/ # Deployment scripts -β”‚ └── README.md # Smart contract documentation -β”‚ -└── frontend/ # Next.js frontend application - β”œβ”€β”€ app/ # Next.js app router pages - β”œβ”€β”€ components/ # React components - β”œβ”€β”€ config/ # Wagmi and wallet configuration - └── README.md # Frontend documentation -``` +Modern payments are fundamentally broken for conditional transactions: -## Tech Stack +| Problem | Reality | +|---|---| +| **Trust-based** | Paying upfront means trusting the seller. Delivering first means trusting the buyer. | +| **Manual** | Recurring or milestone payments require calendar reminders and manual intervention. | +| **Irreversible** | Once money is sent, it's gone β€” no programmable fallback if conditions aren't met. | +| **Expensive escrow** | Third-party escrow services charge massive fees for basic dispute resolution. | -### Smart Contracts -- **Language:** Solidity ^0.8.20 -- **Framework:** Hardhat -- **Network:** Base Mainnet -- **Standards:** ERC-4626, ERC-20 +--- -### Frontend -- **Framework:** Next.js 14 (App Router) -- **Language:** TypeScript -- **Styling:** Tailwind CSS (Tri-Tone Design System) -- **Web3:** wagmi, viem, Reown AppKit +## πŸ’‘ The EpochSend Solution -## Design System +Users define a **Payment Intent**: +- **Recipient** β€” destination Stellar/Soroban address +- **Asset** β€” USDC, XLM, or any SAC token +- **Amount** β€” how much to lock +- **Condition** β€” Time-based unlock, Manual arbiter approval, or Off-chain Oracle webhook -ForgeX utilizes a vibrant, high-contrast tri-tone color scheme: +The protocol then: +1. **Locks** the funds safely in a Soroban escrow contract (non-custodial) +2. **Monitors** the defined condition passively or actively +3. **Executes** the payment automatically when the condition is met, **OR** +4. **Refunds** the sender automatically if a dispute timeout is reached -- **Magenta (Primary)**: `#FF007A` β€” Main brand identity and primary action elements. -- **Cyan-Blue (Secondary)**: `#0EA7CB` β€” AION Legacy color used for secondary navigation and branding. -- **Electric Cyan (Accent)**: `#00F0FF` β€” Neon highlights, gradients, and interactive glow effects. +No middlemen. No manual intervention. No trust required. -## Quick Start +--- -### Smart Contracts +## πŸ—οΈ Architecture -```bash -cd smartcontract -npm install -npx hardhat compile -npx hardhat test +``` +User + β”‚ + β”œβ”€β”€β”€ Connect Freighter Wallet + β”‚ + β”œβ”€β”€β”€ Create Payment Intent + β”‚ β”‚ + β”‚ β–Ό + β”‚ EpochSend Frontend (Next.js) + β”‚ β”‚ + β”‚ β”‚ invoke create_intent() + β”‚ β–Ό + β”‚ Soroban Escrow Contract + β”‚ β”‚ + β”‚ β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β” + β”‚ β”‚ Conditions β”‚ + β”‚ β”‚ ───────── β”‚ + β”‚ β”‚ Time-Lock β”‚ + β”‚ β”‚ Arbiter β”‚ + β”‚ β”‚ Oracle β”‚ + β”‚ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ + β”‚ β”‚ + β”‚ β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β” + β”‚ β”‚ β”‚ + β”‚ β–Ό β–Ό + β”‚ Execute Refund + β”‚ (β†’ Recipient) (β†’ Sender) ``` -### Frontend +--- -```bash -cd frontend -npm install -npm run dev -``` +## 🧩 Core Features + +### Phase 1 β€” MVP (Current) +| Feature | Status | +|---|---| +| Freighter Wallet Integration | βœ… Implemented | +| Time-Locked Escrow (Unix timestamp unlock) | πŸ”¨ In Progress | +| Manual Arbiter Approval | πŸ”¨ In Progress | +| Create Intent Form (UI) | βœ… Built | +| Active Intents Dashboard | πŸ”¨ In Progress | +| Automated Refunds | πŸ”¨ In Progress | +| Onboarding Modal | βœ… Implemented | + +### Phase 2 β€” Automation & Oracles +| Feature | Status | +|---|---| +| Backend Oracle Node (Express + Stellar SDK) | πŸ”œ Planned | +| API Webhook triggers (FedEx, Zapier, etc.) | πŸ”œ Planned | +| Email / SMS notifications on escrow events | πŸ”œ Planned | +| Recurring subscription payment scheduling | πŸ”œ Planned | + +### Phase 3 β€” Developer Ecosystem +| Feature | Status | +|---|---| +| EpochSend SDK for third-party dApp integration | πŸ”œ Planned | +| Multi-signature arbiter approvals | πŸ”œ Planned | +| Stellar fiat off-ramp integration (MoneyGram) | πŸ”œ Planned | +| Public developer documentation | πŸ”œ Planned | -Open [http://localhost:3000](http://localhost:3000) to view the app. +--- -## Features +## πŸ› οΈ Tech Stack + +| Category | Technology | Version | +|---|---|---| +| **Framework** | Next.js (App Router) | 16.1.1 | +| **Language** | TypeScript | ^5.0 | +| **UI Library** | React | 19.2.3 | +| **Styling** | Tailwind CSS | v4 | +| **Animations** | Framer Motion | ^12 | +| **Icons** | Lucide React | ^0.300 | +| **Wallet** | Freighter API (`@stellar/freighter-api`) | ^2.0 | +| **Blockchain** | Stellar SDK (`@stellar/stellar-sdk`) | ^12.0 | +| **Network** | Stellar Testnet / Soroban RPC | β€” | +| **Deployment** | Vercel | β€” | -### VaultFactory Contract -- Multi-vault creation for registered users -- User registration system with username and bio -- Protocol address management (Aave, Compound, Uniswap, WETH) -- Admin system for protocol configuration -- Vault tracking and ownership management +--- -### UserVault Contract (ERC-4626) -- ERC-4626 standard compliance for tokenized vaults -- ERC-20 share tokens representing vault ownership -- Deposit/Withdraw/Mint/Redeem operations -- Protocol integration for yield generation -- Allocation management across DeFi protocols -- Pause/unpause functionality +## πŸ“ Project Structure -### Frontend Features -- Wallet connection (MetaMask, WalletConnect) -- Multi-vault dashboard -- Vault creation interface -- Deposit and withdrawal operations -- Protocol allocation management -- Share transfer functionality -- Transaction history +``` +EpochSend-frontend/ +β”œβ”€β”€ docs/ +β”‚ β”œβ”€β”€ PRD.md # Full Product Requirements Document +β”‚ β”œβ”€β”€ ISSUES.md # Frontend feature roadmap & issue tracker +β”‚ └── FRONTEND_GUIDE.md # Stellar/Soroban integration technical guide +β”‚ +β”œβ”€β”€ frontend/ # Next.js app root +β”‚ β”œβ”€β”€ app/ +β”‚ β”‚ β”œβ”€β”€ layout.tsx # Root layout β€” metadata, global providers +β”‚ β”‚ β”œβ”€β”€ page.tsx # Home / main application view +β”‚ β”‚ β”œβ”€β”€ globals.css # Design system: tokens, utilities, themes +β”‚ β”‚ β”œβ”€β”€ dashboard/ # Active intents dashboard (in progress) +β”‚ β”‚ └── vaults/ # Future: asset management (planned) +β”‚ β”‚ +β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”œβ”€β”€ Navbar.tsx # Top navigation bar with wallet button +β”‚ β”‚ β”œβ”€β”€ WalletConnectButton.tsx # Freighter wallet connect/disconnect +β”‚ β”‚ β”œβ”€β”€ OnboardingModal.tsx # 4-slide first-visit onboarding carousel +β”‚ β”‚ β”œβ”€β”€ HeroIllustration.tsx # Animated landing page banner +β”‚ β”‚ β”œβ”€β”€ LaunchButton.tsx # Wallet-gated app entry button +β”‚ β”‚ β”œβ”€β”€ SecurityNotice.tsx # Dismissible security/beta warning +β”‚ β”‚ └── Toast.tsx # Notification system +β”‚ β”‚ +β”‚ β”œβ”€β”€ lib/ +β”‚ β”‚ β”œβ”€β”€ hooks.ts # Custom hooks: useWallet, useCreateEscrow, etc. +β”‚ β”‚ └── constants.ts # Network config, contract IDs, enums +β”‚ β”‚ +β”‚ β”œβ”€β”€ types/ +β”‚ β”‚ └── global.d.ts # Global TypeScript declarations +β”‚ β”‚ +β”‚ └── public/ +β”‚ β”œβ”€β”€ epochsend-banner.png # Hero illustration asset +β”‚ β”œβ”€β”€ epochsend-logo.png # App logo +β”‚ └── epochsend.svg # Favicon / SVG logo +β”‚ +β”œβ”€β”€ .github/ +β”‚ └── workflows/ci.yml # GitHub Actions CI (build + lint) +β”‚ +β”œβ”€β”€ README.md # This file +β”œβ”€β”€ CONTRIBUTING.md # Contribution guidelines +β”œβ”€β”€ CODE_OF_CONDUCT.md # Community standards +β”œβ”€β”€ MAINTAINERS.md # Maintainer roster +└── STYLE.md # Code style guide +``` -## Network Configuration +--- -### Base Mainnet -- **Chain ID:** 8453 -- **RPC URL:** `https://mainnet.base.org` -- **Explorer:** [BaseScan](https://basescan.org/) +## πŸš€ Getting Started -## Development +### Prerequisites -### Smart Contracts +- **Node.js** v20+ ([download](https://nodejs.org/)) +- **npm** v9+ +- **Freighter Wallet** browser extension ([install](https://www.freighter.app/)) +- A Stellar **Testnet** account funded via [Friendbot](https://laboratory.stellar.org/#account-creator?network=test) -See [smartcontract/README.md](./smartcontract/README.md) for detailed smart contract documentation. +### 1. Clone & Install -**Key Commands:** ```bash -npm run compile # Compile contracts -npm run test # Run tests -npm run deploy # Deploy to Base Mainnet +git clone https://github.com/StacksTrench/EpochSend-frontend.git +cd EpochSend-frontend/frontend +npm install --legacy-peer-deps ``` -### Frontend +### 2. Configure Environment -See [frontend/README.md](./frontend/README.md) for detailed frontend documentation. - -**Key Commands:** ```bash -npm run dev # Start development server -npm run build # Build for production -npm run lint # Run linter +cp .env.example .env.local ``` -## Contributing - -We welcome contributions! To get started: - -1. Pick an issue from the respective `ISSUES.md` files: - - [Smart Contract Issues](./smartcontract/ISSUES.md) - - [Frontend Issues](./frontend/ISSUES.md) -2. Create a branch: `issue/-short-description` -3. Implement your changes following the acceptance criteria -4. Write tests for your changes -5. Submit a PR with the issue number in the title/description +Edit `.env.local`: -## Environment Variables - -### Smart Contracts (.env) ```env -PRIVATE_KEY=your_private_key -BASE_RPC_URL=https://mainnet.base.org -ETHERSCAN_API_KEY=your_etherscan_api_key -``` +# Stellar Network +NEXT_PUBLIC_STELLAR_NETWORK=TESTNET +NEXT_PUBLIC_SOROBAN_RPC_URL=https://soroban-testnet.stellar.org +NEXT_PUBLIC_NETWORK_PASSPHRASE="Test SDF Network ; September 2015" -### Frontend (.env.local) -```env -NEXT_PUBLIC_REOWN_PROJECT_ID=your_project_id -NEXT_PUBLIC_VAULT_FACTORY_ADDRESS=0x... -NEXT_PUBLIC_NETWORK=base +# EpochSend Soroban Contract +NEXT_PUBLIC_ESCROW_CONTRACT_ID=C... # Deploy and paste address here ``` -**Note:** Never commit your private keys or `.env` files to version control! - -## Security - -- All contracts follow best practices -- Access control implemented for admin functions -- Reentrancy guards on critical functions -- Input validation on all user inputs -- Comprehensive test coverage - -**Note:** Contracts should be audited before mainnet deployment. +### 3. Run Development Server -## Future Enhancements +```bash +npm run dev +``` -### Chainlink Integration Roadmap +Open [http://localhost:3000](http://localhost:3000) in your browser. -ForgeX is designed to integrate with Chainlink services for enhanced functionality and automation. The following enhancements are planned for future releases: +### 4. Connect Your Wallet -#### Phase 1: Price Feeds (In Progress) -**Status:** Planned for next release +1. Click **"Connect Wallet"** in the top-right corner +2. Freighter will prompt for permission β€” approve it +3. Make sure Freighter is set to **Testnet** mode +4. Fund your testnet wallet via [Stellar Friendbot](https://laboratory.stellar.org/#account-creator?network=test) if needed -- **Chainlink Price Feeds Integration** - - Real-time USD valuation of vault assets - - Accurate share pricing in USD terms - - Multi-asset vault support with proper pricing - - Portfolio performance tracking +--- -**Implementation:** -- Add Chainlink Price Feed to `UserVault.sol` -- Implement `getTotalValueUSD()` and `getSharePriceUSD()` functions -- Display USD values in frontend dashboard -- Enable better portfolio tracking and analytics +## πŸ”§ Available Scripts -**Files to modify:** -- `contracts/UserVault.sol` - Add price feed integration -- `contracts/VaultFactory.sol` - Store price feed addresses -- Frontend components - Display USD values +```bash +npm run dev # Start development server (hot reload) +npm run build # Compile production bundle +npm run start # Run production server locally +npm run lint # Run ESLint code checks +``` --- -#### Phase 2: Automation (High Impact) -**Status:** Future consideration +## 🌐 Network Configuration -- **Chainlink Automation (formerly Keepers)** - - Automated vault rebalancing - - Periodic yield harvesting - - Protocol switching based on yield - - Gas-optimized execution +EpochSend currently targets **Stellar Testnet** for development. To deploy on mainnet: -**Implementation:** -- Implement `checkUpkeep()` and `performUpkeep()` in `UserVault.sol` -- Set up rebalancing logic based on protocol yields -- Register vaults with Chainlink Automation network -- Automated yield optimization without manual intervention +1. Update `NEXT_PUBLIC_STELLAR_NETWORK` to `MAINNET` +2. Update `NEXT_PUBLIC_SOROBAN_RPC_URL` to `https://mainnet.sorobanrpc.com` +3. Update `NEXT_PUBLIC_NETWORK_PASSPHRASE` to `Public Global Stellar Network ; September 2015` +4. Update `NEXT_PUBLIC_ESCROW_CONTRACT_ID` to your mainnet contract address -**Files to modify:** -- `contracts/UserVault.sol` - Add automation interface and rebalancing logic -- `contracts/VaultFactory.sol` - Automation registry management +--- + +## πŸ” Security Model -**Benefits:** -- Hands-free vault management -- Optimal yield allocation -- Reduced gas costs through batching -- 24/7 monitoring and execution +| Property | Implementation | +|---|---| +| **Non-custodial** | EpochSend developers have zero access to locked funds | +| **Auth enforcement** | Only the defined trigger authority can execute or refund a contract | +| **Reentrancy protection** | Soroban contract follows Checks-Effects-Interactions pattern | +| **Timeout safety** | Funds can never be permanently frozen β€” sender can always retrieve after `dispute_timeout` | +| **Simulation-first** | All transactions are simulated before prompting user to sign | --- -#### Phase 3: VRF (Optional - Gamification) -**Status:** Future consideration +## πŸ“Š Success Metrics -- **Chainlink VRF (Verifiable Random Function)** - - Lottery/reward system for vault holders - - Random protocol selection for diversification - - Fair incentive distribution mechanisms - - Gamification features +| Metric | Description | +|---|---| +| **Total Value Locked (TVL)** | USDC/XLM actively held in escrow across all intents | +| **Execution Rate** | Percentage of escrows successfully executed vs refunded | +| **Active Unique Wallets** | Number of distinct wallet connections per month | +| **Transaction Volume** | Total dollar value processed through the protocol | +| **Oracle Uptime** | Backend oracle availability for webhook-triggered escrows | -**Implementation:** -- Add lottery/reward system to `VaultFactory.sol` -- Implement VRF for provably fair random selection -- Create incentive mechanisms for long-term holders -- Monthly/quarterly reward distributions +--- -**Files to modify:** -- `contracts/VaultFactory.sol` - Add VRF integration and lottery logic -- Frontend - Lottery participation interface +## πŸ“š Documentation -**Use Cases:** -- Monthly lottery for active vault holders -- Random bonus yield distribution -- Fair protocol allocation -- Community engagement rewards +| Document | Description | +|---|---| +| [πŸ“„ PRD](./docs/PRD.md) | Full Product Requirements Document β€” vision, architecture, roadmap | +| [πŸ—‚οΈ Issues & Roadmap](./docs/ISSUES.md) | Granular frontend feature tracker with module breakdown | +| [🌐 Frontend Integration Guide](./docs/FRONTEND_GUIDE.md) | Technical guide: Freighter, Soroban SDK, XDR encoding | +| [🀝 Contributing](./CONTRIBUTING.md) | How to contribute to EpochSend | +| [🎨 Style Guide](./STYLE.md) | Code style, naming conventions, and formatting rules | +| [πŸ“œ Code of Conduct](./CODE_OF_CONDUCT.md) | Community standards and expectations | --- -#### Phase 4: Uniswap v4 Hook Integration (UHI Project) -**Status:** In Progress (UHI8 Hookathon Start: March 2, 2026) +## 🀝 Contributing -- **Forge-Native Yield Hooks** - - Enable ForgeX ERC-4626 vault shares to serve as active liquidity in Uniswap v4 pools. - - Implement **Yield-Aware Hooks** that distribute vault-accrued interest to LPs. - - Maximize capital efficiency for African savings users by layering trading fees on top of DeFi yield. +Contributions are welcome and actively encouraged. Please read [CONTRIBUTING.md](./CONTRIBUTING.md) before opening a PR. -**Implementation:** -- Integrate `IHooks` interface with `UserVault.sol` logic. -- Build specialized liquidity pools for vault-wrapped assets. -- Deploy UHI capstone project on Base Mainnet. +**Quick workflow:** +1. Fork the repository +2. Create a feature branch: `git checkout -b feat/your-feature-name` +3. Make your changes and write tests where applicable +4. Push and open a Pull Request against `main` +5. A maintainer will review and merge --- -### Additional Planned Features +## πŸ‘₯ Maintainers -- **Multi-signature Admin Controls** - Enhanced security for protocol management -- **Governance System** - Community-driven protocol decisions -- **Advanced Analytics** - Detailed performance metrics and historical data -- **Mobile App** - Native mobile experience for iOS and Android -- **Subgraph Integration** - Faster data queries and historical tracking +See [MAINTAINERS.md](./MAINTAINERS.md) for the full list of project maintainers. -## License - -MIT License - see LICENSE file for details. +--- -## Links +## πŸ“„ License -- **Repository:** [https://github.com/thebabalola/forge](https://github.com/thebabalola/forge) -- **BaseScan Explorer:** [https://basescan.org/](https://basescan.org/) -- **Documentation:** See individual README files in `smartcontract/` and `frontend/` directories +[MIT](./LICENSE) β€” free to use, fork, and build on top of. -## Support +--- -For questions or issues, please open an issue on GitHub or refer to the respective ISSUES.md files for planned features and known issues. +

+ Built with ⚑ on Stellar · Deployed on Vercel +

diff --git a/STYLE.md b/STYLE.md new file mode 100644 index 0000000..41d90fb --- /dev/null +++ b/STYLE.md @@ -0,0 +1,33 @@ +# Code Style Guide - EpochSend Frontend + +## JavaScript / TypeScript + +- **Formatting:** Use Prettier with standard config. +- **Linting:** ESLint with recommended rules. +- **Components:** Functional components with typed props. +- **State:** Use React Hooks (`useState`, `useEffect`, `useContext`). +- **Styling:** Tailwind CSS utility classes. +- **Async:** Use async/await, handle errors properly with try/catch blocks. +- **Types:** Always define strict interfaces or types for data structures and component props. + +## Project Conventions + +### File Naming +- Components: `PascalCase.tsx` +- Hooks: `camelCase.ts` +- Utils: `camelCase.ts` +- Types: `PascalCase.ts` + +### Git Commits +- Follow modular commit philosophy. +- Commit after meaningful changes. +- Run build before committing. + +## Integrity Checks + +- **Frontend:** `npm run build` should successfully compile before pushing any code. +- **Typecheck:** `npm run typecheck` if available. + +--- + +*Always ensure the UI is fully responsive and compiles correctly.* diff --git a/doc-sync-report.md b/doc-sync-report.md deleted file mode 100644 index ea1c7a2..0000000 --- a/doc-sync-report.md +++ /dev/null @@ -1,26 +0,0 @@ -# πŸ“‹ Doc-Sync Report: ForgeX Protocol - -I have completed a comprehensive sync-check of the **ForgeX** documentation and codebase. Everything is perfectly aligned for our next phase. - -## πŸ” Synchronization Details - -### 1. Chainlink Integration -- **Status**: βœ… SYNCED -- **Details**: The implementation in `UserVault.sol` matches the "Issue #4.5" specifications found in `smartcontract/TODO.md`. Base Mainnet addresses for ETH/USD and USDC/USD are correctly mapped and implemented. - -### 2. ERC-4626 Compliance -- **Status**: βœ… SYNCED -- **Details**: The core vault logic is verified. The critical "1:1 initial deposit" fix (ensuring the first depositor isn't griefed) is implemented in code and documented in the root `walkthrough.md`. - -### 3. Roadmap Sync -- **Status**: βœ… SYNCED -- **Details**: The root `README.md` has been updated to include **Phase 4: Uniswap v4 Hook Integration**, aligning the project with the **UHI8 (Uniswap Hook Incubator)** strategy. - -### 4. Current State Assessment -- **Status**: **Production-Ready MVP** -- **Details**: Core vault operations (Deposit, Withdraw, Yield Strategy, Admin Management) are fully functional. Remaining pre-UHI tasks are limited to deployment automation (#15) and minor frontend performance analytics. - -## 🏁 Conclusion -The documentation is now the definitive guide for our build. The protocol is architecturally sound, verified for contributor accuracy, and ready for the **Uniswap v4 Hookathon** expansion. - -*Report updated on March 9, 2026* diff --git a/docs/FRONTEND_GUIDE.md b/docs/FRONTEND_GUIDE.md new file mode 100644 index 0000000..80f8b32 --- /dev/null +++ b/docs/FRONTEND_GUIDE.md @@ -0,0 +1,211 @@ +# Stellar Frontend Integration Guide: Building dApps on Stellar 🌐 + +**Live App:** [https://epochsend.vercel.app/](https://epochsend.vercel.app/) + +This guide covers how to build a modern frontend that interacts with Stellar smart contracts (Soroban). We will focus on using the **Freighter Wallet** and the **Stellar SDK**. + +--- + +## 1. The Stack πŸ₯ž + +To build a robust Stellar dApp, you'll typically use: +- **Frontend Framework:** Next.js (React) is standard. +- **Wallet Connection:** `@stellar/freighter-api`. +- **Blockchain Interaction:** `@stellar/stellar-sdk` (handles XDR encoding/decoding and RPC calls). +- **Network:** Testnet or Mainnet (during development). + +--- + +## 2. Installation πŸ“¦ + +Add the necessary packages to your project: +```bash +npm install @stellar/freighter-api @stellar/stellar-sdk +``` + +### 2.1 Prerequisites: Funding Your Test Wallet πŸ’Έ + +Before you can send any transaction, your Freighter wallet needs testnet XLM. + +1. Open Freighter and switch to **Testnet**. +2. Copy your wallet address. +3. Go to the [Stellar Laboratory Account Creator](https://laboratory.stellar.org/#account-creator?network=test). +4. Paste your address into the "Friendbot" section and click "Get Test Network XLM". + +--- + +## 3. Wallet Connection (Freighter) πŸ‘› + +Freighter is the "MetaMask" of Stellar. You need to check if it's installed and request access. + +### Hook: `useFreighter.ts` +```typescript +import { isConnected, requestAccess, setAllowed } from "@stellar/freighter-api"; +import { useState, useEffect } from "react"; + +export function useFreighter() { + const [address, setAddress] = useState(""); + + useEffect(() => { + async function checkConnection() { + const connected = await isConnected(); + if (connected) { + const addr = await requestAccess(); + if (addr) setAddress(addr); + } + } + checkConnection(); + }, []); + + const connect = async () => { + if (!await isConnected()) { + alert("Please install Freighter!"); + return; + } + const addr = await requestAccess(); + if (addr) { + await setAllowed(); + setAddress(addr); + } + }; + + return { address, connect }; +} +``` + +--- + +## 4. Simple Payments vs. Conditional Payments πŸ’Έ + +While standard Stellar payments happen instantly, EpochSend uses Soroban to lock funds until conditions are met. + +To create a conditional payment, we interact with the `ConditionalPayment` contract instead of using the standard `Operation.payment()`. + +--- + +## 5. Creating a Conditional Payment πŸ“¦ + +Call the Soroban contract to create a time-locked or manual-trigger escrow. + +```typescript +import { + Contract, + SorobanRpc, + xdr, + TimeoutInfinite +} from "@stellar/stellar-sdk"; +import { signTransaction } from "@stellar/freighter-api"; + +const ESCROW_CONTRACT_ID = "C..."; +const RPC_URL = "https://soroban-testnet.stellar.org"; +const NETWORK_PASSPHRASE = "Test SDF Network ; September 2015"; + +async function createConditionalPayment( + senderAddress: string, + recipientAddress: string, + amount: number, + conditionType: string, + unlockTime: number +) { + const server = new SorobanRpc.Server(RPC_URL); + const account = await server.getAccount(senderAddress); + + const contract = new Contract(ESCROW_CONTRACT_ID); + + // Encode parameters + const senderArg = xdr.ScVal.scvAddress(senderAddress); + const recipientArg = xdr.ScVal.scvAddress(recipientAddress); + const amountArg = xdr.ScVal.scvI128(amount); + const conditionArg = xdr.ScVal.scvSymbol(conditionType); + const unlockTimeArg = xdr.ScVal.scvU64(unlockTime); + + const tx = new TransactionBuilder(account, { + fee: "100", + networkPassphrase: NETWORK_PASSPHRASE + }) + .addOperation(contract.call("create_escrow", [ + senderArg, recipientArg, amountArg, conditionArg, unlockTimeArg + ])) + .setTimeout(TimeoutInfinite) + .build(); + + const sim = await server.simulateTransaction(tx); + if (!SorobanRpc.isSimulationSuccess(sim)) { + throw new Error("Simulation failed"); + } + + const preparedTx = SorobanRpc.assembleTransaction(tx, sim); + const signedXdr = await signTransaction(preparedTx.toXDR(), { + networkPassphrase: NETWORK_PASSPHRASE + }); + + const result = await server.sendTransaction( + TransactionBuilder.fromXDR(signedXdr, NETWORK_PASSPHRASE) + ); + + return result; +} +``` + +--- + +## 6. Querying Escrow Status πŸ“Š + +Read the contract to display the locked amount and trigger status. + +```typescript +async function getEscrowStatus(escrowId: string) { + const server = new SorobanRpc.Server(RPC_URL); + const contract = new Contract(ESCROW_CONTRACT_ID); + + const tx = new TransactionBuilder( + new Account("G...", "0"), + { fee: "100", networkPassphrase: NETWORK_PASSPHRASE } + ) + .addOperation(contract.call("get_status", [ + xdr.ScVal.scvAddress(escrowId) + ])) + .build(); + + const sim = await server.simulateTransaction(tx); + + if (SorobanRpc.isSimulationSuccess(sim)) { + // Parse result + const result = sim.result.retval; + return { + sender: result[0].address().toString(), + recipient: result[1].address().toString(), + amount: result[2].i128(), + condition: result[3].sym(), + unlockTime: result[4].u64() + }; + } +} +``` + +--- + +## 7. Triggering Execution / Refund ⚑ + +Once a condition is met (e.g., time has passed), anyone (or the authorized recipient) can trigger the `execute` function. + +```typescript +async function executePayment(escrowId: string) { + // Similar to the transaction builder above, + // but call contract.call("execute", [escrowIdArg]) +} +``` + +--- + +## 8. Checklist for Integration βœ… + +- [ ] **Network Config:** Ensure your app points to the right RPC (Testnet vs Mainnet). +- [ ] **Passphrase:** Use the correct Network Passphrase. +- [ ] **Simulation:** ALWAYS simulate before asking the user to sign. It catches errors early and calculates gas. +- [ ] **XDR:** Familiarize yourself with Stellar's data format (XDR). +- [ ] **Escrow Security:** Ensure the UI clearly shows the conditions to users before they lock funds. + +--- + +*Ready to build the future of intent-based payments? πŸš€* \ No newline at end of file diff --git a/docs/PRD.md b/docs/PRD.md new file mode 100644 index 0000000..76c97c5 --- /dev/null +++ b/docs/PRD.md @@ -0,0 +1,148 @@ +# πŸ“˜ Product Requirements Document (PRD) + +**Live App:** [https://epochsend.vercel.app/](https://epochsend.vercel.app/) + +## Product Name: EpochSend + +--- + +## 🧠 Overview + +**EpochSend** is an intent-based payment protocol on the **Stellar Network** that shifts the paradigm of payments from simply "sending money immediately" to "defining behavior that money follows." + +It allows users to define conditions under which funds are automatically executed on-chain. Instead of sending money manually, users define rules such as: +- β€œSend when delivery is confirmed” +- β€œPay every Friday” +- β€œRelease funds after milestone completion” + +The system converts user intent into enforceable on-chain payment logic using **Soroban smart contracts**. + +--- + +## 🎯 Problem Statement + +Payments today are fundamentally flawed for complex transactions: +1. **Manual & Inefficient**: Sending recurring or milestone-based payments requires calendar reminders and manual intervention. +2. **Trust-Based**: Buying services online requires either trusting the seller (paying upfront) or trusting the buyer (delivering upfront). +3. **Non-Conditional**: Once money is sent, it's gone. There is no programmable fallback if agreements aren't met. + +Users often rely on third-party escrow services that charge massive fees, or they fall victim to scams and disputes. + +--- + +## πŸ’‘ The EpochSend Solution + +Enable programmable payments based on strictly defined conditions using the speed and low cost of Stellar. + +Users define: +- **Recipient**: The destination address. +- **Amount**: How much USDC or XLM. +- **Trigger Condition**: Time, Manual Approval, or Oracle Data. + +The protocol: +1. Holds the funds safely in an **Escrow Smart Contract**. +2. Monitors the trigger condition passively or actively. +3. **Executes** the payment automatically when met, OR **Refunds** the sender if a dispute timeout is reached. + +--- + +## πŸ—οΈ Architecture + +```mermaid +graph TD + User((User)) -->|Create Conditional Payment| UI[EpochSend Miniapp] + UI -->|Invoke create_escrow| Contract[Soroban Escrow Contract] + + subgraph Conditions + Time[Time-based Unlock] + Manual[Manual Authorization] + Oracle[API Webhook/Oracle] + end + + Contract -->|Monitors| Conditions + + Conditions -->|Condition Met| Exec[Execute Payment] + Conditions -->|Timeout Reached| Refund[Refund Sender] + + Exec -->|Transfer| Recipient((Recipient)) + Refund -->|Transfer| User +``` + +--- + +## 🧩 Core Features (MVP to Phase 3) + +### 1. Conditional Escrow Contracts (Soroban) +- Creates discrete escrows for every transaction. +- Non-custodial: funds are locked by code, not a centralized entity. + +### 2. Supported Conditions +**Phase 1: Time & Trust** +- **Time-based**: Execute exactly at a Unix timestamp. +- **Manual Trigger**: The designated arbiter or recipient must cryptographically sign to release funds. + +**Phase 2: Oracles** +- **API Triggers**: Off-chain Node.js oracles that listen to webhooks (e.g., FedEx delivery confirmation, Zapier integration) and trigger the contract. +- **Location Verification**: GPS-based releases for local transactions. + +### 3. Automated Refunds +- Every escrow has a `dispute_timeout`. +- If the condition is never met, the sender can retrieve their funds effortlessly. + +--- + +## πŸ” User Flow + +### Flow A: Creating an Escrow +1. User connects Freighter wallet to EpochSend Miniapp. +2. Clicks **"New Payment"**. +3. Inputs Recipient Address, Amount (100 USDC), and Condition (e.g., "Manual Approval"). +4. User signs the transaction. Funds are deducted and locked in the Soroban contract. + +### Flow B: Triggering Execution +1. The Arbiter/Recipient logs into EpochSend. +2. Navigates to the **"Active Escrows"** dashboard. +3. Finds the pending payment and clicks **"Confirm Condition Met"**. +4. Signs the transaction. The smart contract releases the 100 USDC to the Recipient. + +--- + +## πŸ” Security Model + +- **No Centralized Custody**: EpochSend developers cannot access locked funds. +- **Soroban Auth Framework**: Strict checks ensure only the defined trigger authority can execute a contract. +- **Reentrancy Protection**: Follows Checks-Effects-Interactions patterns in Rust. +- **Timeout Safety Net**: Funds can never be permanently frozen; the sender can always trigger a refund after the `dispute_timeout`. + +--- + +## πŸ“Š Success Metrics + +- **Total Value Locked (TVL)**: Amount of USDC/XLM actively in escrow. +- **Execution Rate**: Percentage of escrows successfully executed vs refunded. +- **Active Users**: Number of unique wallet connections per month. +- **Transaction Volume**: Total dollar value processed by the protocol. + +--- + +## πŸš€ Roadmap + +### Phase 1: MVP (Current) +- Basic Soroban `ConditionalPayment` contract. +- Time-based and Manual conditions. +- Next.js Miniapp Dashboard (Send/Receive tabs). + +### Phase 2: Automation & Oracles +- Backend Oracle Node for API webhooks. +- Email/SMS notifications for escrow events. +- Recurring subscription payments. + +### Phase 3: Developer Ecosystem +- EpochSend SDK for third-party dApps. +- Multi-signature approvals. +- Integration with Stellar fiat off-ramps (MoneyGram). + +--- + +## 🎯 Positioning +**EpochSend** is the programmable financial layer for Stellarβ€”turning intent into automated, trustless execution. diff --git a/frontend/README.md b/frontend/README.md index 2049d8c..c51a414 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,136 +1,171 @@ -# ForgeX β€” Frontend +# ForgeX: Vult β€” Frontend -A modern Next.js frontend for ForgeX - a decentralized vault platform enabling users to create multiple ERC-4626 compliant vaults for automated yield generation. Built with TypeScript, Tailwind CSS, and wagmi for Base Mainnet. +Next.js 16 frontend for the ForgeX yield-native DeFi protocol on Base. Built with TypeScript, Tailwind CSS v4, Wagmi v3, and Reown AppKit. -## Overview +--- -ForgeX is a comprehensive DeFi platform that allows users to: - -- **Create Multiple Vaults**: Each user can create multiple personal ERC-4626 compliant vaults -- **Automated Yield Generation**: Deploy assets to DeFi protocols (Aave, Compound, Uniswap) automatically -- **ERC-4626 Standard**: Industry-standard tokenized vault interface for maximum interoperability -- **Share-Based Ownership**: Transferable ERC-20 vault shares representing ownership -- **Protocol Allocations**: Configure how assets are distributed across different DeFi protocols +## Tech Stack -### Multi-Vault Management +| Tool | Version | Purpose | +|------|---------|---------| +| Next.js | 16.1.1 | App Router, SSR | +| React | 19.2.0 | UI | +| TypeScript | 5.x | Type safety | +| Tailwind CSS | v4 | Styling | +| Wagmi | v3 | Wallet hooks | +| Viem | v2 | On-chain reads/writes | +| Reown AppKit | latest | Wallet modal | +| Framer Motion | latest | Animations | +| Lucide React | latest | Icons | -- **Create multiple personal vaults** for different strategies or assets -- **ERC-4626 compliant vaults** with standardized interface -- **Track all vaults** in a unified dashboard -- **Manage vault configurations** individually +--- -### Vault Operations +## Design System -- **Deposit assets** into vaults and receive share tokens -- **Withdraw assets** by redeeming vault shares -- **Transfer vault shares** as ERC-20 tokens -- **Configure protocol allocations** (Aave, Compound, Uniswap) +**Olive green** theme with warm neutrals: + +| Token | Value | Usage | +|-------|-------|-------| +| `--primary` | `#8FA828` | CTAs, active nav, badges | +| `--background` | `#090A06` | Page background | +| `--card` | `#181B0C` | Card surfaces | +| `--foreground` | `#E8E2CF` | Body text | +| `--foreground-muted` | `#918E78` | Labels, secondary | + +Full **light mode** supported via `data-theme="light"` on ``, toggled by `ThemeToggle` in the navbar and persisted to `localStorage`. + +--- + +## Pages (App Router) + +| Route | Component | Description | +|-------|-----------|-------------| +| `/` | `app/page.tsx` | Landing β€” hero, stats, features, CTA | +| `/dashboard` | `app/dashboard/page.tsx` | Vault grid, AI insights, user profile | +| `/vaults` | `app/vaults/page.tsx` | Full vault management | +| `/analytics` | `app/analytics/page.tsx` | Per-vault yield %, USD value, allocation bar | +| `/portfolio` | `app/portfolio/page.tsx` | Aggregated portfolio view | +| `/compare` | `app/compare/page.tsx` | Side-by-side vault comparison grid | +| `/history` | `app/history/page.tsx` | On-chain Deposit/Withdraw event log | +| `/hook` | `app/hook/page.tsx` | VultHook info, addresses, how-it-works | + +--- + +## Components + +| Component | Description | +|-----------|-------------| +| `Navbar` | Logo, nav links (registered users only), ThemeToggle, LaunchButton, wallet button | +| `LaunchButton` | Connection status dot + "Launch App" CTA | +| `ThemeToggle` | Sun/Moon icon, toggles dark/light theme | +| `VaultCard` | Deposit / Withdraw / Allocate (Aave+Compound) / Share / Admin (owner only) | +| `CreateVaultModal` | Name, symbol, asset (WETH/USDC/DAI/USDT) selection | +| `RegisterForm` | Username + bio, calls `registerUser()` on-chain | +| `AIInsights` | Dashboard panel β€” Insights / Strategy / Risk tabs | +| `AIChat` | Floating bottom-left chat widget (Claude-powered) | +| `Toast` | Notifications β€” success / error / info / tx (with BaseScan link) | +| `HeroIllustration` | Landing page SVG illustration | +| `ClientLayout` | Wraps ``, ``, `` | + +--- + +## Hooks + +### `hooks/useVaultFactory.ts` +- `useIsRegistered()` β€” checks registration status +- `useUserVaults()` β€” returns array of vault addresses for connected user +- `useUserInfo()` β€” fetches username, bio, member-since from chain +- `useRegisterUser()` β€” calls `registerUser(username, bio)` +- `useCreateVault()` β€” calls `createVault(asset, name, symbol)` + +### `hooks/useUserVault.ts` +- `useVaultData(address)` β€” multi-read: totalAssets, accrued, shares, USD values, Aave/Compound balances, paused state. All reads poll every **30 seconds** for real-time yield tracking. +- `useVaultDeposit(address)` β€” 2-step approve + deposit flow +- `useVaultWithdraw(address)` β€” withdraw assets +- `useDeployToAave(address)` / `useDeployToCompound(address)` β€” allocate to protocols +- `useWithdrawFromAave(address)` / `useWithdrawFromCompound(address)` β€” recall from protocols +- `useTransferShares(address)` β€” ERC-20 transfer of vault share tokens +- (inline) `useReadContract` for `owner()` + `useWriteContract` for `transferOwnership()` in VaultCard + +--- -### Automated Yield Generation +## Project Structure -- **Multi-protocol deployment** to DeFi protocols -- **Strategy configuration** for each vault -- **Real-time performance tracking** -- **Yield harvesting** and compounding +``` +frontend/ +β”œβ”€β”€ app/ +β”‚ β”œβ”€β”€ layout.tsx # Root layout (Web3Provider + ClientLayout) +β”‚ β”œβ”€β”€ globals.css # Design tokens, dark + light themes, utilities +β”‚ β”œβ”€β”€ page.tsx # Landing page +β”‚ β”œβ”€β”€ dashboard/page.tsx +β”‚ β”œβ”€β”€ vaults/page.tsx +β”‚ β”œβ”€β”€ analytics/page.tsx +β”‚ β”œβ”€β”€ portfolio/page.tsx +β”‚ β”œβ”€β”€ compare/page.tsx +β”‚ β”œβ”€β”€ history/page.tsx +β”‚ └── hook/page.tsx +β”œβ”€β”€ components/ # 11 React components +β”œβ”€β”€ context/ +β”‚ └── Web3Provider.tsx # createAppKit (unconditional, ssr: true) + WagmiProvider +β”œβ”€β”€ config/ +β”‚ └── wagmi.ts # projectId + networks export +β”œβ”€β”€ hooks/ +β”‚ β”œβ”€β”€ useVaultFactory.ts +β”‚ └── useUserVault.ts +β”œβ”€β”€ lib/ +β”‚ β”œβ”€β”€ abis.ts # VAULT_FACTORY_ABI, USER_VAULT_ABI, ERC20_ABI +β”‚ β”œβ”€β”€ constants.ts # Contract addresses, token addresses, AI_BACKEND_URL +β”‚ └── ai.ts # Fetch helpers for AI backend endpoints +└── public/ + β”œβ”€β”€ logo.svg + └── favicon.svg +``` -Built for Ethereum-compatible chains, with primary deployment on Base Mainnet. +--- -## Tech Stack +## Environment Variables -- **Framework:** Next.js 14 (App Router) -- **Language:** TypeScript -- **Styling:** Tailwind CSS -- **Web3:** wagmi, viem, Reown AppKit (WalletConnect) -- **State Management:** React Hooks +Create a `.env.local` file (never commit this): -## Design System - -### Color Scheme +```env +# Required β€” get from https://cloud.reown.com +NEXT_PUBLIC_REOWN_PROJECT_ID=your_reown_project_id -The ForgeX frontend uses a high-contrast tri-tone color palette: -- **Magenta**: `#FF007A` (Main brand color) -- **Cyan-Blue**: `#0EA7CB` (Legacy identity / Secondary highlights) -- **Electric Cyan**: `#00F0FF` (Neon accents & gradients) +# AI Backend (deployed on Render) +NEXT_PUBLIC_AI_BACKEND_URL=https://forgex-14vp.onrender.com +``` -This color scheme creates a vibrant, professional, and visually appealing interface that reflects the platform's advanced DeFi focus. +--- ## Quick Start ```bash -# Install dependencies npm install - -# Run development server -npm run dev +# create .env.local with vars above +npm run dev # http://localhost:3000 +npm run build # production build +npm run lint # ESLint ``` -Open [http://localhost:3000](http://localhost:3000) to view the app. +--- -## Development +## Wallet Connection -```bash -# Type checking -npm run type-check - -# Linting -npm run lint +- **Provider:** Reown AppKit with `createAppKit()` called unconditionally at module level in `Web3Provider.tsx` +- **WagmiAdapter:** `ssr: true` +- **Networks:** Base Mainnet + Base Sepolia +- `` and `` web components used for wallet/network UI -# Build for production -npm run build -``` +--- -## Project Structure +## Network -``` -forgex-frontend/ -β”œβ”€β”€ app/ # Next.js app router pages -β”‚ β”œβ”€β”€ vaults/ # Multi-vault management interface -β”‚ β”œβ”€β”€ create/ # Vault creation page -β”‚ β”œβ”€β”€ dashboard/ # User dashboard with all vaults -β”‚ └── admin/ # Admin panel (if applicable) -β”œβ”€β”€ components/ # React components -β”‚ β”œβ”€β”€ vaults/ # Vault-related components -β”‚ β”œβ”€β”€ shared/ # Shared UI components -β”‚ └── layout/ # Layout components -β”œβ”€β”€ config/ # Wagmi and adapter configuration -β”œβ”€β”€ lib/ # Utilities and contract helpers -β”‚ β”œβ”€β”€ abi/ # Contract ABIs -β”‚ β”œβ”€β”€ contracts.ts # Contract interaction functions -β”‚ └── utils.ts # Helper utilities -└── hooks/ # Custom React hooks - β”œβ”€β”€ useVaultFactory.ts - └── useUserVault.ts -``` - -## Contributing - -We welcome contributions! To get started: - -1. **Pick an issue** from [`ISSUES.md`](./ISSUES.md) -2. **Create a branch** using the issue number: `issue/-short-description` -3. **Implement your changes** following the issue's acceptance criteria -4. **Submit a PR** with the issue number in the title/description - -When pushing your changes, include the issue number or title in your commit messages. - -## Environment Variables - -Create a `.env.local` file: - -```env -NEXT_PUBLIC_REOWN_PROJECT_ID=your_project_id -NEXT_PUBLIC_VAULT_FACTORY_ADDRESS=0x... -NEXT_PUBLIC_NETWORK=base -``` - -**Note:** Contract addresses will be provided after deployment to Base Mainnet. - -## Network Configuration - -- **Network:** Base Mainnet -- **Chain ID:** 8453 +- **Primary:** Base Mainnet β€” Chain ID 8453 +- **Testnet:** Base Sepolia β€” Chain ID 84532 - **Explorer:** [BaseScan](https://basescan.org/) -## License +--- + +## Deployed -See the main project LICENSE file. \ No newline at end of file +Frontend is deployed on **Vercel**. Set Root Directory to `frontend` in Vercel dashboard settings. diff --git a/frontend/TODO.md b/frontend/TODO.md index a851e1f..c802f13 100644 --- a/frontend/TODO.md +++ b/frontend/TODO.md @@ -1,98 +1,99 @@ -# Frontend Issues +# Frontend Issues & Progress -This file contains all GitHub issues for the ForgeX frontend. Each issue is ready to be copied into GitHub. - -## βœ… Completed Issues - -### Issue #3: Magenta Branding & Layout Refinement (UHI8) -**Status:** βœ… COMPLETED -**Labels:** `frontend`, `ui/ux`, `design` -**Priority:** MEDIUM -**Description:** Implement ForgeX Magenta/Black/White design system. Update colors in `globals.css` and landing page content for "ForgeX: Vult" UHI8 strategy. +## βœ… Completed ### Issue #1: Wallet Integration β€” Reown AppKit + Wagmi +**Status:** βœ… COMPLETED +Wagmi v3 adapter + Reown AppKit. `createAppKit()` called unconditionally at module level in `Web3Provider.tsx` with `ssr: true`. Supports Base Mainnet + Base Sepolia. -**Status:** βœ… COMPLETED -**Labels:** `frontend`, `feature`, `web3` -**Priority:** HIGH -**Description:** Integrate Reown AppKit for seamless wallet connectivity on Base networks. -**Completed:** wagmi Adapter configured with AppKit, supporting Base and Base Sepolia. +### Issue #3: Olive Green Brand & UI Redesign +**Status:** βœ… COMPLETED +Full olive green theme (`#8FA828`) replacing the old tri-tone scheme. Custom SVG logo, Framer Motion animations, dark-mode-first design system in `globals.css`. -### Issue #12: Vault Performance Analytics +### Issue #6: LaunchButton + Connection Status +**Status:** βœ… COMPLETED +Glowing red/green connection dot, "Launch App" button opens wallet modal (unconnected) or routes to `/dashboard` (connected). Toast error shown if launching without wallet. -**Status:** πŸ”§ IN PROGRESS (branch: `thebabalola/forgeX-vault-analytics`) -**Labels:** `frontend`, `feature`, `analytics`, `vaults` -**Priority:** LOW -**Description:** Create analytics components showing vault performance over time. +### Issue #7: Multi-Asset Vault Support +**Status:** βœ… COMPLETED +`CreateVaultModal` supports WETH, USDC, DAI, USDT asset selection. Token addresses in `constants.ts`. -### Issue #13: Transaction History & Activity Feed +### Issue #8: Protocol Deployment UI +**Status:** βœ… COMPLETED +VaultCard "Allocate" button: Deploy to Aave / Deploy to Compound / Withdraw from Aave / Withdraw from Compound. Hooks in `useUserVault.ts`, functions in `abis.ts`. -**Status:** βœ… COMPLETED -**Labels:** `frontend`, `feature`, `activity` -**Priority:** MEDIUM -**Description:** Create a transaction history component showing all vault-related transactions. -**Completed:** TransactionHistory component with full history table display, ActivityFeed component with recent activity stream, both with proper status tracking, amount formatting, and timestamp handling. - -### Issue #14: User Profile & Settings +### Issue #9: Dashboard User Profile +**Status:** βœ… COMPLETED +Profile card at top of dashboard: username initial avatar, username, bio, member-since date fetched on-chain via `useUserInfo()`. Inline `RegisterForm` if not registered (no redirect). -**Status:** ❌ PENDING -**Labels:** `frontend`, `feature`, `user` -**Priority:** LOW -**Description:** Create a user profile page showing registered user information and settings. - -### Issue #15: Admin Panel Interface - -**Status:** ❌ PENDING -**Labels:** `frontend`, `feature`, `admin` -**Priority:** LOW -**Description:** Create an admin panel for managing protocol addresses and platform statistics. - -### Issue #16: Error Handling & User Feedback - -**Status:** ❌ PENDING -**Labels:** `frontend`, `infrastructure`, `ux` -**Priority:** MEDIUM -**Description:** Implement comprehensive error handling, toast notifications, and error boundaries. +### Issue #10: AI Backend Integration +**Status:** βœ… COMPLETED +FastAPI backend deployed to Render (`https://forgex-14vp.onrender.com`). `NEXT_PUBLIC_AI_BACKEND_URL` env var. Insights / Strategy / Risk tabs on dashboard. Floating AIChat widget. -### Issue #17: Testing & Quality Assurance +### Issue #11: Vault Analytics Page +**Status:** βœ… COMPLETED +`/analytics` β€” per-vault yield % accrued, USD value, share price, total assets, Aave/Compound/Idle allocation bar with percentages. Live on-chain data via `useVaultData`. -**Status:** ❌ PENDING -**Labels:** `frontend`, `testing`, `quality` -**Priority:** MEDIUM -**Description:** Set up comprehensive testing infrastructure including unit, integration, and E2E tests. +### Issue #12: Portfolio Aggregation Page +**Status:** βœ… COMPLETED +`/portfolio` β€” total portfolio USD, combined yield %, portfolio-wide allocation bar, per-vault breakdown table. Uses `VaultDataCollector` pattern to avoid hook-in-loop violation. ---- +### Issue #13: Transaction History +**Status:** βœ… COMPLETED +`/history` β€” fetches ERC-4626 Deposit/Withdraw events via `usePublicClient` + `getLogs` (last 50k blocks) across all user vaults. Unified chronological table with BaseScan tx links. Refresh button. -## πŸ“ Issue Template +### Issue #14: User Profile Card +**Status:** βœ… COMPLETED +Dashboard profile card shows username, bio, member-since date. `` + `` for network/wallet management inline. -When creating new issues, use this template: +### Issue #15: VultHook UI Page +**Status:** βœ… COMPLETED +`/hook` β€” VultHook + PoolManager addresses with copy buttons, 3-step how-it-works explainer (afterAddLiquidity / beforeSwap / afterSwap), hook flags grid, specs panel. -```markdown -### Issue #: +### Issue #16: Enhanced Notifications (Toast) +**Status:** βœ… COMPLETED +Toast component supports `"tx"` type with olive colour scheme, truncated txHash linked to BaseScan, 6s display duration. `showToast(msg, "tx", txHash)` API. -**Status:** ❌ PENDING +### Issue #17: Vault Comparison Page +**Status:** βœ… COMPLETED +`/compare` β€” horizontally scrollable side-by-side vault grid. Metrics: total assets, USD value, accrued, share price, Aave/Compound/idle allocation, yield %, status. -**Labels:** `<label1>`, `<label2>` +### Issue #18: Vault Share Transfer UI +**Status:** βœ… COMPLETED +VaultCard "Share" button: recipient address + share amount β†’ calls ERC-20 `transfer()` on vault share token via `useTransferShares`. Toast feedback on success/error. -**Priority:** HIGH | MEDIUM | LOW +### Issue #19: Dark/Light Theme Toggle +**Status:** βœ… COMPLETED +`ThemeToggle` component in Navbar. Toggles `data-theme="light"/"dark"` on `<html>`. Warm light palette added to `globals.css`. Preference persisted to `localStorage`. -**Description:** +### Issue #20: Real-Time Yield Tracking +**Status:** βœ… COMPLETED +All reads in `useVaultData` use `refetchInterval: 30_000`. Vault data auto-refreshes every 30 seconds without user action. -<Detailed description of the issue> +### Issue #21: Vault Governance (Owner Transfer) +**Status:** βœ… COMPLETED +VaultCard reads `owner()` on-chain. If connected wallet is vault owner, "Admin" button appears β†’ Transfer Ownership panel β†’ calls `transferOwnership(newOwner)`. -**Acceptance Criteria:** +--- -- [ ] Criterion 1 -- [ ] Criterion 2 -- [ ] Criterion 3 +## ❌ Pending -**Implementation Notes:** +### Issue #22: Frontend Testing +**Status:** ❌ PENDING +**Priority:** MEDIUM +No unit, integration, or E2E tests exist. Recommended: Vitest for unit tests, Playwright for E2E. -- Technical details -- Code locations -- Dependencies -``` +### Issue #23: Mobile Responsiveness Polish +**Status:** ❌ PENDING +**Priority:** LOW +Mobile bottom nav works. Individual component layout (VaultCard allocate/share panels, comparison table, history table) could be tightened on small screens. ---- +### Issue #24: Subgraph / Event Indexer +**Status:** ❌ PENDING +**Priority:** LOW +`/history` currently fetches last 50k blocks per session. A The Graph subgraph would enable full history, faster queries, and live harvest event tracking from VultHook. -**Note:** When an issue is completed, move it to the "βœ… Completed Issues" section and mark status as `βœ… COMPLETED`. +### Issue #25: VaultHook Live Activity Feed +**Status:** ❌ PENDING +**Priority:** LOW +No frontend view for real-time yield harvest events from VultHook. Requires either a subgraph or `useWatchContractEvent` with a websocket RPC provider. diff --git a/frontend/app/dashboard/page.tsx b/frontend/app/dashboard/page.tsx deleted file mode 100644 index f06d0e6..0000000 --- a/frontend/app/dashboard/page.tsx +++ /dev/null @@ -1,210 +0,0 @@ -'use client' - -import { useState } from "react"; -import { motion } from "framer-motion"; -import { useAccount } from "wagmi"; -import { useUserVaults, useIsRegistered } from "@/hooks/useVaultFactory"; -import VaultCard from "@/components/VaultCard"; -import CreateVaultModal from "@/components/CreateVaultModal"; -import AIInsights from "@/components/AIInsights"; -import Link from "next/link"; -import Image from "next/image"; -import { Layers, Network, Cpu, Wallet, Plus, TrendingUp } from "lucide-react"; - -import type { Variants } from "framer-motion"; -const stagger: Variants = { - hidden: {}, - show: { transition: { staggerChildren: 0.08 } }, -}; -const item: Variants = { - hidden: { opacity: 0, y: 14 }, - show: { opacity: 1, y: 0, transition: { duration: 0.45 } }, -}; - -export default function Dashboard() { - const { address, isConnected } = useAccount(); - const { data: isRegistered } = useIsRegistered(); - const { data: userVaults, refetch: refetchVaults } = useUserVaults(); - const [showCreateModal, setShowCreateModal] = useState(false); - - /* ── Not connected ── */ - if (!isConnected) { - return ( - <div className="flex flex-col items-center justify-center min-h-screen pt-20 px-6 gap-5 text-center"> - <Image src="/logo.svg" alt="ForgeX" width={48} height={48} /> - <h2 style={{ color: "var(--foreground)", letterSpacing: "-0.03em" }} className="text-3xl font-black"> - Connect your wallet - </h2> - <p style={{ color: "var(--foreground-muted)" }}>Connect to access your vault dashboard.</p> - <appkit-button /> - </div> - ); - } - - /* ── Not registered ── */ - if (!isRegistered) { - return ( - <div className="flex flex-col items-center justify-center min-h-screen pt-20 px-6 gap-5 text-center"> - <Image src="/logo.svg" alt="ForgeX" width={48} height={48} /> - <h2 style={{ color: "var(--foreground)", letterSpacing: "-0.03em" }} className="text-3xl font-black"> - Not registered - </h2> - <p style={{ color: "var(--foreground-muted)" }}>You need to register before accessing the dashboard.</p> - <Link href="/" className="btn btn-primary">Go to Registration</Link> - </div> - ); - } - - const vaultCount = userVaults?.length ?? 0; - - const STATS = [ - { label: "Total Vaults", value: String(vaultCount), icon: Layers, color: "var(--primary)" }, - { label: "Network", value: "Base", icon: Network, color: "var(--primary)" }, - { label: "Protocol", value: "Vult", icon: TrendingUp, color: "var(--accent)" }, - { label: "Wallet", value: address ? `${address.slice(0,6)}…${address.slice(-4)}` : "β€”", - icon: Wallet, color: "var(--foreground-muted)" }, - ]; - - return ( - <div className="min-h-screen pt-20"> - <div className="max-w-7xl mx-auto px-5 py-8"> - - {/* ── Page header ── */} - <motion.div - initial={{ opacity: 0, y: 12 }} - animate={{ opacity: 1, y: 0 }} - transition={{ duration: 0.4 }} - className="flex items-end justify-between mb-8" - > - <div> - <span className="label block mb-2">Portfolio Overview</span> - <h1 style={{ color: "var(--foreground)", letterSpacing: "-0.04em" }} className="text-5xl font-black"> - Dashboard - </h1> - </div> - <button - onClick={() => setShowCreateModal(true)} - className="btn btn-primary flex items-center gap-2" - > - <Plus size={15} /> New Vault - </button> - </motion.div> - - {/* ── Stats strip ── */} - <motion.div - variants={stagger} - initial="hidden" - animate="show" - className="grid grid-cols-2 md:grid-cols-4 gap-4 mb-8" - > - {STATS.map(({ label, value, icon: Icon, color }) => ( - <motion.div - key={label} - variants={item} - style={{ background: "var(--card)", border: "1px solid var(--border)" }} - className="rounded-2xl p-5 flex items-center gap-4" - > - <div - style={{ background: "var(--primary-muted)", borderRadius: 10 }} - className="w-9 h-9 shrink-0 flex items-center justify-center" - > - <Icon size={16} style={{ color: "var(--primary)" }} /> - </div> - <div className="min-w-0"> - <p className="label mb-1">{label}</p> - <p - style={{ color, fontWeight: 900, fontSize: 18, letterSpacing: "-0.02em" }} - className="truncate font-mono" - > - {value} - </p> - </div> - </motion.div> - ))} - </motion.div> - - {/* ── Main grid ── */} - <div className="grid grid-cols-1 lg:grid-cols-3 gap-6"> - - {/* Vaults column */} - <div className="lg:col-span-2"> - <div className="flex items-center justify-between mb-4"> - <h2 - style={{ color: "var(--foreground)", fontWeight: 800, fontSize: 18, letterSpacing: "-0.02em" }} - > - Your Vaults - </h2> - <span className="pill pill-primary">{vaultCount} active</span> - </div> - - {vaultCount > 0 ? ( - <motion.div - variants={stagger} - initial="hidden" - animate="show" - className="grid grid-cols-1 md:grid-cols-2 gap-4" - > - {userVaults!.map((vault: string, index: number) => ( - <motion.div key={vault} variants={item}> - <VaultCard vaultAddress={vault as `0x${string}`} index={index} /> - </motion.div> - ))} - </motion.div> - ) : ( - <motion.div - initial={{ opacity: 0 }} - animate={{ opacity: 1 }} - transition={{ delay: 0.3 }} - style={{ border: "2px dashed var(--border)", borderRadius: 20 }} - className="py-20 flex flex-col items-center justify-center text-center gap-4" - > - <div - style={{ background: "var(--primary-muted)", borderRadius: 14 }} - className="w-12 h-12 flex items-center justify-center" - > - <Layers size={22} style={{ color: "var(--primary)" }} /> - </div> - <div> - <p style={{ color: "var(--foreground-muted)", fontWeight: 700, marginBottom: 6 }}> - No vaults yet - </p> - <p style={{ color: "var(--foreground-dim)", fontSize: 13 }}> - Create your first vault to start stacking yield. - </p> - </div> - <button - onClick={() => setShowCreateModal(true)} - className="btn btn-primary flex items-center gap-2 mt-2" - > - <Plus size={14} /> Create Vault - </button> - </motion.div> - )} - </div> - - {/* AI panel */} - <div> - <div className="flex items-center gap-2 mb-4"> - <h2 style={{ color: "var(--foreground)", fontWeight: 800, fontSize: 18, letterSpacing: "-0.02em" }}> - AI Analysis - </h2> - <span - style={{ background: "rgba(200,191,162,0.08)", color: "var(--accent)", border: "1px solid rgba(200,191,162,0.15)", fontSize: 10, fontWeight: 700, padding: "2px 8px", borderRadius: 999 }} - > - <Cpu size={9} className="inline mr-1" /> - LIVE - </span> - </div> - <AIInsights /> - </div> - </div> - </div> - - <CreateVaultModal - isOpen={showCreateModal} - onClose={() => setShowCreateModal(false)} - onSuccess={() => refetchVaults()} - /> - </div> - ); -} diff --git a/frontend/app/favicon.ico b/frontend/app/favicon.ico deleted file mode 100644 index 718d6fe..0000000 Binary files a/frontend/app/favicon.ico and /dev/null differ diff --git a/frontend/app/globals.css b/frontend/app/globals.css index 40e2299..9783b04 100644 --- a/frontend/app/globals.css +++ b/frontend/app/globals.css @@ -1,137 +1,51 @@ @import "tailwindcss"; -/* ─── ForgeX Design Tokens ────────────────────────────────────── */ -:root { - --background: #090A06; - --surface: #121407; - --card: #181B0C; - --card-hover: #1E2210; - --border: #282C16; - --border-strong: #373D1E; - --primary: #8FA828; - --primary-hover: #A3C030; - --primary-dark: #5E6E1A; - --primary-muted: rgba(143,168,40,0.10); - --primary-glow: rgba(143,168,40,0.18); - --foreground: #E8E2CF; - --foreground-muted:#918E78; - --foreground-dim: #4E4C3A; - --accent: #C8BFA2; - --success: #5A8A2A; - --warning: #B8891A; - --error: #8A3030; +@theme { + --color-background: #050505; + --color-foreground: #ffffff; + + --font-sans: "Inter", system-ui, -apple-system, sans-serif; + + --radius-xl: 1rem; + --radius-2xl: 1.5rem; + --radius-3xl: 2rem; } -@theme inline { - --color-background: var(--background); - --color-surface: var(--surface); - --color-card: var(--card); - --color-border: var(--border); - --color-primary: var(--primary); - --color-foreground: var(--foreground); - --color-foreground-muted: var(--foreground-muted); - --color-accent: var(--accent); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); +@layer base { + body { + @apply bg-background text-foreground antialiased; + font-feature-settings: "cv02", "cv03", "cv04", "cv11"; + } } -*,*::before,*::after { box-sizing: border-box; } -html { scroll-behavior: smooth; } -body { - background: var(--background); - color: var(--foreground); - font-family: var(--font-geist-sans, 'Inter', system-ui, sans-serif); - -webkit-font-smoothing: antialiased; +@layer utilities { + .glass { + @apply bg-white/[0.03] backdrop-blur-xl border border-white/10; + } + + .glass-hover { + @apply hover:bg-white/[0.05] hover:border-white/20 transition-all duration-300; + } + + .text-gradient { + @apply bg-gradient-to-r from-green-400 to-emerald-300 bg-clip-text text-transparent; + } } -.card { - background: var(--card); - border: 1px solid var(--border); - border-radius: 16px; - transition: border-color 220ms ease, transform 220ms ease; +/* Custom scrollbar */ +::-webkit-scrollbar { + width: 10px; } -.card:hover { border-color: var(--border-strong); transform: translateY(-2px); } -.card-interactive:hover { border-color: var(--primary-dark); } -.label { - font-size: 10px; font-weight: 700; - letter-spacing: 0.12em; text-transform: uppercase; - color: var(--foreground-muted); +::-webkit-scrollbar-track { + background: transparent; } -.pill { - display: inline-flex; align-items: center; gap: 6px; - padding: 4px 12px; border-radius: 999px; - font-size: 11px; font-weight: 700; letter-spacing: 0.04em; -} -.pill-primary { - background: var(--primary-muted); color: var(--primary-hover); - border: 1px solid rgba(143,168,40,0.22); -} -.pill-accent { - background: rgba(200,191,162,0.08); color: var(--accent); - border: 1px solid rgba(200,191,162,0.15); -} - -.btn { - display: inline-flex; align-items: center; justify-content: center; - gap: 8px; padding: 10px 22px; border-radius: 10px; - font-weight: 700; font-size: 14px; cursor: pointer; - transition: all 180ms ease; border: 1px solid transparent; -} -.btn-primary { background: var(--primary); color: var(--background); border-color: var(--primary); } -.btn-primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); } -.btn-outline { background: transparent; color: var(--foreground); border-color: var(--border-strong); } -.btn-outline:hover { background: var(--card); border-color: var(--primary-dark); color: var(--primary-hover); } -.btn-ghost { background: transparent; color: var(--foreground-muted); } -.btn-ghost:hover { color: var(--foreground); background: var(--card); } - -@keyframes fade-up { - from { opacity: 0; transform: translateY(18px); } - to { opacity: 1; transform: translateY(0); } -} -@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } -@keyframes float { - 0%,100% { transform: translateY(0px); } - 50% { transform: translateY(-8px); } -} -@keyframes float-alt { - 0%,100% { transform: translateY(0px) rotate(1deg); } - 50% { transform: translateY(-6px) rotate(-1deg); } -} -@keyframes pulse-olive { - 0%,100% { opacity: 1; } 50% { opacity: 0.5; } -} -@keyframes skeleton-shimmer { - 0% { background-position: -400px 0; } - 100% { background-position: 400px 0; } -} -@keyframes ticker-up { - from { transform: translateY(100%); opacity: 0; } - to { transform: translateY(0); opacity: 1; } +::-webkit-scrollbar-thumb { + background: rgba(255, 255, 255, 0.05); + border-radius: 5px; } -.animate-fade-up { animation: fade-up 0.5s cubic-bezier(0.22,1,0.36,1) both; } -.animate-fade-in { animation: fade-in 0.4s ease both; } -.animate-float { animation: float 3.5s ease-in-out infinite; } -.animate-float-alt { animation: float-alt 4.2s ease-in-out infinite; } -.animate-pulse-olive { animation: pulse-olive 2s ease-in-out infinite; } -.animate-ticker-up { animation: ticker-up 0.3s ease both; } - -.delay-100 { animation-delay: 0.10s; } -.delay-200 { animation-delay: 0.20s; } -.delay-300 { animation-delay: 0.30s; } -.delay-400 { animation-delay: 0.40s; } -.delay-500 { animation-delay: 0.50s; } - -.skeleton { - background: linear-gradient(90deg, var(--card) 25%, var(--surface) 50%, var(--card) 75%); - background-size: 400px 100%; - animation: skeleton-shimmer 1.4s ease-in-out infinite; - border-radius: 8px; +::-webkit-scrollbar-thumb:hover { + background: rgba(255, 255, 255, 0.1); } - -::-webkit-scrollbar { width: 4px; height: 4px; } -::-webkit-scrollbar-track { background: var(--background); } -::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; } -::-webkit-scrollbar-thumb:hover { background: var(--primary-dark); } diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index aa99d19..0969cbb 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -1,53 +1,22 @@ -import type { Metadata, Viewport } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import type { Metadata } from "next"; import "./globals.css"; -import Web3Provider from "@/context/Web3Provider"; -import ClientLayout from "@/components/ClientLayout"; - -const geistSans = Geist({ variable: "--font-geist-sans", subsets: ["latin"] }); -const geistMono = Geist_Mono({ variable: "--font-geist-mono", subsets: ["latin"] }); - export const metadata: Metadata = { - title: { template: "%s | ForgeX: Vult", default: "ForgeX: Vult β€” Yield-Native Liquidity Hooks on Base" }, - description: - "ForgeX stacks ERC-4626 vault yield with Uniswap v4 swap fees into a single AI-driven strategy on Base. Stack more. Earn more.", - keywords: ["ForgeX", "Vult", "ERC-4626", "Uniswap v4", "yield hooks", "Base", "DeFi", "AI vault"], - authors: [{ name: "ForgeX Protocol" }], - creator: "ForgeX Protocol", - openGraph: { - type: "website", - title: "ForgeX: Vult β€” Yield-Native Liquidity Hooks", - description: "Stack ERC-4626 vault yield with Uniswap v4 swap fees. AI-driven strategy optimization on Base.", - siteName: "ForgeX: Vult", - images: [{ url: "/logo.svg", width: 44, height: 44, alt: "ForgeX Logo" }], - }, - twitter: { - card: "summary", - title: "ForgeX: Vult", - description: "Yield-Native Liquidity Hooks on Base. ERC-4626 + Uniswap v4 + AI.", - images: ["/logo.svg"], - }, + title: "EpochSend", + description: "Intent-Based Conditional Payments on Stellar", icons: { - icon: "/favicon.svg", - shortcut: "/favicon.svg", - apple: "/logo.svg", + icon: "/epochsend.svg", }, - robots: { index: true, follow: true }, -}; - -export const viewport: Viewport = { - themeColor: [{ media: "(prefers-color-scheme: dark)", color: "#090A06" }], - width: "device-width", - initialScale: 1, }; -export default function RootLayout({ children }: { children: React.ReactNode }) { +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { return ( - <html lang="en"> - <body className={`${geistSans.variable} ${geistMono.variable} antialiased`}> - <Web3Provider> - <ClientLayout>{children}</ClientLayout> - </Web3Provider> + <html lang="en" suppressHydrationWarning> + <body> + {children} </body> </html> ); diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index 98b7a82..4f30c1b 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -1,265 +1,370 @@ -'use client' +"use client"; -import { motion } from "framer-motion"; -import { useAccount } from "wagmi"; +import { useState } from "react"; +import Navbar from "@/components/Navbar"; import HeroIllustration from "@/components/HeroIllustration"; -import Link from "next/link"; -import Image from "next/image"; -import { Layers, Zap, Cpu, ArrowRight, Shield, GitBranch } from "lucide-react"; +import { useWallet, useCreateEscrow, useExecuteEscrow, useRefundEscrow } from "@/lib/hooks"; +import { Calendar, Shield, ArrowRight, Zap, RefreshCw, Lock, CheckCircle2, User } from "lucide-react"; +import { useToast } from "@/components/Toast"; -const FEATURES = [ - { - icon: Layers, - title: "ERC-4626 Vaults", - desc: "Tokenized yield-bearing vaults. Deposit once, earn continuously from multiple protocol integrations.", - tag: "Standard", - }, - { - icon: GitBranch, - title: "Uniswap v4 Hooks", - desc: "VultHook intercepts every swap and routes a share of fees back into your vault position.", - tag: "v4 Native", - }, - { - icon: Cpu, - title: "AI Strategy Engine", - desc: "On-demand AI analysis of your vault portfolio. Risk assessment, yield optimization, rebalancing signals.", - tag: "AI-Powered", - }, -]; - -const STATS = [ - { label: "Protocol", value: "Vult", sub: "ERC-4626" }, - { label: "Network", value: "Base", sub: "L2 Β· Ethereum" }, - { label: "Hook Version", value: "v1.0", sub: "Uniswap v4" }, - { label: "Yield Sources", value: "2Γ—", sub: "Vault + Fees" }, -]; +interface EscrowItem { + id: string; + recipient: string; + amount: string; + token: string; + conditionType: "Timestamp" | "Manual"; + conditionData: string; + status: "Locked" | "Executed" | "Refunded"; +} -const stagger = { - hidden: {}, - show: { transition: { staggerChildren: 0.09 } }, -}; -const item = { - hidden: { opacity: 0, y: 18 }, - show: { opacity: 1, y: 0, transition: { duration: 0.5 } }, -}; +import OnboardingModal from "@/components/OnboardingModal"; export default function Home() { - const { isConnected } = useAccount(); + const { address, connect } = useWallet(); + const { createEscrow, isPending: isCreating } = useCreateEscrow(); + const { execute, isPending: isExecuting } = useExecuteEscrow(); + const { refund, isPending: isRefunding } = useRefundEscrow(); + const { showToast } = useToast(); - /* ── Always show the full landing page ── */ - return ( - <div className="min-h-screen overflow-x-hidden"> + // Active form states + const [conditionType, setConditionType] = useState<"Timestamp" | "Manual">("Timestamp"); + const [recipient, setRecipient] = useState(""); + const [amount, setAmount] = useState(""); + const [token, setToken] = useState("USDC"); + const [unlockDate, setUnlockDate] = useState(""); + const [arbiter, setArbiter] = useState(""); - {/* ── Hero ── */} - <section className="relative max-w-7xl mx-auto px-5 pt-28 pb-12 grid grid-cols-1 lg:grid-cols-2 gap-12 items-center min-h-[92vh]"> + // Live active escrows list for interaction + const [escrows, setEscrows] = useState<EscrowItem[]>([ + { + id: "escrow_1", + recipient: "GBJ5...9QWX", + amount: "150.00", + token: "USDC", + conditionType: "Timestamp", + conditionData: "2026-06-01 12:00 UTC", + status: "Locked", + }, + { + id: "escrow_2", + recipient: "GDH7...3KLA", + amount: "25.00", + token: "XLM", + conditionType: "Manual", + conditionData: "Arbiter: GC4...39PL", + status: "Locked", + }, + ]); - {/* Left copy */} - <motion.div - variants={stagger} - initial="hidden" - animate="show" - className="relative z-10" - > - {/* Badge */} - <motion.div variants={item} className="mb-6"> - <span className="pill pill-primary"> - <Zap size={10} /> - VultHook Β· Base Mainnet - </span> - </motion.div> + const handleCreateEscrow = async (e: React.FormEvent) => { + e.preventDefault(); + if (!address) { + showToast("Please connect your Freighter wallet first", "error"); + return; + } + if (!recipient || !amount) { + showToast("Please enter a valid recipient and amount", "error"); + return; + } - {/* Headline */} - <motion.h1 - variants={item} - style={{ letterSpacing: "-0.04em", lineHeight: 1.0, color: "var(--foreground)" }} - className="text-6xl sm:text-7xl font-black mb-5" - > - Yield-Native<br /> - <span style={{ color: "var(--primary)" }}>Liquidity</span><br /> - Hooks. - </motion.h1> + try { + const dataValue = conditionType === "Timestamp" ? BigInt(new Date(unlockDate).getTime() / 1000) : BigInt(0); + + // Invoke the Freighter/Soroban transaction creation + await createEscrow({ + recipient, + amount, + conditionType: conditionType === "Timestamp" ? 0 : 1, + conditionData: dataValue, + arbiter: conditionType === "Manual" ? arbiter : "", + }); - {/* Sub */} - <motion.p - variants={item} - style={{ color: "var(--foreground-muted)", lineHeight: 1.65 }} - className="text-lg mb-8 max-w-md" - > - ForgeX stacks ERC-4626 vault interest with Uniswap v4 swap fees into one - automated position. Two yield sources. One vault. - </motion.p> + // Add to dynamic client list so the page updates immediately + const newEscrow: EscrowItem = { + id: `escrow_${Date.now()}`, + recipient: recipient.slice(0, 4) + "..." + recipient.slice(-4), + amount, + token, + conditionType, + conditionData: conditionType === "Timestamp" ? unlockDate : `Arbiter: ${arbiter.slice(0, 4)}...`, + status: "Locked", + }; - {/* Feature chips */} - <motion.div variants={item} className="flex flex-wrap gap-2 mb-10"> - {[ - { icon: Layers, label: "ERC-4626" }, - { icon: GitBranch, label: "Uniswap v4 Hooks" }, - { icon: Cpu, label: "AI Analytics" }, - { icon: Shield, label: "Base L2" }, - ].map(({ icon: Icon, label }) => ( - <div - key={label} - style={{ background: "var(--card)", border: "1px solid var(--border)", color: "var(--foreground-muted)" }} - className="flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs font-semibold" - > - <Icon size={11} style={{ color: "var(--primary)" }} /> - {label} - </div> - ))} - </motion.div> + setEscrows([newEscrow, ...escrows]); + showToast("Soroban Conditional Escrow created successfully!", "success"); + + // Reset form + setRecipient(""); + setAmount(""); + setUnlockDate(""); + setArbiter(""); + } catch (err) { + showToast("Failed to initialize escrow transaction", "error"); + } + }; - {/* CTA */} - <motion.div variants={item} id="connect-cta" className="flex flex-col gap-3"> - {isConnected ? ( - <Link href="/dashboard" className="btn btn-primary text-sm flex items-center gap-2 w-fit"> - <Zap size={14} /> Launch App - </Link> - ) : ( - <appkit-button label="Connect Wallet to Launch Vult" /> - )} - <Link href="#how-it-works" className="btn btn-outline text-sm flex items-center gap-2 w-fit"> - How it works <ArrowRight size={13} /> - </Link> - </motion.div> - </motion.div> + const handleExecute = async (id: string) => { + try { + await execute(id); + setEscrows(escrows.map(e => e.id === id ? { ...e, status: "Executed" as const } : e)); + showToast("Escrow condition released and funds transferred!", "success"); + } catch (err) { + showToast("Failed to execute release conditions", "error"); + } + }; - {/* Right illustration */} - <motion.div - initial={{ opacity: 0, x: 30 }} - animate={{ opacity: 1, x: 0 }} - transition={{ duration: 0.7, delay: 0.2 }} - className="hidden lg:block" - > - <HeroIllustration /> - </motion.div> + const handleRefund = async (id: string) => { + try { + await refund(id); + setEscrows(escrows.map(e => e.id === id ? { ...e, status: "Refunded" as const } : e)); + showToast("Escrow funds safely recalled!", "success"); + } catch (err) { + showToast("Failed to trigger refund", "error"); + } + }; - {/* Subtle horizontal divider at bottom */} - <div - style={{ background: "var(--border)", height: 1 }} - className="absolute bottom-0 left-5 right-5" - /> - </section> + return ( + <div className="min-h-screen bg-[#0A0E05] text-white selection:bg-[#8FA828]/30 selection:text-white"> + <OnboardingModal /> + <Navbar /> - {/* ── Stats strip ── */} - <section style={{ background: "var(--surface)", borderTop: "1px solid var(--border)", borderBottom: "1px solid var(--border)" }}> - <div className="max-w-7xl mx-auto px-5 py-6 grid grid-cols-2 md:grid-cols-4 gap-6"> - {STATS.map((s, i) => ( - <motion.div - key={s.label} - initial={{ opacity: 0, y: 10 }} - whileInView={{ opacity: 1, y: 0 }} - viewport={{ once: true }} - transition={{ delay: i * 0.07, duration: 0.4 }} - className="flex flex-col gap-0.5" - > - <span className="label">{s.label}</span> - <span style={{ color: "var(--primary)", fontWeight: 900, fontSize: 22, letterSpacing: "-0.03em" }}> - {s.value} + <main className="max-w-7xl mx-auto px-6 pt-32 pb-24 grid grid-cols-1 lg:grid-cols-12 gap-12 items-start"> + + {/* Left Side: Presentation & Details */} + <div className="lg:col-span-5 flex flex-col justify-center space-y-8"> + <div className="space-y-4"> + <div className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-[#8FA828]/10 border border-[#8FA828]/20 text-[#a3c22e] text-[10px] uppercase tracking-[0.15em] font-black"> + <Zap size={10} className="animate-pulse" /> Stellar & Soroban + </div> + <h1 className="text-4xl sm:text-5xl font-black tracking-tight leading-[1.1] bg-gradient-to-br from-white via-white to-gray-400 bg-clip-text text-transparent"> + Intent-Based <br /> + <span className="bg-gradient-to-r from-green-400 to-[#8FA828] bg-clip-text text-transparent"> + Conditional Payments </span> - <span style={{ color: "var(--foreground-muted)", fontSize: 11 }}>{s.sub}</span> - </motion.div> - ))} - </div> - </section> + </h1> + <p className="text-gray-400 text-sm leading-relaxed max-w-md"> + Securely lock digital assets on-chain. EpochSend automatically triggers disbursements based on strict time rules or trusted manual arbiter releasesβ€”fully decentralized, with no middleman. + </p> + </div> - {/* ── Features ── */} - <section id="how-it-works" className="max-w-7xl mx-auto px-5 py-24"> - <motion.div - initial={{ opacity: 0, y: 16 }} - whileInView={{ opacity: 1, y: 0 }} - viewport={{ once: true }} - className="mb-12" - > - <span className="label block mb-3">How it works</span> - <h2 style={{ color: "var(--foreground)", letterSpacing: "-0.03em" }} className="text-4xl font-black"> - Three layers.<br />One position. - </h2> - </motion.div> + <HeroIllustration /> + </div> - <motion.div - variants={stagger} - initial="hidden" - whileInView="show" - viewport={{ once: true }} - className="grid grid-cols-1 md:grid-cols-3 gap-5" - > - {FEATURES.map(({ icon: Icon, title, desc, tag }) => ( - <motion.div - key={title} - variants={item} - style={{ background: "var(--card)", border: "1px solid var(--border)" }} - className="rounded-2xl p-6 hover:border-[var(--border-strong)] transition-all duration-200 group" - > - <div className="flex items-start justify-between mb-4"> - <div - style={{ background: "var(--primary-muted)", borderRadius: 10 }} - className="w-10 h-10 flex items-center justify-center" + {/* Right Side: Interactive Create Escrow Dashboard */} + <div className="lg:col-span-7 space-y-8"> + + {/* Create Escrow Card */} + <div className="bg-white/[0.02] backdrop-blur-xl border border-white/5 rounded-3xl p-6 sm:p-8 shadow-2xl relative overflow-hidden"> + <div className="absolute top-0 right-0 w-32 h-32 bg-[#8FA828]/5 rounded-full blur-3xl pointer-events-none" /> + + <div className="flex items-center justify-between mb-8"> + <h2 className="text-xl font-bold tracking-tight">Create Smart Escrow</h2> + <div className="flex bg-white/5 rounded-xl p-1 border border-white/5"> + <button + type="button" + onClick={() => setConditionType("Timestamp")} + className={`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-black transition-all ${ + conditionType === "Timestamp" + ? "bg-[#8FA828] text-black shadow-lg" + : "text-gray-400 hover:text-white" + }`} + > + <Calendar size={12} /> Time Lock + </button> + <button + type="button" + onClick={() => setConditionType("Manual")} + className={`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-black transition-all ${ + conditionType === "Manual" + ? "bg-[#8FA828] text-black shadow-lg" + : "text-gray-400 hover:text-white" + }`} > - <Icon size={18} style={{ color: "var(--primary)" }} /> + <Shield size={12} /> Arbiter + </button> + </div> + </div> + + <form onSubmit={handleCreateEscrow} className="space-y-6"> + + {/* Recipient */} + <div className="space-y-2"> + <label className="text-[10px] font-black uppercase tracking-wider text-gray-500 block"> + Recipient Address + </label> + <div className="relative"> + <span className="absolute inset-y-0 left-0 pl-3 flex items-center text-gray-500"> + <User size={14} /> + </span> + <input + type="text" + required + value={recipient} + onChange={(e) => setRecipient(e.target.value)} + placeholder="G... (Stellar Public Key)" + className="w-full bg-white/[0.03] border border-white/10 rounded-xl pl-9 pr-4 py-3 text-sm focus:outline-none focus:border-[#8FA828]/50 transition-colors placeholder:text-gray-600" + /> </div> - <span className="pill pill-accent text-[10px]">{tag}</span> </div> - <h3 - style={{ color: "var(--foreground)", fontWeight: 800, fontSize: 17, letterSpacing: "-0.02em" }} - className="mb-2" - > - {title} - </h3> - <p style={{ color: "var(--foreground-muted)", fontSize: 14, lineHeight: 1.6 }}>{desc}</p> - <div - style={{ color: "var(--primary)", fontSize: 12, fontWeight: 700 }} - className="mt-5 flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity" - > - Learn more <ArrowRight size={11} /> + + {/* Amount & Token */} + <div className="grid grid-cols-1 sm:grid-cols-3 gap-4"> + <div className="sm:col-span-2 space-y-2"> + <label className="text-[10px] font-black uppercase tracking-wider text-gray-500 block"> + Amount + </label> + <input + type="number" + required + step="any" + value={amount} + onChange={(e) => setAmount(e.target.value)} + placeholder="0.00" + className="w-full bg-white/[0.03] border border-white/10 rounded-xl px-4 py-3 text-sm focus:outline-none focus:border-[#8FA828]/50 transition-colors placeholder:text-gray-600" + /> + </div> + <div className="space-y-2"> + <label className="text-[10px] font-black uppercase tracking-wider text-gray-500 block"> + Asset + </label> + <select + value={token} + onChange={(e) => setToken(e.target.value)} + className="w-full bg-white/[0.03] border border-white/10 rounded-xl px-3 py-3 text-sm focus:outline-none focus:border-[#8FA828]/50 transition-colors cursor-pointer text-white" + > + <option value="USDC" className="bg-[#0A0E05]">USDC</option> + <option value="XLM" className="bg-[#0A0E05]">XLM</option> + </select> + </div> </div> - </motion.div> - ))} - </motion.div> - </section> - {/* ── CTA strip ── */} - <section - style={{ background: "var(--card)", borderTop: "1px solid var(--border)", borderBottom: "1px solid var(--border)" }} - className="py-20 px-5" - > - <motion.div - initial={{ opacity: 0, y: 16 }} - whileInView={{ opacity: 1, y: 0 }} - viewport={{ once: true }} - className="max-w-2xl mx-auto text-center" - > - <Image src="/logo.svg" alt="ForgeX" width={48} height={48} className="mx-auto mb-5" /> - <h2 - style={{ color: "var(--foreground)", letterSpacing: "-0.04em" }} - className="text-4xl font-black mb-4" - > - Start stacking yield today. - </h2> - <p style={{ color: "var(--foreground-muted)" }} className="text-base mb-8"> - Connect your wallet. Create a vault. Let VultHook handle the rest. - </p> - <appkit-button /> - </motion.div> - </section> + {/* Conditional Inputs */} + {conditionType === "Timestamp" ? ( + <div className="space-y-2"> + <label className="text-[10px] font-black uppercase tracking-wider text-gray-500 block"> + Unlock Date & Time + </label> + <input + type="datetime-local" + required + value={unlockDate} + onChange={(e) => setUnlockDate(e.target.value)} + className="w-full bg-white/[0.03] border border-white/10 rounded-xl px-4 py-3 text-sm focus:outline-none focus:border-[#8FA828]/50 transition-colors text-white" + /> + </div> + ) : ( + <div className="space-y-2"> + <label className="text-[10px] font-black uppercase tracking-wider text-gray-500 block"> + Arbiter Address + </label> + <div className="relative"> + <span className="absolute inset-y-0 left-0 pl-3 flex items-center text-gray-500"> + <Shield size={14} /> + </span> + <input + type="text" + required + value={arbiter} + onChange={(e) => setArbiter(e.target.value)} + placeholder="G... (Trusted Third Party Address)" + className="w-full bg-white/[0.03] border border-white/10 rounded-xl pl-9 pr-4 py-3 text-sm focus:outline-none focus:border-[#8FA828]/50 transition-colors placeholder:text-gray-600" + /> + </div> + </div> + )} - {/* ── Footer ── */} - <footer - style={{ borderTop: "1px solid var(--border)" }} - className="py-8 px-5" - > - <div className="max-w-7xl mx-auto flex flex-col sm:flex-row items-center justify-between gap-4"> - <div className="flex items-center gap-3"> - <Image src="/logo.svg" alt="ForgeX" width={24} height={24} /> - <span style={{ color: "var(--foreground-dim)", fontSize: 12, letterSpacing: "0.06em", fontWeight: 700 }}> - FORGEX : VULT - </span> + {/* Submit / Trigger Button */} + {address ? ( + <button + type="submit" + disabled={isCreating} + className="w-full py-4 bg-[#8FA828] text-black font-black text-xs uppercase tracking-widest rounded-xl hover:bg-[#a3c22e] active:scale-[0.99] transition-all flex items-center justify-center gap-2 shadow-lg shadow-[#8FA828]/10" + > + {isCreating ? ( + <RefreshCw size={14} className="animate-spin" /> + ) : ( + <> + Initialize Soroban Escrow <ArrowRight size={12} /> + </> + )} + </button> + ) : ( + <button + type="button" + onClick={connect} + className="w-full py-4 bg-white/5 border border-white/10 text-white font-black text-xs uppercase tracking-widest rounded-xl hover:bg-white/10 active:scale-[0.99] transition-all flex items-center justify-center gap-2" + > + Connect Freighter Wallet + </button> + )} + </form> </div> - <span style={{ color: "var(--foreground-dim)", fontSize: 11 }}> - Β© 2026 ForgeX Protocol Β· Built on Base - </span> + + {/* Active Escrows Feed */} + <div className="space-y-4"> + <h3 className="text-md font-bold tracking-tight text-gray-300">My Smart Escrows</h3> + + <div className="grid grid-cols-1 md:grid-cols-2 gap-4"> + {escrows.map((item) => ( + <div + key={item.id} + className="bg-white/[0.01] border border-white/5 rounded-2xl p-5 space-y-4 hover:border-white/10 transition-colors relative overflow-hidden" + > + <div className="flex items-center justify-between"> + <span className="text-[10px] font-black uppercase text-gray-500"> + {item.conditionType} Release + </span> + <span + className={`text-[9px] font-black uppercase px-2 py-0.5 rounded-full ${ + item.status === "Locked" + ? "bg-[#8FA828]/10 text-[#a3c22e] border border-[#8FA828]/20" + : item.status === "Executed" + ? "bg-emerald-500/10 text-emerald-400 border border-emerald-500/20" + : "bg-red-500/10 text-red-400 border border-red-500/20" + }`} + > + {item.status} + </span> + </div> + + <div> + <div className="text-xl font-black text-white"> + {item.amount} <span className="text-[#8FA828]">{item.token}</span> + </div> + <div className="text-[10px] text-gray-400 mt-1 flex items-center gap-1"> + <span className="font-bold">To:</span> {item.recipient} + </div> + <div className="text-[10px] text-gray-500 mt-0.5"> + {item.conditionData} + </div> + </div> + + {item.status === "Locked" && ( + <div className="grid grid-cols-2 gap-2 pt-2"> + <button + onClick={() => handleExecute(item.id)} + disabled={isExecuting} + className="py-2 bg-white/5 border border-white/5 text-[9px] font-black uppercase tracking-wider rounded-lg hover:bg-white/10 hover:border-white/10 transition-colors flex items-center justify-center gap-1 text-emerald-400" + > + <CheckCircle2 size={10} /> Release + </button> + <button + onClick={() => handleRefund(item.id)} + disabled={isRefunding} + className="py-2 bg-white/5 border border-white/5 text-[9px] font-black uppercase tracking-wider rounded-lg hover:bg-white/10 hover:border-white/10 transition-colors flex items-center justify-center gap-1 text-red-400" + > + <Lock size={10} /> Refund + </button> + </div> + )} + </div> + ))} + </div> + </div> + </div> - </footer> + + </main> </div> ); } diff --git a/frontend/app/vaults/page.tsx b/frontend/app/vaults/page.tsx deleted file mode 100644 index 19dd71b..0000000 --- a/frontend/app/vaults/page.tsx +++ /dev/null @@ -1,165 +0,0 @@ -'use client' - -import { useState } from "react"; -import { motion } from "framer-motion"; -import { useAccount } from "wagmi"; -import { useUserVaults, useIsRegistered } from "@/hooks/useVaultFactory"; -import VaultCard from "@/components/VaultCard"; -import CreateVaultModal from "@/components/CreateVaultModal"; -import Link from "next/link"; -import Image from "next/image"; -import { Layers, Plus, Vault, ArrowRight } from "lucide-react"; - -import type { Variants } from "framer-motion"; -const stagger: Variants = { hidden: {}, show: { transition: { staggerChildren: 0.07 } } }; -const item: Variants = { - hidden: { opacity: 0, y: 14 }, - show: { opacity: 1, y: 0, transition: { duration: 0.45 } }, -}; - -export default function VaultsPage() { - const { isConnected } = useAccount(); - const { data: isRegistered } = useIsRegistered(); - const { data: userVaults, refetch: refetchVaults } = useUserVaults(); - const [showCreateModal, setShowCreateModal] = useState(false); - - /* ── Not connected ── */ - if (!isConnected) { - return ( - <div className="flex flex-col items-center justify-center min-h-screen pt-20 px-6 gap-5 text-center"> - <Image src="/logo.svg" alt="ForgeX" width={48} height={48} /> - <h2 style={{ color: "var(--foreground)", letterSpacing: "-0.03em" }} className="text-3xl font-black"> - Connect your wallet - </h2> - <p style={{ color: "var(--foreground-muted)" }}>Connect to view and manage your vaults.</p> - <appkit-button /> - </div> - ); - } - - /* ── Not registered ── */ - if (!isRegistered) { - return ( - <div className="flex flex-col items-center justify-center min-h-screen pt-20 px-6 gap-5 text-center"> - <Image src="/logo.svg" alt="ForgeX" width={48} height={48} /> - <h2 style={{ color: "var(--foreground)", letterSpacing: "-0.03em" }} className="text-3xl font-black"> - Not registered - </h2> - <p style={{ color: "var(--foreground-muted)" }}>Register first to create and manage vaults.</p> - <Link href="/" className="btn btn-primary">Go to Registration</Link> - </div> - ); - } - - const vaultCount = userVaults?.length ?? 0; - - return ( - <div className="min-h-screen pt-20"> - <div className="max-w-7xl mx-auto px-5 py-8"> - - {/* ── Page header ── */} - <motion.div - initial={{ opacity: 0, y: 12 }} - animate={{ opacity: 1, y: 0 }} - transition={{ duration: 0.4 }} - className="flex items-end justify-between mb-8" - > - <div> - <span className="label block mb-2">Vault Management</span> - <h1 style={{ color: "var(--foreground)", letterSpacing: "-0.04em" }} className="text-5xl font-black"> - Your Vaults - </h1> - </div> - <div className="flex items-center gap-3"> - <span className="pill pill-primary">{vaultCount} vault{vaultCount !== 1 ? "s" : ""}</span> - <button - onClick={() => setShowCreateModal(true)} - className="btn btn-primary flex items-center gap-2" - > - <Plus size={15} /> Create Vault - </button> - </div> - </motion.div> - - {/* ── Info strip ── */} - <motion.div - initial={{ opacity: 0 }} - animate={{ opacity: 1 }} - transition={{ delay: 0.15 }} - style={{ background: "var(--surface)", border: "1px solid var(--border)", borderRadius: 14 }} - className="flex flex-wrap items-center gap-6 px-5 py-4 mb-8" - > - {[ - { label: "Standard", value: "ERC-4626" }, - { label: "Network", value: "Base Mainnet" }, - { label: "Hook", value: "VultHook v1" }, - { label: "Yield Sources", value: "Vault + Swap Fees" }, - ].map(({ label, value }) => ( - <div key={label} className="flex flex-col gap-0.5"> - <span className="label">{label}</span> - <span style={{ color: "var(--foreground)", fontWeight: 700, fontSize: 13 }}>{value}</span> - </div> - ))} - </motion.div> - - {/* ── Vault grid ── */} - {vaultCount > 0 ? ( - <motion.div - variants={stagger} - initial="hidden" - animate="show" - className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5" - > - {userVaults!.map((vault: string, index: number) => ( - <motion.div key={vault} variants={item}> - <VaultCard vaultAddress={vault as `0x${string}`} index={index} /> - </motion.div> - ))} - </motion.div> - ) : ( - <motion.div - initial={{ opacity: 0 }} - animate={{ opacity: 1 }} - transition={{ delay: 0.25 }} - style={{ border: "2px dashed var(--border)", borderRadius: 24 }} - className="py-28 flex flex-col items-center justify-center text-center gap-5" - > - <div - style={{ background: "var(--primary-muted)", borderRadius: 16 }} - className="w-14 h-14 flex items-center justify-center" - > - <Vault size={26} style={{ color: "var(--primary)" }} /> - </div> - <div> - <p style={{ color: "var(--foreground)", fontWeight: 800, fontSize: 20, marginBottom: 6 }}> - No vaults created yet - </p> - <p style={{ color: "var(--foreground-muted)", fontSize: 14, maxWidth: 320 }}> - Create your first ERC-4626 vault to start stacking vault yield and Uniswap v4 swap fees. - </p> - </div> - <button - onClick={() => setShowCreateModal(true)} - className="btn btn-primary flex items-center gap-2 mt-2" - > - <Plus size={15} /> Create Your First Vault - </button> - <Link - href="/#how-it-works" - style={{ color: "var(--foreground-muted)", fontSize: 13 }} - className="flex items-center gap-1 hover:text-[var(--primary)] transition-colors" - > - Learn how vaults work <ArrowRight size={12} /> - </Link> - </motion.div> - )} - </div> - - <CreateVaultModal - isOpen={showCreateModal} - onClose={() => setShowCreateModal(false)} - onSuccess={() => refetchVaults()} - /> - </div> - ); -} diff --git a/frontend/components/AIInsights.tsx b/frontend/components/AIInsights.tsx deleted file mode 100644 index bb62726..0000000 --- a/frontend/components/AIInsights.tsx +++ /dev/null @@ -1,198 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { useAccount } from "wagmi"; -import { getDashboardInsights, getStrategyAdvice, getRiskAssessment } from "@/lib/ai"; -import { Cpu, TrendingUp, ShieldCheck, ChevronRight, Loader2 } from "lucide-react"; - -type Tab = "insights" | "strategy" | "risk"; - -const TABS: { key: Tab; label: string; icon: React.ElementType }[] = [ - { key: "insights", label: "Insights", icon: TrendingUp }, - { key: "strategy", label: "Strategy", icon: ChevronRight }, - { key: "risk", label: "Risk", icon: ShieldCheck }, -]; - -const RISK_PREFS = ["conservative", "balanced", "aggressive"] as const; - -export default function AIInsights() { - const { address } = useAccount(); - const [activeTab, setActiveTab] = useState<Tab>("insights"); - const [content, setContent] = useState(""); - const [isLoading, setIsLoading] = useState(false); - const [riskPref, setRiskPref] = useState("balanced"); - - const fetchData = async (tab: Tab) => { - if (!address) return; - setIsLoading(true); - setContent(""); - try { - let result: string; - if (tab === "insights") result = await getDashboardInsights(address); - else if (tab === "strategy") result = await getStrategyAdvice(address, riskPref); - else result = await getRiskAssessment(address); - setContent(result); - } catch { - setContent("Unable to reach AI backend. Make sure it is running on localhost:8000."); - } finally { - setIsLoading(false); - } - }; - - return ( - <div - style={{ background: "var(--card)", border: "1px solid var(--border)", borderRadius: 20, overflow: "hidden" }} - > - {/* Header */} - <div - style={{ padding: "16px 20px", borderBottom: "1px solid var(--border)", background: "var(--surface)" }} - className="flex items-center gap-3" - > - <div - style={{ background: "var(--primary-muted)", borderRadius: 10 }} - className="w-8 h-8 flex items-center justify-center shrink-0" - > - <Cpu size={15} style={{ color: "var(--primary)" }} /> - </div> - <div> - <p style={{ color: "var(--foreground)", fontWeight: 800, fontSize: 15 }}>ForgeX Intelligence</p> - <p style={{ color: "var(--foreground-muted)", fontSize: 11 }}>AI-powered portfolio analysis</p> - </div> - </div> - - {/* Tabs */} - <div style={{ borderBottom: "1px solid var(--border)", display: "flex" }}> - {TABS.map(({ key, label, icon: Icon }) => ( - <button - key={key} - onClick={() => setActiveTab(key)} - style={{ - flex: 1, - padding: "10px 0", - fontSize: 12, - fontWeight: 700, - letterSpacing: "0.02em", - transition: "all 150ms", - borderBottom: activeTab === key ? "2px solid var(--primary)" : "2px solid transparent", - color: activeTab === key ? "var(--primary)" : "var(--foreground-muted)", - background: "transparent", - cursor: "pointer", - display: "flex", - alignItems: "center", - justifyContent: "center", - gap: 5, - }} - > - <Icon size={11} /> - {label} - </button> - ))} - </div> - - {/* Body */} - <div style={{ padding: 20 }}> - - {/* Risk pref selector */} - {activeTab === "strategy" && ( - <div className="flex gap-2 mb-4"> - {RISK_PREFS.map((pref) => ( - <button - key={pref} - onClick={() => setRiskPref(pref)} - style={{ - flex: 1, - padding: "5px 0", - borderRadius: 8, - fontSize: 11, - fontWeight: 700, - textTransform: "capitalize", - cursor: "pointer", - transition: "all 150ms", - border: riskPref === pref ? "1px solid rgba(143,168,40,0.30)" : "1px solid var(--border)", - background: riskPref === pref ? "var(--primary-muted)" : "transparent", - color: riskPref === pref ? "var(--primary-hover)" : "var(--foreground-muted)", - }} - > - {pref} - </button> - ))} - </div> - )} - - {/* Generate button */} - <button - onClick={() => fetchData(activeTab)} - disabled={isLoading || !address} - style={{ - width: "100%", - padding: "10px 0", - borderRadius: 10, - marginBottom: 16, - fontSize: 13, - fontWeight: 700, - cursor: isLoading || !address ? "not-allowed" : "pointer", - opacity: isLoading || !address ? 0.5 : 1, - border: "1px solid var(--border-strong)", - background: "var(--surface)", - color: "var(--foreground)", - transition: "all 150ms", - display: "flex", - alignItems: "center", - justifyContent: "center", - gap: 7, - }} - onMouseEnter={(e) => { - if (!isLoading && address) { - (e.target as HTMLElement).style.borderColor = "var(--primary-dark)"; - (e.target as HTMLElement).style.color = "var(--primary-hover)"; - } - }} - onMouseLeave={(e) => { - (e.target as HTMLElement).style.borderColor = "var(--border-strong)"; - (e.target as HTMLElement).style.color = "var(--foreground)"; - }} - > - {isLoading ? ( - <><Loader2 size={13} className="animate-spin" /> Analyzing…</> - ) : ( - <> - <Cpu size={13} /> - Generate {TABS.find((t) => t.key === activeTab)?.label} - </> - )} - </button> - - {/* Content */} - {isLoading && ( - <div className="space-y-2"> - {[100, 85, 92, 70].map((w, i) => ( - <div key={i} className="skeleton h-3" style={{ width: `${w}%` }} /> - ))} - </div> - )} - - {content && !isLoading && ( - <div - style={{ - fontSize: 13, - lineHeight: 1.65, - color: "var(--foreground-muted)", - maxHeight: 280, - overflowY: "auto", - whiteSpace: "pre-wrap", - padding: "2px 0", - }} - > - {content} - </div> - )} - - {!content && !isLoading && ( - <p style={{ color: "var(--foreground-dim)", fontSize: 12, textAlign: "center", padding: "16px 0" }}> - Generate AI-powered analysis of your ForgeX portfolio. - </p> - )} - </div> - </div> - ); -} diff --git a/frontend/components/HeroIllustration.tsx b/frontend/components/HeroIllustration.tsx index 91666ec..cf4486e 100644 --- a/frontend/components/HeroIllustration.tsx +++ b/frontend/components/HeroIllustration.tsx @@ -1,153 +1,20 @@ "use client"; import { motion } from "framer-motion"; -import { TrendingUp, Layers, Cpu, ArrowUpRight, Zap } from "lucide-react"; - -const float = { - animate: { y: [0, -8, 0] }, - transition: { duration: 3.5, repeat: Infinity, ease: "easeInOut" as const }, -}; -const floatAlt = { - animate: { y: [0, -6, 0], rotate: [0, 1, 0] }, - transition: { duration: 4.2, repeat: Infinity, ease: "easeInOut" as const, delay: 0.8 }, -}; export default function HeroIllustration() { return ( - <div className="relative w-full h-[420px] select-none pointer-events-none"> - - {/* Background grid faint lines */} - <svg className="absolute inset-0 w-full h-full opacity-[0.06]" viewBox="0 0 400 420"> - {Array.from({ length: 9 }).map((_, i) => ( - <line key={`v${i}`} x1={i * 50} y1="0" x2={i * 50} y2="420" stroke="#8FA828" strokeWidth="1"/> - ))} - {Array.from({ length: 9 }).map((_, i) => ( - <line key={`h${i}`} x1="0" y1={i * 52} x2="400" y2={i * 52} stroke="#8FA828" strokeWidth="1"/> - ))} - </svg> - - {/* Central hook mark β€” large watermark */} - <motion.div - initial={{ opacity: 0, scale: 0.8 }} - animate={{ opacity: 1, scale: 1 }} - transition={{ duration: 0.8, ease: "easeOut" }} - className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2" - > - <svg width="180" height="180" viewBox="0 0 44 44" fill="none"> - <line x1="12" y1="12" x2="28" y2="30" stroke="#8FA828" strokeWidth="2" strokeLinecap="round" opacity="0.25"/> - <path d="M32 12 L22 22 L22 28 C22 32 17.5 33.5 15 31" stroke="#8FA828" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" fill="none" opacity="0.25"/> - <circle cx="12" cy="30" r="2.8" fill="#C8BFA2" opacity="0.18"/> - </svg> - </motion.div> - - {/* Float card 1 β€” Vault yield */} - <motion.div - initial={{ opacity: 0, y: 20 }} - animate={{ opacity: 1, ...float.animate }} - transition={{ ...float.transition, delay: 0.2 }} - style={{ background: "var(--card)", border: "1px solid var(--border-strong)", top: "14%", left: "4%" }} - className="absolute rounded-2xl px-4 py-3 w-48 shadow-xl" - > - <div className="flex items-center gap-2 mb-2"> - <div style={{ background: "var(--primary-muted)", borderRadius: 8 }} className="w-7 h-7 flex items-center justify-center"> - <TrendingUp size={13} color="#8FA828" /> - </div> - <span className="label">ERC-4626 Vault</span> - </div> - <div style={{ color: "var(--primary)", fontWeight: 900, fontSize: 22, letterSpacing: "-0.03em" }}> - 12.4% APY - </div> - <div style={{ color: "var(--foreground-muted)", fontSize: 11, marginTop: 2 }}> - Base Β· WETH vault - </div> - </motion.div> - - {/* Float card 2 β€” Uniswap v4 fees */} - <motion.div - initial={{ opacity: 0, y: 20 }} - animate={{ opacity: 1, ...floatAlt.animate }} - transition={{ ...floatAlt.transition, delay: 0.4 }} - style={{ background: "var(--card)", border: "1px solid var(--border-strong)", top: "10%", right: "2%" }} - className="absolute rounded-2xl px-4 py-3 w-46 shadow-xl" - > - <div className="flex items-center gap-2 mb-2"> - <div style={{ background: "rgba(200,191,162,0.08)", borderRadius: 8 }} className="w-7 h-7 flex items-center justify-center"> - <Zap size={13} color="#C8BFA2" /> - </div> - <span className="label">Swap Fees</span> - </div> - <div style={{ color: "var(--accent)", fontWeight: 900, fontSize: 22, letterSpacing: "-0.03em" }}> - +4.1% - </div> - <div style={{ color: "var(--foreground-muted)", fontSize: 11, marginTop: 2 }}> - Uniswap v4 hook - </div> - </motion.div> - - {/* Float card 3 β€” AI strategy */} - <motion.div - initial={{ opacity: 0, y: 20 }} - animate={{ opacity: 1, y: [0, -6, 0] }} - transition={{ duration: 3.8, repeat: Infinity, ease: "easeInOut", delay: 0.6 }} - style={{ background: "var(--card)", border: "1px solid var(--border-strong)", bottom: "16%", left: "8%" }} - className="absolute rounded-2xl px-4 py-3 w-52 shadow-xl" - > - <div className="flex items-center gap-2 mb-2"> - <div style={{ background: "var(--primary-muted)", borderRadius: 8 }} className="w-7 h-7 flex items-center justify-center"> - <Cpu size={13} color="#8FA828" /> - </div> - <span className="label">AI Strategy</span> - </div> - <div style={{ color: "var(--foreground)", fontWeight: 700, fontSize: 13, lineHeight: 1.4 }}> - Rebalancing vault allocation for optimal fee capture - </div> - <div className="flex items-center gap-1 mt-2"> - <span style={{ background: "var(--primary-muted)", color: "var(--primary)", fontSize: 10, fontWeight: 700, padding: "2px 8px", borderRadius: 999 }}> - ACTIVE - </span> - </div> - </motion.div> - - {/* Float card 4 β€” Total stacked */} - <motion.div - initial={{ opacity: 0, y: 20 }} - animate={{ opacity: 1, y: [0, -7, 0] }} - transition={{ duration: 4.0, repeat: Infinity, ease: "easeInOut", delay: 1.0 }} - style={{ background: "var(--card)", border: "1px solid rgba(143,168,40,0.28)", bottom: "12%", right: "4%" }} - className="absolute rounded-2xl px-4 py-3 w-44 shadow-xl" - > - <div className="flex items-center justify-between mb-2"> - <span className="label">Total Stacked</span> - <ArrowUpRight size={12} color="#8FA828" /> - </div> - <div style={{ color: "var(--primary)", fontWeight: 900, fontSize: 24, letterSpacing: "-0.03em" }}> - 16.5% - </div> - <div style={{ color: "var(--foreground-muted)", fontSize: 11 }}> - Vault + Hook APY - </div> - {/* Mini bar */} - <div style={{ background: "var(--border)", borderRadius: 999, height: 4, marginTop: 8 }}> - <motion.div - initial={{ width: 0 }} - animate={{ width: "75%" }} - transition={{ delay: 1.2, duration: 1, ease: "easeOut" }} - style={{ background: "var(--primary)", borderRadius: 999, height: "100%" }} - /> - </div> - </motion.div> - - {/* Float card 5 β€” Protocol layers badge */} - <motion.div - initial={{ opacity: 0, scale: 0.9 }} - animate={{ opacity: 1, scale: 1, y: [0, -5, 0] }} - transition={{ duration: 3.2, repeat: Infinity, ease: "easeInOut", delay: 1.4 }} - style={{ background: "var(--surface)", border: "1px solid var(--border)", top: "50%", left: "38%", transform: "translateY(-50%)" }} - className="absolute rounded-xl px-3 py-2 flex items-center gap-2" - > - <Layers size={14} color="#C8BFA2" /> - <span style={{ color: "var(--accent)", fontSize: 12, fontWeight: 700 }}>VultHook v1</span> - </motion.div> - </div> + <motion.div + initial={{ opacity: 0, y: 15 }} + animate={{ opacity: 1, y: 0 }} + transition={{ duration: 0.6 }} + className="relative w-full rounded-2xl overflow-hidden border border-white/10 shadow-2xl bg-white/[0.02]" + > + <img + src="/epochsend-banner.png" + alt="EpochSend Brand Banner" + className="w-full h-auto object-cover aspect-[16/10] rounded-2xl hover:scale-[1.01] transition-transform duration-300 ease-out" + /> + </motion.div> ); } diff --git a/frontend/components/LaunchButton.tsx b/frontend/components/LaunchButton.tsx index 93c200b..85bb8f2 100644 --- a/frontend/components/LaunchButton.tsx +++ b/frontend/components/LaunchButton.tsx @@ -1,12 +1,13 @@ "use client"; import Link from "next/link"; -import { useAccount } from "wagmi"; +import { useWallet } from "@/lib/hooks"; import { useToast } from "@/components/Toast"; import { Zap } from "lucide-react"; export default function LaunchButton() { - const { isConnected } = useAccount(); + const { address } = useWallet(); + const isConnected = !!address; const { showToast } = useToast(); return ( @@ -33,7 +34,7 @@ export default function LaunchButton() { {/* Launch App button */} {isConnected ? ( <Link - href="/dashboard" + href="/" className="btn btn-primary text-xs px-4 py-2 flex items-center gap-1.5" > <Zap size={12} /> Launch App diff --git a/frontend/components/Navbar.tsx b/frontend/components/Navbar.tsx index 13a762c..f071239 100644 --- a/frontend/components/Navbar.tsx +++ b/frontend/components/Navbar.tsx @@ -1,117 +1,30 @@ "use client"; import Link from "next/link"; -import Image from "next/image"; -import dynamic from "next/dynamic"; -import { usePathname } from "next/navigation"; -import { useAccount } from "wagmi"; -import { useIsRegistered } from "@/hooks/useVaultFactory"; -import { LayoutDashboard, Vault } from "lucide-react"; - -const LaunchButton = dynamic(() => import("./LaunchButton"), { ssr: false }); - -const NAV_LINKS = [ - { href: "/dashboard", label: "Dashboard", icon: LayoutDashboard }, - { href: "/vaults", label: "Vaults", icon: Vault }, -]; +import { motion } from "framer-motion"; +import { WalletConnectButton } from "./WalletConnectButton"; export default function Navbar() { - const pathname = usePathname(); - const { isConnected } = useAccount(); - const { data: isRegistered } = useIsRegistered(); - const showNav = isConnected && isRegistered; - - return ( - <header - style={{ background: "rgba(9,10,6,0.80)", borderBottom: "1px solid var(--border)" }} - className="fixed top-0 left-0 right-0 z-50 backdrop-blur-xl" - > - <div className="max-w-7xl mx-auto px-5 h-20 flex items-center justify-between gap-6"> - - {/* Logo + Wordmark */} - <Link href="/" className="flex items-center gap-3 shrink-0 group"> - <Image - src="/logo.svg" - alt="ForgeX logo" - width={36} - height={36} - className="transition-transform duration-300 group-hover:scale-105" - /> - <span - style={{ letterSpacing: "0.16em", lineHeight: 1 }} - className="text-sm font-black uppercase" - > - <span style={{ color: "var(--primary)" }}>FORGEX</span> - <span style={{ color: "var(--border-strong)" }} className="mx-1.5">:</span> - <span style={{ color: "var(--accent)" }}>VULT</span> + <header className="fixed top-0 left-0 right-0 z-50 px-6 py-4"> + <motion.div + initial={{ y: -20, opacity: 0 }} + animate={{ y: 0, opacity: 1 }} + className="max-w-7xl mx-auto flex items-center justify-between bg-white/[0.03] backdrop-blur-xl border border-white/10 rounded-2xl px-6 py-3 shadow-2xl" + > + <Link href="/" className="flex items-center gap-3"> + <img src="/epochsend-logo.png" alt="EpochSend Logo" style={{ width: "32px", height: "32px", minWidth: "32px", minHeight: "32px", objectFit: "contain" }} /> + <span className="text-xl font-black tracking-tight bg-gradient-to-r from-green-400 to-emerald-300 bg-clip-text text-transparent"> + EpochSend </span> </Link> - {/* Nav links */} - {showNav && ( - <nav className="hidden md:flex items-center gap-1"> - {NAV_LINKS.map(({ href, label, icon: Icon }) => { - const active = pathname === href; - return ( - <Link - key={href} - href={href} - style={ - active - ? { background: "var(--primary-muted)", color: "var(--primary-hover)", borderColor: "rgba(143,168,40,0.22)" } - : { color: "var(--foreground-muted)", borderColor: "transparent" } - } - className="flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-semibold border transition-all duration-150 hover:text-[var(--foreground)] hover:bg-[var(--card)]" - > - <Icon size={14} /> - {label} - </Link> - ); - })} - </nav> - )} - {/* Right: status dot + launch app + wallet button */} - <div className="flex items-center gap-3"> - <LaunchButton /> - {/* On landing page: show simple "Connected" pill when connected, full appkit-button otherwise */} - {/* On inner pages: always show full appkit-button for address/balance */} - {pathname === "/" && isConnected ? ( - <span - style={{ background: "rgba(34,197,94,0.12)", border: "1px solid rgba(34,197,94,0.25)", color: "#22c55e" }} - className="px-3 py-1.5 rounded-lg text-xs font-bold" - > - Connected - </span> - ) : ( - <appkit-button /> - )} - </div> - </div> - {/* Mobile nav */} - {showNav && ( - <div - style={{ borderTop: "1px solid var(--border)" }} - className="md:hidden flex items-center gap-1 px-4 py-2" - > - {NAV_LINKS.map(({ href, label, icon: Icon }) => { - const active = pathname === href; - return ( - <Link - key={href} - href={href} - style={active ? { color: "var(--primary)" } : { color: "var(--foreground-muted)" }} - className="flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm font-semibold flex-1 justify-center transition-colors" - > - <Icon size={14} /> - {label} - </Link> - ); - })} + <div className="flex items-center gap-4"> + <WalletConnectButton /> </div> - )} + </motion.div> </header> ); } diff --git a/frontend/components/OnboardingModal.tsx b/frontend/components/OnboardingModal.tsx new file mode 100644 index 0000000..fae44bc --- /dev/null +++ b/frontend/components/OnboardingModal.tsx @@ -0,0 +1,134 @@ +"use client"; + +import { useState, useEffect } from "react"; +import { motion, AnimatePresence } from "framer-motion"; +import { Zap, ShieldCheck, Clock, CheckCircle2, X } from "lucide-react"; + +const slides = [ + { + id: 1, + title: "Welcome to EpochSend", + description: "The next generation of intent-based conditional payments built securely on the Stellar network.", + icon: <Zap size={48} className="text-[#8FA828]" />, + }, + { + id: 2, + title: "Time-Locked Escrows", + description: "Easily lock digital assets on-chain. Funds are automatically released to the recipient only when the exact timestamp is reached.", + icon: <Clock size={48} className="text-[#8FA828]" />, + }, + { + id: 3, + title: "Trusted Arbiters", + description: "Need human intervention? Assign a trusted third-party arbiter to manually release or refund payments when conditions are met.", + icon: <ShieldCheck size={48} className="text-[#8FA828]" />, + }, + { + id: 4, + title: "Fully Decentralized", + description: "Powered entirely by Soroban smart contracts. No middlemen, no hidden fees, and complete transparency.", + icon: <CheckCircle2 size={48} className="text-[#8FA828]" />, + }, +]; + +export default function OnboardingModal() { + const [isOpen, setIsOpen] = useState(false); + const [currentSlide, setCurrentSlide] = useState(0); + + useEffect(() => { + // Check local storage to see if user has seen onboarding + const hasSeenOnboarding = localStorage.getItem("hasSeenEpochSendOnboarding"); + if (!hasSeenOnboarding) { + setIsOpen(true); + } + }, []); + + const handleClose = () => { + localStorage.setItem("hasSeenEpochSendOnboarding", "true"); + setIsOpen(false); + }; + + const nextSlide = () => { + if (currentSlide < slides.length - 1) { + setCurrentSlide(currentSlide + 1); + } else { + handleClose(); + } + }; + + if (!isOpen) return null; + + return ( + <AnimatePresence> + {isOpen && ( + <div className="fixed inset-0 z-50 flex items-center justify-center px-4 bg-black/60 backdrop-blur-sm"> + <motion.div + initial={{ opacity: 0, scale: 0.95, y: 20 }} + animate={{ opacity: 1, scale: 1, y: 0 }} + exit={{ opacity: 0, scale: 0.95, y: 20 }} + className="bg-[#0A0E05] border border-white/10 shadow-2xl shadow-[#8FA828]/10 rounded-3xl p-8 max-w-md w-full relative overflow-hidden" + > + {/* Background Glow */} + <div className="absolute -top-24 -right-24 w-48 h-48 bg-[#8FA828]/20 rounded-full blur-3xl pointer-events-none" /> + + {/* Close Button */} + <button + onClick={handleClose} + className="absolute top-4 right-4 p-2 text-gray-500 hover:text-white transition-colors rounded-full hover:bg-white/5" + > + <X size={20} /> + </button> + + {/* Slide Content */} + <AnimatePresence mode="wait"> + <motion.div + key={currentSlide} + initial={{ opacity: 0, x: 20 }} + animate={{ opacity: 1, x: 0 }} + exit={{ opacity: 0, x: -20 }} + transition={{ duration: 0.2 }} + className="flex flex-col items-center text-center mt-4 mb-8 space-y-6" + > + <div className="p-4 bg-white/5 rounded-full border border-white/10 inline-flex shadow-lg shadow-[#8FA828]/5"> + {slides[currentSlide].icon} + </div> + + <div className="space-y-3"> + <h2 className="text-2xl font-black text-white tracking-tight"> + {slides[currentSlide].title} + </h2> + <p className="text-sm text-gray-400 leading-relaxed max-w-[280px] mx-auto"> + {slides[currentSlide].description} + </p> + </div> + </motion.div> + </AnimatePresence> + + {/* Navigation & Progress */} + <div className="flex flex-col space-y-6"> + {/* Dots */} + <div className="flex justify-center space-x-2"> + {slides.map((_, index) => ( + <div + key={index} + className={`h-1.5 rounded-full transition-all duration-300 ${ + index === currentSlide ? "w-6 bg-[#8FA828]" : "w-1.5 bg-white/20" + }`} + /> + ))} + </div> + + {/* Action Button */} + <button + onClick={nextSlide} + className="w-full py-3.5 bg-[#8FA828] text-black font-black text-xs uppercase tracking-widest rounded-xl hover:bg-[#a3c22e] active:scale-[0.99] transition-all shadow-lg shadow-[#8FA828]/20" + > + {currentSlide === slides.length - 1 ? "Get Started" : "Continue"} + </button> + </div> + </motion.div> + </div> + )} + </AnimatePresence> + ); +} diff --git a/frontend/components/SecurityNotice.tsx b/frontend/components/SecurityNotice.tsx new file mode 100644 index 0000000..0ff2a88 --- /dev/null +++ b/frontend/components/SecurityNotice.tsx @@ -0,0 +1,40 @@ +"use client"; + +import { useState } from "react"; +import { ShieldAlert, X } from "lucide-react"; + +export default function SecurityNotice() { + const [dismissed, setDismissed] = useState(false); + + if (dismissed) return null; + + return ( + <div + style={{ + background: "rgba(184,137,26,0.08)", + border: "1px solid rgba(184,137,26,0.28)", + borderRadius: 14, + }} + className="flex items-start gap-3 px-5 py-4 mb-6" + > + <ShieldAlert + size={16} + style={{ color: "#B8891A", flexShrink: 0, marginTop: 2 }} + /> + <div className="flex-1 min-w-0"> + <p style={{ color: "var(--foreground-muted)", fontSize: 12, lineHeight: 1.6 }}> + <span style={{ color: "#B8891A", fontWeight: 800 }}>Heads up β€” </span> + ForgeX is still under development and yet to be fully audited. Please don't deposit real funds just yet. + </p> + </div> + <button + onClick={() => setDismissed(true)} + style={{ color: "var(--foreground-dim)", flexShrink: 0 }} + className="hover:opacity-70 transition-opacity" + title="Dismiss" + > + <X size={14} /> + </button> + </div> + ); +} diff --git a/frontend/components/Toast.tsx b/frontend/components/Toast.tsx new file mode 100644 index 0000000..c8c9dce --- /dev/null +++ b/frontend/components/Toast.tsx @@ -0,0 +1,3 @@ +export const useToast = () => { + return { showToast: (msg: string, type: string) => console.log(msg, type) }; +}; diff --git a/frontend/components/WalletConnectButton.tsx b/frontend/components/WalletConnectButton.tsx new file mode 100644 index 0000000..9744be6 --- /dev/null +++ b/frontend/components/WalletConnectButton.tsx @@ -0,0 +1,22 @@ +"use client"; + +import { useWallet } from "@/lib/hooks"; +import { Smartphone } from "lucide-react"; + +export function WalletConnectButton() { + const { connect, address } = useWallet(); + + return ( + <button + onClick={() => connect()} + className="btn-retro flex items-center gap-2" + > + <Smartphone className="h-4 w-4" /> + <span className="font-pixel text-[10px] sm:text-xs"> + {address + ? `${address.slice(0, 6)}...${address.slice(-4)}` + : "CONNECT WALLET"} + </span> + </button> + ); +} diff --git a/frontend/lib/constants.ts b/frontend/lib/constants.ts new file mode 100644 index 0000000..9c3a0b1 --- /dev/null +++ b/frontend/lib/constants.ts @@ -0,0 +1,11 @@ +export const STELLAR_NETWORK = 'TESTNET'; +export const SOROBAN_RPC_URL = 'https://soroban-testnet.stellar.org'; +export const SOROBAN_NETWORK_PASSPHRASE = 'Test SDF Network ; September 2015'; + +// The deployed Soroban Contract ID (placeholder) +export const CONDITIONAL_PAYMENT_CONTRACT_ID = 'C...'; + +export enum ConditionType { + TIMESTAMP = 0, + MANUAL = 1, +} diff --git a/frontend/lib/hooks.ts b/frontend/lib/hooks.ts new file mode 100644 index 0000000..5bdcbdc --- /dev/null +++ b/frontend/lib/hooks.ts @@ -0,0 +1,102 @@ +'use client' + +import { useState, useEffect } from 'react'; +import { + isConnected, + requestAccess, + getPublicKey, + signTransaction +} from '@stellar/freighter-api'; + +export function useWallet() { + const [address, setAddress] = useState<string | null>(null); + + useEffect(() => { + async function checkConnection() { + try { + if (await isConnected()) { + const addr = await getPublicKey(); + setAddress(addr); + } + } catch (e) { + console.error("Wallet connection check failed", e); + } + } + checkConnection(); + }, []); + + const connect = async () => { + try { + // In @stellar/freighter-api v2, requestAccess resolves with void or string + await requestAccess(); + const addr = await getPublicKey(); + setAddress(addr); + } catch (e) { + console.error("Failed to connect wallet", e); + } + }; + + return { address, connect }; +} + +export function useCreateEscrow() { + const [isPending, setIsPending] = useState(false); + + async function createEscrow(params: { + recipient: string; + amount: string; + conditionType: number; + conditionData: bigint; + arbiter: string; + }) { + setIsPending(true); + try { + // 1. Build Soroban InvokeHostFunction transaction for `create_escrow` + // 2. Sign with Freighter: await signTransaction(xdr, { network: 'TESTNET' }) + // 3. Submit to Soroban RPC + console.log('Creating escrow on Soroban...', params); + } catch (e) { + console.error(e); + } finally { + setIsPending(false); + } + } + + return { createEscrow, isPending }; +} + +export function useExecuteEscrow() { + const [isPending, setIsPending] = useState(false); + + async function execute(contractId: string) { + setIsPending(true); + try { + console.log('Executing escrow on Soroban...', contractId); + // Implementation for `execute` using signTransaction + } catch (e) { + console.error(e); + } finally { + setIsPending(false); + } + } + + return { execute, isPending }; +} + +export function useRefundEscrow() { + const [isPending, setIsPending] = useState(false); + + async function refund(contractId: string) { + setIsPending(true); + try { + console.log('Refunding escrow on Soroban...', contractId); + // Implementation for `refund` + } catch (e) { + console.error(e); + } finally { + setIsPending(false); + } + } + + return { refund, isPending }; +} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1ab9c94..145acfe 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,43 +1,37 @@ { - "name": "smartx-frontend", + "name": "epochsend-frontend", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "smartx-frontend", + "name": "epochsend-frontend", "version": "0.1.0", "dependencies": { - "@reown/appkit": "^1.8.19", - "@reown/appkit-adapter-wagmi": "^1.8.19", - "@tanstack/react-query": "^5.90.21", - "clsx": "^2.1.1", + "@stellar/freighter-api": "^2.0.0", + "@stellar/stellar-sdk": "^12.0.0", + "clsx": "^2.1.0", "framer-motion": "^12.38.0", - "lucide-react": "^0.577.0", - "next": "^16.1.1", - "react": "19.2.0", - "react-dom": "19.2.0", - "tailwind-merge": "^3.5.0", - "viem": "^2.47.1", - "wagmi": "^3.5.0" + "lucide-react": "^0.300.0", + "next": "16.1.1", + "next-themes": "^0.3.0", + "react": "19.2.3", + "react-dom": "19.2.3", + "tailwind-merge": "^2.2.0" }, "devDependencies": { - "@tailwindcss/postcss": "^4", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "eslint": "^9", - "eslint-config-next": "16.0.6", - "tailwindcss": "^4", - "typescript": "^5" + "@tailwindcss/postcss": "^4.3.0", + "@types/node": "^20.10.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "autoprefixer": "^10.4.0", + "eslint": "^8.0.0", + "eslint-config-next": "16.1.1", + "postcss": "^8.5.15", + "tailwindcss": "^4.3.0", + "typescript": "^5.0.0" } }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", - "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", - "license": "MIT" - }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -82,7 +76,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -244,16 +237,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/runtime": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", - "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -302,120 +285,6 @@ "node": ">=6.9.0" } }, - "node_modules/@base-org/account": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@base-org/account/-/account-2.4.0.tgz", - "integrity": "sha512-A4Umpi8B9/pqR78D1Yoze4xHyQaujioVRqqO3d6xuDFw9VRtjg6tK3bPlwE0aW+nVH/ntllCpPa2PbI8Rnjcug==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@coinbase/cdp-sdk": "^1.0.0", - "@noble/hashes": "1.4.0", - "clsx": "1.2.1", - "eventemitter3": "5.0.1", - "idb-keyval": "6.2.1", - "ox": "0.6.9", - "preact": "10.24.2", - "viem": "^2.31.7", - "zustand": "5.0.3" - } - }, - "node_modules/@base-org/account/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@base-org/account/node_modules/ox": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz", - "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@base-org/account/node_modules/ox/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "optional": true, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@coinbase/cdp-sdk": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@coinbase/cdp-sdk/-/cdp-sdk-1.45.0.tgz", - "integrity": "sha512-4fgGOhyN9g/pTDE9NtsKUapwFsubrk9wafz8ltmBqSwWqLZWfWxXkVmzMYYFAf+qeGf/X9JqJtmvDVaHFlXWlw==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana-program/system": "^0.10.0", - "@solana-program/token": "^0.9.0", - "@solana/kit": "^5.1.0", - "@solana/web3.js": "^1.98.1", - "abitype": "1.0.6", - "axios": "^1.12.2", - "axios-retry": "^4.5.0", - "jose": "^6.0.8", - "md5": "^2.3.0", - "uncrypto": "^0.1.3", - "viem": "^2.21.26", - "zod": "^3.24.4" - } - }, - "node_modules/@coinbase/cdp-sdk/node_modules/abitype": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.6.tgz", - "integrity": "sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==", - "license": "MIT", - "optional": true, - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.22.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, "node_modules/@emnapi/core": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", @@ -491,130 +360,54 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/config-array": { - "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==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", + "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/js": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", - "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=18.18.0" + "node": ">=10.10.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -631,19 +424,13 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "node_modules/@humanwhocodes/object-schema": { + "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==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } + "license": "BSD-3-Clause" }, "node_modules/@img/colour": { "version": "1.0.0", @@ -1161,40 +948,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", - "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", - "license": "BSD-3-Clause" - }, - "node_modules/@lit/react": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.8.tgz", - "integrity": "sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==", - "license": "BSD-3-Clause", - "optional": true, - "peerDependencies": { - "@types/react": "17 || 18 || 19" - } - }, - "node_modules/@lit/reactive-element": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", - "integrity": "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==", - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.5.0" - } - }, - "node_modules/@msgpack/msgpack": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-3.1.3.tgz", - "integrity": "sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA==", - "license": "ISC", - "engines": { - "node": ">= 18" - } - }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", @@ -1215,9 +968,9 @@ "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "16.0.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.0.6.tgz", - "integrity": "sha512-9INsBF3/4XL0/tON8AGsh0svnTtDMLwv3iREGWnWkewGdOnd790tguzq9rX8xwrVthPyvaBHhw1ww0GZz0jO5Q==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.1.tgz", + "integrity": "sha512-Ovb/6TuLKbE1UiPcg0p39Ke3puyTCIKN9hGbNItmpQsp+WX3qrjO3WaMVSi6JHr9X1NrmthqIguVHodMJbh/dw==", "dev": true, "license": "MIT", "dependencies": { @@ -1352,58 +1105,6 @@ "node": ">= 10" } }, - "node_modules/@noble/ciphers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", - "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", - "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1452,3437 +1153,945 @@ "node": ">=12.4.0" } }, - "node_modules/@phosphor-icons/webcomponents": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@phosphor-icons/webcomponents/-/webcomponents-2.1.5.tgz", - "integrity": "sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==", - "license": "MIT", - "dependencies": { - "lit": "^3" - } + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" }, - "node_modules/@reown/appkit": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.8.19.tgz", - "integrity": "sha512-wB+xatkRbOy0AY1cZxxtcKzzPk3l3CTFulDbaISLVmZI6ZnQrOFuLnYc285zGsC6DB4d6bmwYUh89zcMLa4PvQ==", - "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@reown/appkit-common": "1.8.19", - "@reown/appkit-controllers": "1.8.19", - "@reown/appkit-pay": "1.8.19", - "@reown/appkit-polyfills": "1.8.19", - "@reown/appkit-scaffold-ui": "1.8.19", - "@reown/appkit-ui": "1.8.19", - "@reown/appkit-utils": "1.8.19", - "@reown/appkit-wallet": "1.8.19", - "@walletconnect/universal-provider": "2.23.7", - "bs58": "6.0.0", - "semver": "7.7.2", - "valtio": "2.1.7", - "viem": ">=2.45.0" + "node_modules/@stellar/freighter-api": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@stellar/freighter-api/-/freighter-api-2.0.0.tgz", + "integrity": "sha512-j/R7MLPL8S3QhwOEdAxSl7MgWBTXWlOXQKQyXR8mPk1JMKKR4tF8e4U+Fs9TPQH0HZoYqfVDvLOOUrTMMY058Q==", + "license": "Apache-2.0" + }, + "node_modules/@stellar/js-xdr": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.2.tgz", + "integrity": "sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ==", + "license": "Apache-2.0" + }, + "node_modules/@stellar/stellar-base": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-12.1.1.tgz", + "integrity": "sha512-gOBSOFDepihslcInlqnxKZdIW9dMUO1tpOm3AtJR33K2OvpXG6SaVHCzAmCFArcCqI9zXTEiSoh70T48TmiHJA==", + "license": "Apache-2.0", + "dependencies": { + "@stellar/js-xdr": "^3.1.2", + "base32.js": "^0.1.0", + "bignumber.js": "^9.1.2", + "buffer": "^6.0.3", + "sha.js": "^2.3.6", + "tweetnacl": "^1.0.3" }, "optionalDependencies": { - "@lit/react": "1.0.8" + "sodium-native": "^4.1.1" } }, - "node_modules/@reown/appkit-adapter-wagmi": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-adapter-wagmi/-/appkit-adapter-wagmi-1.8.19.tgz", - "integrity": "sha512-KY2sbIXJDLlUVBAKdHBQ8KT8aQY67rWwW9aIz4XthRIt8WCjZQBEf4JGy/kd0LwRS78XSSpZcxDxEBarMPLpaA==", - "license": "SEE LICENSE IN LICENSE.md", + "node_modules/@stellar/stellar-sdk": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-12.3.0.tgz", + "integrity": "sha512-F2DYFop/M5ffXF0lvV5Ezjk+VWNKg0QDX8gNhwehVU3y5LYA3WAY6VcCarMGPaG9Wdgoeh1IXXzOautpqpsltw==", + "license": "Apache-2.0", "dependencies": { - "@reown/appkit": "1.8.19", - "@reown/appkit-common": "1.8.19", - "@reown/appkit-controllers": "1.8.19", - "@reown/appkit-polyfills": "1.8.19", - "@reown/appkit-scaffold-ui": "1.8.19", - "@reown/appkit-utils": "1.8.19", - "@reown/appkit-wallet": "1.8.19", - "@walletconnect/universal-provider": "2.23.7", - "valtio": "2.1.7" - }, - "optionalDependencies": { - "@wagmi/connectors": ">=5.9.9" - }, - "peerDependencies": { - "@wagmi/core": ">=2.21.2", - "viem": ">=2.45.0", - "wagmi": ">=2.19.5" + "@stellar/stellar-base": "^12.1.1", + "axios": "^1.7.7", + "bignumber.js": "^9.1.2", + "eventsource": "^2.0.2", + "randombytes": "^2.1.0", + "toml": "^3.0.0", + "urijs": "^1.19.1" } }, - "node_modules/@reown/appkit-adapter-wagmi/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "optional": true, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" } }, - "node_modules/@reown/appkit-adapter-wagmi/node_modules/@wagmi/connectors": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-7.2.1.tgz", - "integrity": "sha512-/tyDepUMDM8eNzNX3ofjqHNRFZ6XcZ3u0+cQp5x0/LHCpMA8tRh7A1/e7dTrYiIJeL7iLgHzfHUXCsU02OKMLQ==", + "node_modules/@tailwindcss/node": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", + "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", + "dev": true, "license": "MIT", - "optional": true, - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "@base-org/account": "^2.5.1", - "@coinbase/wallet-sdk": "^4.3.6", - "@metamask/sdk": "~0.33.1", - "@safe-global/safe-apps-provider": "~0.18.6", - "@safe-global/safe-apps-sdk": "^9.1.0", - "@wagmi/core": "3.4.0", - "@walletconnect/ethereum-provider": "^2.21.1", - "porto": "~0.2.35", - "typescript": ">=5.7.3", - "viem": "2.x" - }, - "peerDependenciesMeta": { - "@base-org/account": { - "optional": true - }, - "@coinbase/wallet-sdk": { - "optional": true - }, - "@metamask/sdk": { - "optional": true - }, - "@safe-global/safe-apps-provider": { - "optional": true - }, - "@safe-global/safe-apps-sdk": { - "optional": true - }, - "@walletconnect/ethereum-provider": { - "optional": true - }, - "porto": { - "optional": true - }, - "typescript": { - "optional": true - } + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.21.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.0" } }, - "node_modules/@reown/appkit-adapter-wagmi/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "node_modules/@tailwindcss/oxide": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", + "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=6" + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-x64": "4.3.0", + "@tailwindcss/oxide-freebsd-x64": "4.3.0", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-x64-musl": "4.3.0", + "@tailwindcss/oxide-wasm32-wasi": "4.3.0", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" } }, - "node_modules/@reown/appkit-adapter-wagmi/node_modules/ox": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz", - "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", + "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", "optional": true, - "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-common": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.8.19.tgz", - "integrity": "sha512-z5wDrYjUGY7YbM4b14NHVo54WKZ5++PQtGkcsXhiOP39yAVijubBQD8BfHs/Pu2fSFqnqLIFoCVvIEfNWWccRw==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "big.js": "6.2.2", - "dayjs": "1.11.13", - "viem": ">=2.45.0" - } - }, - "node_modules/@reown/appkit-controllers": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.8.19.tgz", - "integrity": "sha512-JFNT8CfAVit9FJXh596Ye4U8A/oIapW+Y0KQqjB59DXyTCDZbxZDB32rULBQrSkZ6PufTEa239Dil4kABCQKtg==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@reown/appkit-common": "1.8.19", - "@reown/appkit-wallet": "1.8.19", - "@walletconnect/universal-provider": "2.23.7", - "valtio": "2.1.7", - "viem": ">=2.45.0" - } - }, - "node_modules/@reown/appkit-pay": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.8.19.tgz", - "integrity": "sha512-HO/tQT0TbTQO3eONxNNPJAOZAOzUiHvjM0Mty1rFFeRBH68auiqQxQi2YFNMs014gNkRN+cb84VYau7+MCC0fQ==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@reown/appkit-common": "1.8.19", - "@reown/appkit-controllers": "1.8.19", - "@reown/appkit-ui": "1.8.19", - "@reown/appkit-utils": "1.8.19", - "lit": "3.3.0", - "valtio": "2.1.7" - } - }, - "node_modules/@reown/appkit-polyfills": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.8.19.tgz", - "integrity": "sha512-PSoetRSuZg7f2YFPzdfs4BayQl51zcGqYr7frwOe6td0XEsspLrrVFn/zk5QFbFHZVsMdfRZ+TTunt84ozRdnQ==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "buffer": "6.0.3" - } - }, - "node_modules/@reown/appkit-scaffold-ui": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.8.19.tgz", - "integrity": "sha512-Ak767x0VzeDIXb0wbzkl19kx6udw7vkb1EU0SAweG3iKc9BunW87Rfcd48/YimzMZycJaYmlbtfmqQQDYs6Few==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@reown/appkit-common": "1.8.19", - "@reown/appkit-controllers": "1.8.19", - "@reown/appkit-pay": "1.8.19", - "@reown/appkit-ui": "1.8.19", - "@reown/appkit-utils": "1.8.19", - "@reown/appkit-wallet": "1.8.19", - "lit": "3.3.0" - } - }, - "node_modules/@reown/appkit-ui": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.8.19.tgz", - "integrity": "sha512-fCAwW8yyyC3JcgKLBPvCtYuDGC4H8anO7u4LTaAXGEzdcU5H+IrCgNFSPNK7NuTSmgXm1TnoYxPxRFKNiNwFdA==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@phosphor-icons/webcomponents": "2.1.5", - "@reown/appkit-common": "1.8.19", - "@reown/appkit-controllers": "1.8.19", - "@reown/appkit-wallet": "1.8.19", - "lit": "3.3.0", - "qrcode": "1.5.3" - } - }, - "node_modules/@reown/appkit-utils": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.8.19.tgz", - "integrity": "sha512-VQPgUMTFqoh4UD3EDZSw9wyMkyZsmIVmu8CdQ2FUxIuqYW4fLd0VIpkDeO64MMhSv8b0X8Vd6m4+eGcqSwlUAg==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@reown/appkit-common": "1.8.19", - "@reown/appkit-controllers": "1.8.19", - "@reown/appkit-polyfills": "1.8.19", - "@reown/appkit-wallet": "1.8.19", - "@wallet-standard/wallet": "1.1.0", - "@walletconnect/logger": "3.0.2", - "@walletconnect/universal-provider": "2.23.7", - "valtio": "2.1.7", - "viem": ">=2.45.0" - }, - "optionalDependencies": { - "@base-org/account": "2.4.0", - "@safe-global/safe-apps-provider": "0.18.6", - "@safe-global/safe-apps-sdk": "9.1.0" - }, - "peerDependencies": { - "valtio": "2.1.7" - } - }, - "node_modules/@reown/appkit-wallet": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.8.19.tgz", - "integrity": "sha512-NVdIKceUhkXYtsG32925ctmVn0QJFNyDlr+mWheMLCEZ/IUPn+6aA53vTVaSUquhyeFxUXtrCOh3ln6v1tup5w==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@reown/appkit-common": "1.8.19", - "@reown/appkit-polyfills": "1.8.19", - "@walletconnect/logger": "3.0.2", - "zod": "3.22.4" + "os": [ + "android" + ], + "engines": { + "node": ">= 20" } }, - "node_modules/@reown/appkit-wallet/node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", + "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" } }, - "node_modules/@reown/appkit/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", + "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": ">= 20" } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", + "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" - }, - "node_modules/@safe-global/safe-apps-provider": { - "version": "0.18.6", - "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.6.tgz", - "integrity": "sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q==", "license": "MIT", "optional": true, - "dependencies": { - "@safe-global/safe-apps-sdk": "^9.1.0", - "events": "^3.3.0" + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" } }, - "node_modules/@safe-global/safe-apps-sdk": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-9.1.0.tgz", - "integrity": "sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==", + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", + "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "@safe-global/safe-gateway-typescript-sdk": "^3.5.3", - "viem": "^2.1.1" + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" } }, - "node_modules/@safe-global/safe-gateway-typescript-sdk": { - "version": "3.23.1", - "resolved": "https://registry.npmjs.org/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.23.1.tgz", - "integrity": "sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw==", + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", + "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=16" + "node": ">= 20" } }, - "node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", + "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" } }, - "node_modules/@scure/bip32": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", - "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", + "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@noble/curves": "~1.9.0", - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" } }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", + "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">= 20" } }, - "node_modules/@scure/bip39": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", - "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", + "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", + "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">= 20" } }, - "node_modules/@solana-program/system": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@solana-program/system/-/system-0.10.0.tgz", - "integrity": "sha512-Go+LOEZmqmNlfr+Gjy5ZWAdY5HbYzk2RBewD9QinEU/bBSzpFfzqDRT55JjFRBGJUvMgf3C2vfXEGT4i8DSI4g==", - "license": "Apache-2.0", + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", + "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", "optional": true, - "peerDependencies": { - "@solana/kit": "^5.0" + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" } }, - "node_modules/@solana-program/token": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@solana-program/token/-/token-0.9.0.tgz", - "integrity": "sha512-vnZxndd4ED4Fc56sw93cWZ2djEeeOFxtaPS8SPf5+a+JZjKA/EnKqzbE1y04FuMhIVrLERQ8uR8H2h72eZzlsA==", - "license": "Apache-2.0", - "optional": true, - "peerDependencies": { - "@solana/kit": "^5.0" + "node_modules/@tailwindcss/postcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.0.tgz", + "integrity": "sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.3.0", + "@tailwindcss/oxide": "4.3.0", + "postcss": "^8.5.10", + "tailwindcss": "4.3.0" } }, - "node_modules/@solana/accounts": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/accounts/-/accounts-5.5.1.tgz", - "integrity": "sha512-TfOY9xixg5rizABuLVuZ9XI2x2tmWUC/OoN556xwfDlhBHBjKfszicYYOyD6nbFmwTGYarCmyGIdteXxTXIdhQ==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/rpc-spec": "5.5.1", - "@solana/rpc-types": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "tslib": "^2.4.0" } }, - "node_modules/@solana/addresses": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/addresses/-/addresses-5.5.1.tgz", - "integrity": "sha512-5xoah3Q9G30HQghu/9BiHLb5pzlPKRC3zydQDmE3O9H//WfayxTFppsUDCL6FjYUHqj/wzK6CWHySglc2RkpdA==", + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/assertions": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/nominal-types": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "undici-types": "~6.21.0" } }, - "node_modules/@solana/assertions": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/assertions/-/assertions-5.5.1.tgz", - "integrity": "sha512-YTCSWAlGwSlVPnWtWLm3ukz81wH4j2YaCveK+TjpvUU88hTy6fmUqxi0+hvAMAe4zKXpJyj3Az7BrLJRxbIm4Q==", + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", + "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/errors": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@types/prop-types": "*", + "csstype": "^3.2.2" } }, - "node_modules/@solana/buffer-layout": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", - "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "buffer": "~6.0.3" - }, - "engines": { - "node": ">=5.10" + "peerDependencies": { + "@types/react": "^18.0.0" } }, - "node_modules/@solana/codecs": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-5.5.1.tgz", - "integrity": "sha512-Vea29nJub/bXjfzEV7ZZQ/PWr1pYLZo3z0qW0LQL37uKKVzVFRQlwetd7INk3YtTD3xm9WUYr7bCvYUk3uKy2g==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.1.tgz", + "integrity": "sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/codecs-core": "5.5.1", - "@solana/codecs-data-structures": "5.5.1", - "@solana/codecs-numbers": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/options": "5.5.1" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.48.1", + "@typescript-eslint/type-utils": "8.48.1", + "@typescript-eslint/utils": "8.48.1", + "@typescript-eslint/visitor-keys": "8.48.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": ">=20.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "typescript": "^5.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "@typescript-eslint/parser": "^8.48.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@solana/codecs-core": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-5.5.1.tgz", - "integrity": "sha512-TgBt//bbKBct0t6/MpA8ElaOA3sa8eYVvR7LGslCZ84WiAwwjCY0lW/lOYsFHJQzwREMdUyuEyy5YWBKtdh8Rw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "@solana/errors": "5.5.1" - }, "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 4" } }, - "node_modules/@solana/codecs-data-structures": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-5.5.1.tgz", - "integrity": "sha512-97bJWGyUY9WvBz3mX1UV3YPWGDTez6btCfD0ip3UVEXJbItVuUiOkzcO5iFDUtQT5riKT6xC+Mzl+0nO76gd0w==", + "node_modules/@typescript-eslint/parser": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.1.tgz", + "integrity": "sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/codecs-core": "5.5.1", - "@solana/codecs-numbers": "5.5.1", - "@solana/errors": "5.5.1" + "@typescript-eslint/scope-manager": "8.48.1", + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/typescript-estree": "8.48.1", + "@typescript-eslint/visitor-keys": "8.48.1", + "debug": "^4.3.4" }, "engines": { - "node": ">=20.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "typescript": "^5.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@solana/codecs-numbers": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-5.5.1.tgz", - "integrity": "sha512-rllMIZAHqmtvC0HO/dc/21wDuWaD0B8Ryv8o+YtsICQBuiL/0U4AGwH7Pi5GNFySYk0/crSuwfIqQFtmxNSPFw==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.1.tgz", + "integrity": "sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/codecs-core": "5.5.1", - "@solana/errors": "5.5.1" + "@typescript-eslint/tsconfig-utils": "^8.48.1", + "@typescript-eslint/types": "^8.48.1", + "debug": "^4.3.4" }, "engines": { - "node": ">=20.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "typescript": "^5.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@solana/codecs-strings": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-5.5.1.tgz", - "integrity": "sha512-7klX4AhfHYA+uKKC/nxRGP2MntbYQCR3N6+v7bk1W/rSxYuhNmt+FN8aoThSZtWIKwN6BEyR1167ka8Co1+E7A==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.1.tgz", + "integrity": "sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/codecs-core": "5.5.1", - "@solana/codecs-numbers": "5.5.1", - "@solana/errors": "5.5.1" + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/visitor-keys": "8.48.1" }, "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "fastestsmallesttextencoderdecoder": "^1.0.22", - "typescript": "^5.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "fastestsmallesttextencoderdecoder": { - "optional": true - }, - "typescript": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@solana/errors": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-5.5.1.tgz", - "integrity": "sha512-vFO3p+S7HoyyrcAectnXbdsMfwUzY2zYFUc2DEe5BwpiE9J1IAxPBGjOWO6hL1bbYdBrlmjNx8DXCslqS+Kcmg==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.1.tgz", + "integrity": "sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==", + "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "chalk": "5.6.2", - "commander": "14.0.2" - }, - "bin": { - "errors": "bin/cli.mjs" - }, "engines": { - "node": ">=20.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "typescript": "^5.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@solana/errors/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.1.tgz", + "integrity": "sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==", + "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/typescript-estree": "8.48.1", + "@typescript-eslint/utils": "8.48.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@solana/fast-stable-stringify": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/fast-stable-stringify/-/fast-stable-stringify-5.5.1.tgz", - "integrity": "sha512-Ni7s2FN33zTzhTFgRjEbOVFO+UAmK8qi3Iu0/GRFYK4jN696OjKHnboSQH/EacQ+yGqS54bfxf409wU5dsLLCw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=20.18.0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@solana/functional": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/functional/-/functional-5.5.1.tgz", - "integrity": "sha512-tTHoJcEQq3gQx5qsdsDJ0LEJeFzwNpXD80xApW9o/PPoCNimI3SALkZl+zNW8VnxRrV3l3yYvfHWBKe/X3WG3w==", + "node_modules/@typescript-eslint/types": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.1.tgz", + "integrity": "sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@solana/instruction-plans": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/instruction-plans/-/instruction-plans-5.5.1.tgz", - "integrity": "sha512-7z3CB7YMcFKuVvgcnNY8bY6IsZ8LG61Iytbz7HpNVGX2u1RthOs1tRW8luTzSG1MPL0Ox7afyAVMYeFqSPHnaQ==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.1.tgz", + "integrity": "sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/errors": "5.5.1", - "@solana/instructions": "5.5.1", - "@solana/keys": "5.5.1", - "@solana/promises": "5.5.1", - "@solana/transaction-messages": "5.5.1", - "@solana/transactions": "5.5.1" + "@typescript-eslint/project-service": "8.48.1", + "@typescript-eslint/tsconfig-utils": "8.48.1", + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/visitor-keys": "8.48.1", + "debug": "^4.3.4", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": ">=20.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "typescript": "^5.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@solana/instructions": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/instructions/-/instructions-5.5.1.tgz", - "integrity": "sha512-h0G1CG6S+gUUSt0eo6rOtsaXRBwCq1+Js2a+Ps9Bzk9q7YHNFA75/X0NWugWLgC92waRp66hrjMTiYYnLBoWOQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/codecs-core": "5.5.1", - "@solana/errors": "5.5.1" + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=20.18.0" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "typescript": "^5.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/@solana/keys": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/keys/-/keys-5.5.1.tgz", - "integrity": "sha512-KRD61cL7CRL+b4r/eB9dEoVxIf/2EJ1Pm1DmRYhtSUAJD2dJ5Xw8QFuehobOGm9URqQ7gaQl+Fkc1qvDlsWqKg==", + "node_modules/@typescript-eslint/utils": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.1.tgz", + "integrity": "sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/assertions": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/nominal-types": "5.5.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.48.1", + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/typescript-estree": "8.48.1" }, "engines": { - "node": ">=20.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/nominal-types": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/nominal-types/-/nominal-types-5.5.1.tgz", - "integrity": "sha512-I1ImR+kfrLFxN5z22UDiTWLdRZeKtU0J/pkWkO8qm/8WxveiwdIv4hooi8pb6JnlR4mSrWhq0pCIOxDYrL9GIQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=20.18.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@solana/offchain-messages": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/offchain-messages/-/offchain-messages-5.5.1.tgz", - "integrity": "sha512-g+xHH95prTU+KujtbOzj8wn+C7ZNoiLhf3hj6nYq3MTyxOXtBEysguc97jJveUZG0K97aIKG6xVUlMutg5yxhw==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.1.tgz", + "integrity": "sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/codecs-data-structures": "5.5.1", - "@solana/codecs-numbers": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/keys": "5.5.1", - "@solana/nominal-types": "5.5.1" + "@typescript-eslint/types": "8.48.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@solana/options": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/options/-/options-5.5.1.tgz", - "integrity": "sha512-eo971c9iLNLmk+yOFyo7yKIJzJ/zou6uKpy6mBuyb/thKtS/haiKIc3VLhyTXty3OH2PW8yOlORJnv4DexJB8A==", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "@solana/codecs-core": "5.5.1", - "@solana/codecs-data-structures": "5.5.1", - "@solana/codecs-numbers": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "android" + ] }, - "node_modules/@solana/plugin-core": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/plugin-core/-/plugin-core-5.5.1.tgz", - "integrity": "sha512-VUZl30lDQFJeiSyNfzU1EjYt2QZvoBFKEwjn1lilUJw7KgqD5z7mbV7diJhT+dLFs36i0OsjXvq5kSygn8YJ3A==", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "android" + ] }, - "node_modules/@solana/programs": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/programs/-/programs-5.5.1.tgz", - "integrity": "sha512-7U9kn0Jsx1NuBLn5HRTFYh78MV4XN145Yc3WP/q5BlqAVNlMoU9coG5IUTJIG847TUqC1lRto3Dnpwm6T4YRpA==", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "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==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/errors": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "darwin" + ] }, - "node_modules/@solana/promises": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/promises/-/promises-5.5.1.tgz", - "integrity": "sha512-T9lfuUYkGykJmppEcssNiCf6yiYQxJkhiLPP+pyAc2z84/7r3UVIb2tNJk4A9sucS66pzJnVHZKcZVGUUp6wzA==", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "darwin" + ] }, - "node_modules/@solana/rpc": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc/-/rpc-5.5.1.tgz", - "integrity": "sha512-ku8zTUMrkCWci66PRIBC+1mXepEnZH/q1f3ck0kJZ95a06bOTl5KU7HeXWtskkyefzARJ5zvCs54AD5nxjQJ+A==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "@solana/errors": "5.5.1", - "@solana/fast-stable-stringify": "5.5.1", - "@solana/functional": "5.5.1", - "@solana/rpc-api": "5.5.1", - "@solana/rpc-spec": "5.5.1", - "@solana/rpc-spec-types": "5.5.1", - "@solana/rpc-transformers": "5.5.1", - "@solana/rpc-transport-http": "5.5.1", - "@solana/rpc-types": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "freebsd" + ] }, - "node_modules/@solana/rpc-api": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-api/-/rpc-api-5.5.1.tgz", - "integrity": "sha512-XWOQQPhKl06Vj0xi3RYHAc6oEQd8B82okYJ04K7N0Vvy3J4PN2cxeK7klwkjgavdcN9EVkYCChm2ADAtnztKnA==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/keys": "5.5.1", - "@solana/rpc-parsed-types": "5.5.1", - "@solana/rpc-spec": "5.5.1", - "@solana/rpc-transformers": "5.5.1", - "@solana/rpc-types": "5.5.1", - "@solana/transaction-messages": "5.5.1", - "@solana/transactions": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "linux" + ] }, - "node_modules/@solana/rpc-parsed-types": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-parsed-types/-/rpc-parsed-types-5.5.1.tgz", - "integrity": "sha512-HEi3G2nZqGEsa3vX6U0FrXLaqnUCg4SKIUrOe8CezD+cSFbRTOn3rCLrUmJrhVyXlHoQVaRO9mmeovk31jWxJg==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "linux" + ] }, - "node_modules/@solana/rpc-spec": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-spec/-/rpc-spec-5.5.1.tgz", - "integrity": "sha512-m3LX2bChm3E3by4mQrH4YwCAFY57QBzuUSWqlUw7ChuZ+oLLOq7b2czi4i6L4Vna67j3eCmB3e+4tqy1j5wy7Q==", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "@solana/errors": "5.5.1", - "@solana/rpc-spec-types": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "linux" + ] }, - "node_modules/@solana/rpc-spec-types": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-spec-types/-/rpc-spec-types-5.5.1.tgz", - "integrity": "sha512-6OFKtRpIEJQs8Jb2C4OO8KyP2h2Hy1MFhatMAoXA+0Ik8S3H+CicIuMZvGZ91mIu/tXicuOOsNNLu3HAkrakrw==", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "os": [ + "linux" + ] }, - "node_modules/@solana/rpc-subscriptions": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions/-/rpc-subscriptions-5.5.1.tgz", - "integrity": "sha512-CTMy5bt/6mDh4tc6vUJms9EcuZj3xvK0/xq8IQ90rhkpYvate91RjBP+egvjgSayUg9yucU9vNuUpEjz4spM7w==", + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "@solana/errors": "5.5.1", - "@solana/fast-stable-stringify": "5.5.1", - "@solana/functional": "5.5.1", - "@solana/promises": "5.5.1", - "@solana/rpc-spec-types": "5.5.1", - "@solana/rpc-subscriptions-api": "5.5.1", - "@solana/rpc-subscriptions-channel-websocket": "5.5.1", - "@solana/rpc-subscriptions-spec": "5.5.1", - "@solana/rpc-transformers": "5.5.1", - "@solana/rpc-types": "5.5.1", - "@solana/subscribable": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/rpc-subscriptions-api": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-5.5.1.tgz", - "integrity": "sha512-5Oi7k+GdeS8xR2ly1iuSFkAv6CZqwG0Z6b1QZKbEgxadE1XGSDrhM2cn59l+bqCozUWCqh4c/A2znU/qQjROlw==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/keys": "5.5.1", - "@solana/rpc-subscriptions-spec": "5.5.1", - "@solana/rpc-transformers": "5.5.1", - "@solana/rpc-types": "5.5.1", - "@solana/transaction-messages": "5.5.1", - "@solana/transactions": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/rpc-subscriptions-channel-websocket": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-5.5.1.tgz", - "integrity": "sha512-7tGfBBrYY8TrngOyxSHoCU5shy86iA9SRMRrPSyBhEaZRAk6dnbdpmUTez7gtdVo0BCvh9nzQtUycKWSS7PnFQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/errors": "5.5.1", - "@solana/functional": "5.5.1", - "@solana/rpc-subscriptions-spec": "5.5.1", - "@solana/subscribable": "5.5.1", - "ws": "^8.19.0" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/rpc-subscriptions-spec": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-5.5.1.tgz", - "integrity": "sha512-iq+rGq5fMKP3/mKHPNB6MC8IbVW41KGZg83Us/+LE3AWOTWV1WT20KT2iH1F1ik9roi42COv/TpoZZvhKj45XQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/errors": "5.5.1", - "@solana/promises": "5.5.1", - "@solana/rpc-spec-types": "5.5.1", - "@solana/subscribable": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/rpc-transformers": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-transformers/-/rpc-transformers-5.5.1.tgz", - "integrity": "sha512-OsWqLCQdcrRJKvHiMmwFhp9noNZ4FARuMkHT5us3ustDLXaxOjF0gfqZLnMkulSLcKt7TGXqMhBV+HCo7z5M8Q==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/errors": "5.5.1", - "@solana/functional": "5.5.1", - "@solana/nominal-types": "5.5.1", - "@solana/rpc-spec-types": "5.5.1", - "@solana/rpc-types": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/rpc-transport-http": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-transport-http/-/rpc-transport-http-5.5.1.tgz", - "integrity": "sha512-yv8GoVSHqEV0kUJEIhkdOVkR2SvJ6yoWC51cJn2rSV7plr6huLGe0JgujCmB7uZhhaLbcbP3zxXxu9sOjsi7Fg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/errors": "5.5.1", - "@solana/rpc-spec": "5.5.1", - "@solana/rpc-spec-types": "5.5.1", - "undici-types": "^7.19.2" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/rpc-transport-http/node_modules/undici-types": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.22.0.tgz", - "integrity": "sha512-RKZvifiL60xdsIuC80UY0dq8Z7DbJUV8/l2hOVbyZAxBzEeQU4Z58+4ZzJ6WN2Lidi9KzT5EbiGX+PI/UGYuRw==", - "license": "MIT", - "optional": true - }, - "node_modules/@solana/rpc-types": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/rpc-types/-/rpc-types-5.5.1.tgz", - "integrity": "sha512-bibTFQ7PbHJJjGJPmfYC2I+/5CRFS4O2p9WwbFraX1Keeel+nRrt/NBXIy8veP5AEn2sVJIyJPpWBRpCx1oATA==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/codecs-numbers": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/nominal-types": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/signers": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/signers/-/signers-5.5.1.tgz", - "integrity": "sha512-FY0IVaBT2kCAze55vEieR6hag4coqcuJ31Aw3hqRH7mv6sV8oqwuJmUrx+uFwOp1gwd5OEAzlv6N4hOOple4sQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/instructions": "5.5.1", - "@solana/keys": "5.5.1", - "@solana/nominal-types": "5.5.1", - "@solana/offchain-messages": "5.5.1", - "@solana/transaction-messages": "5.5.1", - "@solana/transactions": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/subscribable": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/subscribable/-/subscribable-5.5.1.tgz", - "integrity": "sha512-9K0PsynFq0CsmK1CDi5Y2vUIJpCqkgSS5yfDN0eKPgHqEptLEaia09Kaxc90cSZDZU5mKY/zv1NBmB6Aro9zQQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/errors": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/sysvars": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/sysvars/-/sysvars-5.5.1.tgz", - "integrity": "sha512-k3Quq87Mm+geGUu1GWv6knPk0ALsfY6EKSJGw9xUJDHzY/RkYSBnh0RiOrUhtFm2TDNjOailg8/m0VHmi3reFA==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/accounts": "5.5.1", - "@solana/codecs": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/rpc-types": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/transaction-confirmation": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/transaction-confirmation/-/transaction-confirmation-5.5.1.tgz", - "integrity": "sha512-j4mKlYPHEyu+OD7MBt3jRoX4ScFgkhZC6H65on4Fux6LMScgivPJlwnKoZMnsgxFgWds0pl+BYzSiALDsXlYtw==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/keys": "5.5.1", - "@solana/promises": "5.5.1", - "@solana/rpc": "5.5.1", - "@solana/rpc-subscriptions": "5.5.1", - "@solana/rpc-types": "5.5.1", - "@solana/transaction-messages": "5.5.1", - "@solana/transactions": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/transaction-messages": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/transaction-messages/-/transaction-messages-5.5.1.tgz", - "integrity": "sha512-aXyhMCEaAp3M/4fP0akwBBQkFPr4pfwoC5CLDq999r/FUwDax2RE/h4Ic7h2Xk+JdcUwsb+rLq85Y52hq84XvQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/codecs-data-structures": "5.5.1", - "@solana/codecs-numbers": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/functional": "5.5.1", - "@solana/instructions": "5.5.1", - "@solana/nominal-types": "5.5.1", - "@solana/rpc-types": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/transactions": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@solana/transactions/-/transactions-5.5.1.tgz", - "integrity": "sha512-8hHtDxtqalZ157pnx6p8k10D7J/KY/biLzfgh9R09VNLLY3Fqi7kJvJCr7M2ik3oRll56pxhraAGCC9yIT6eOA==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/addresses": "5.5.1", - "@solana/codecs-core": "5.5.1", - "@solana/codecs-data-structures": "5.5.1", - "@solana/codecs-numbers": "5.5.1", - "@solana/codecs-strings": "5.5.1", - "@solana/errors": "5.5.1", - "@solana/functional": "5.5.1", - "@solana/instructions": "5.5.1", - "@solana/keys": "5.5.1", - "@solana/nominal-types": "5.5.1", - "@solana/rpc-types": "5.5.1", - "@solana/transaction-messages": "5.5.1" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@solana/web3.js": { - "version": "1.98.4", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.4.tgz", - "integrity": "sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==", - "license": "MIT", - "optional": true, - "dependencies": { - "@babel/runtime": "^7.25.0", - "@noble/curves": "^1.4.2", - "@noble/hashes": "^1.4.0", - "@solana/buffer-layout": "^4.0.1", - "@solana/codecs-numbers": "^2.1.0", - "agentkeepalive": "^4.5.0", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.1", - "buffer": "6.0.3", - "fast-stable-stringify": "^1.0.0", - "jayson": "^4.1.1", - "node-fetch": "^2.7.0", - "rpc-websockets": "^9.0.2", - "superstruct": "^2.0.2" - } - }, - "node_modules/@solana/web3.js/node_modules/@solana/codecs-core": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz", - "integrity": "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/errors": "2.3.0" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" - } - }, - "node_modules/@solana/web3.js/node_modules/@solana/codecs-numbers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz", - "integrity": "sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@solana/codecs-core": "2.3.0", - "@solana/errors": "2.3.0" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" - } - }, - "node_modules/@solana/web3.js/node_modules/@solana/errors": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz", - "integrity": "sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "chalk": "^5.4.1", - "commander": "^14.0.0" - }, - "bin": { - "errors": "bin/cli.mjs" - }, - "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" - } - }, - "node_modules/@solana/web3.js/node_modules/base-x": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", - "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@solana/web3.js/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "optional": true, - "dependencies": { - "base-x": "^3.0.2" - } + "os": [ + "linux" + ] }, - "node_modules/@solana/web3.js/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "os": [ + "linux" + ] }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.17.tgz", - "integrity": "sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", - "jiti": "^2.6.1", - "lightningcss": "1.30.2", - "magic-string": "^0.30.21", - "source-map-js": "^1.2.1", - "tailwindcss": "4.1.17" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.17.tgz", - "integrity": "sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.17", - "@tailwindcss/oxide-darwin-arm64": "4.1.17", - "@tailwindcss/oxide-darwin-x64": "4.1.17", - "@tailwindcss/oxide-freebsd-x64": "4.1.17", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.17", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.17", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.17", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.17", - "@tailwindcss/oxide-linux-x64-musl": "4.1.17", - "@tailwindcss/oxide-wasm32-wasi": "4.1.17", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.17", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.17" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.17.tgz", - "integrity": "sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.17.tgz", - "integrity": "sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.17.tgz", - "integrity": "sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.17.tgz", - "integrity": "sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.17.tgz", - "integrity": "sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.17.tgz", - "integrity": "sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.17.tgz", - "integrity": "sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.17.tgz", - "integrity": "sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.17.tgz", - "integrity": "sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.17.tgz", - "integrity": "sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.6.0", - "@emnapi/runtime": "^1.6.0", - "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.0.7", - "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.17.tgz", - "integrity": "sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.17.tgz", - "integrity": "sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==", + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" + "riscv64" ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.17.tgz", - "integrity": "sha512-+nKl9N9mN5uJ+M7dBOOCzINw94MPstNR/GtIhz1fpZysxL/4a+No64jCBD6CPN+bIHWFx3KWuu8XJRrj/572Dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.17", - "@tailwindcss/oxide": "4.1.17", - "postcss": "^8.4.41", - "tailwindcss": "4.1.17" - } - }, - "node_modules/@tanstack/query-core": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", - "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/react-query": { - "version": "5.90.21", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", - "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@tanstack/query-core": "5.90.20" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^18 || ^19" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.19.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", - "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", - "devOptional": true, - "license": "MIT", - "peer": true, - "dependencies": { - "csstype": "^3.2.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT" - }, - "node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.1.tgz", - "integrity": "sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.48.1", - "@typescript-eslint/type-utils": "8.48.1", - "@typescript-eslint/utils": "8.48.1", - "@typescript-eslint/visitor-keys": "8.48.1", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.48.1", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.1.tgz", - "integrity": "sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.48.1", - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/typescript-estree": "8.48.1", - "@typescript-eslint/visitor-keys": "8.48.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.1.tgz", - "integrity": "sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.48.1", - "@typescript-eslint/types": "^8.48.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.1.tgz", - "integrity": "sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/visitor-keys": "8.48.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.1.tgz", - "integrity": "sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.1.tgz", - "integrity": "sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/typescript-estree": "8.48.1", - "@typescript-eslint/utils": "8.48.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.1.tgz", - "integrity": "sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.1.tgz", - "integrity": "sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.48.1", - "@typescript-eslint/tsconfig-utils": "8.48.1", - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/visitor-keys": "8.48.1", - "debug": "^4.3.4", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.1.tgz", - "integrity": "sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.48.1", - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/typescript-estree": "8.48.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.1.tgz", - "integrity": "sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.1", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "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==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@wagmi/core": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-3.4.0.tgz", - "integrity": "sha512-EU5gDsUp5t7+cuLv12/L8hfyWfCIKsBNiiBqpOqxZJxvAcAiQk4xFe2jMgaQPqApc3Omvxrk032M8AQ4N0cQeg==", - "license": "MIT", - "peer": true, - "dependencies": { - "eventemitter3": "5.0.1", - "mipd": "0.0.7", - "zustand": "5.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "@tanstack/query-core": ">=5.0.0", - "ox": ">=0.11.1", - "typescript": ">=5.7.3", - "viem": "2.x" - }, - "peerDependenciesMeta": { - "@tanstack/query-core": { - "optional": true - }, - "ox": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/@wagmi/core/node_modules/zustand": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.0.tgz", - "integrity": "sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==", - "license": "MIT", - "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "immer": ">=9.0.6", - "react": ">=18.0.0", - "use-sync-external-store": ">=1.2.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - }, - "use-sync-external-store": { - "optional": true - } - } - }, - "node_modules/@wallet-standard/base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wallet-standard/base/-/base-1.1.0.tgz", - "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=16" - } - }, - "node_modules/@wallet-standard/wallet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wallet-standard/wallet/-/wallet-1.1.0.tgz", - "integrity": "sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==", - "license": "Apache-2.0", - "dependencies": { - "@wallet-standard/base": "^1.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@walletconnect/core": { - "version": "2.23.7", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.23.7.tgz", - "integrity": "sha512-yTyymn9mFaDZkUfLfZ3E9VyaSDPeHAXlrPxQRmNx2zFsEt/25GmTU2A848aomimLxZnAG2jNLhxbJ8I0gyNV+w==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/jsonrpc-ws-connection": "1.0.16", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "3.0.2", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.23.7", - "@walletconnect/utils": "2.23.7", - "@walletconnect/window-getters": "1.0.1", - "es-toolkit": "1.44.0", - "events": "3.3.0", - "uint8arrays": "3.1.1" - }, - "engines": { - "node": ">=18.20.8" - } - }, - "node_modules/@walletconnect/core/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", - "license": "MIT", - "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@walletconnect/core/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@walletconnect/core/node_modules/unstorage": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", - "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", - "license": "MIT", - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^5.0.0", - "destr": "^2.0.5", - "h3": "^1.15.5", - "lru-cache": "^11.2.0", - "node-fetch-native": "^1.6.7", - "ofetch": "^1.5.1", - "ufo": "^1.6.3" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6 || ^7 || ^8", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/functions": "^2.2.12 || ^3.0.0", - "@vercel/kv": "^1 || ^2 || ^3", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/functions": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } - } - }, - "node_modules/@walletconnect/environment": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz", - "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==", - "license": "MIT", - "dependencies": { - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/environment/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@walletconnect/events": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", - "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==", - "license": "MIT", - "dependencies": { - "keyvaluestorage-interface": "^1.0.0", - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/events/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@walletconnect/heartbeat": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz", - "integrity": "sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==", - "license": "MIT", - "dependencies": { - "@walletconnect/events": "^1.0.1", - "@walletconnect/time": "^1.0.2", - "events": "^3.3.0" - } - }, - "node_modules/@walletconnect/jsonrpc-http-connection": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz", - "integrity": "sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==", - "license": "MIT", - "dependencies": { - "@walletconnect/jsonrpc-utils": "^1.0.6", - "@walletconnect/safe-json": "^1.0.1", - "cross-fetch": "^3.1.4", - "events": "^3.3.0" - } - }, - "node_modules/@walletconnect/jsonrpc-provider": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz", - "integrity": "sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==", - "license": "MIT", - "dependencies": { - "@walletconnect/jsonrpc-utils": "^1.0.8", - "@walletconnect/safe-json": "^1.0.2", - "events": "^3.3.0" - } - }, - "node_modules/@walletconnect/jsonrpc-types": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz", - "integrity": "sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==", - "license": "MIT", - "dependencies": { - "events": "^3.3.0", - "keyvaluestorage-interface": "^1.0.0" - } - }, - "node_modules/@walletconnect/jsonrpc-utils": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz", - "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==", - "license": "MIT", - "dependencies": { - "@walletconnect/environment": "^1.0.1", - "@walletconnect/jsonrpc-types": "^1.0.3", - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/jsonrpc-utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@walletconnect/jsonrpc-ws-connection": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.16.tgz", - "integrity": "sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==", - "license": "MIT", - "dependencies": { - "@walletconnect/jsonrpc-utils": "^1.0.6", - "@walletconnect/safe-json": "^1.0.2", - "events": "^3.3.0", - "ws": "^7.5.1" - } - }, - "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@walletconnect/logger": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-3.0.2.tgz", - "integrity": "sha512-7wR3wAwJTOmX4gbcUZcFMov8fjftY05+5cO/d4cpDD8wDzJ+cIlKdYOXaXfxHLSYeDazMXIsxMYjHYVDfkx+nA==", - "license": "MIT", - "dependencies": { - "@walletconnect/safe-json": "^1.0.2", - "pino": "10.0.0" - } - }, - "node_modules/@walletconnect/relay-api": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.11.tgz", - "integrity": "sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==", - "license": "MIT", - "dependencies": { - "@walletconnect/jsonrpc-types": "^1.0.2" - } - }, - "node_modules/@walletconnect/relay-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.1.0.tgz", - "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", - "license": "MIT", - "dependencies": { - "@noble/curves": "1.8.0", - "@noble/hashes": "1.7.0", - "@walletconnect/safe-json": "^1.0.1", - "@walletconnect/time": "^1.0.2", - "uint8arrays": "^3.0.0" - } - }, - "node_modules/@walletconnect/relay-auth/node_modules/@noble/curves": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.0.tgz", - "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@walletconnect/relay-auth/node_modules/@noble/hashes": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz", - "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@walletconnect/safe-json": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", - "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", - "license": "MIT", - "dependencies": { - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/safe-json/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@walletconnect/sign-client": { - "version": "2.23.7", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.23.7.tgz", - "integrity": "sha512-SX61lzb1bTl/LijlcHQttnoHPBzzoY5mW9ArR6qhFtDNDTS7yr2rcH7rCngxHlYeb4rAYcWLHgbiGSrdKxl/mg==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@walletconnect/core": "2.23.7", - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/logger": "3.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.23.7", - "@walletconnect/utils": "2.23.7", - "events": "3.3.0" - } - }, - "node_modules/@walletconnect/time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", - "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", - "license": "MIT", - "dependencies": { - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/time/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@walletconnect/types": { - "version": "2.23.7", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.23.7.tgz", - "integrity": "sha512-6PAKK+iR2IntmlkCFLMAHjYeIaerCJJYRDmdRimhon0u+aNmQT+HyGM6zxDAth0rdpBD7qEvKP5IXZTE7KFUhw==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "3.0.2", - "events": "3.3.0" - } - }, - "node_modules/@walletconnect/types/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", - "license": "MIT", - "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@walletconnect/types/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@walletconnect/types/node_modules/unstorage": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", - "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", - "license": "MIT", - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^5.0.0", - "destr": "^2.0.5", - "h3": "^1.15.5", - "lru-cache": "^11.2.0", - "node-fetch-native": "^1.6.7", - "ofetch": "^1.5.1", - "ufo": "^1.6.3" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6 || ^7 || ^8", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/functions": "^2.2.12 || ^3.0.0", - "@vercel/kv": "^1 || ^2 || ^3", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/functions": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } - } - }, - "node_modules/@walletconnect/universal-provider": { - "version": "2.23.7", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.23.7.tgz", - "integrity": "sha512-6UicU/Mhr/1bh7MNoajypz7BhigORbHpP1LFTf8FYLQGDqzmqHMqmMH2GDAImtaY2sFTi2jBvc22tLl8VMze/A==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/jsonrpc-http-connection": "1.0.8", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "3.0.2", - "@walletconnect/sign-client": "2.23.7", - "@walletconnect/types": "2.23.7", - "@walletconnect/utils": "2.23.7", - "es-toolkit": "1.44.0", - "events": "3.3.0" - } - }, - "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", - "license": "MIT", - "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@walletconnect/universal-provider/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@walletconnect/universal-provider/node_modules/unstorage": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", - "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", - "license": "MIT", - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^5.0.0", - "destr": "^2.0.5", - "h3": "^1.15.5", - "lru-cache": "^11.2.0", - "node-fetch-native": "^1.6.7", - "ofetch": "^1.5.1", - "ufo": "^1.6.3" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6 || ^7 || ^8", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/functions": "^2.2.12 || ^3.0.0", - "@vercel/kv": "^1 || ^2 || ^3", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/functions": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } - } - }, - "node_modules/@walletconnect/utils": { - "version": "2.23.7", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.23.7.tgz", - "integrity": "sha512-3p38gNrkVcIiQixVrlsWSa66Gjs5PqHOug2TxDgYUVBW5NcKjwQA08GkC6CKBQUfr5iaCtbfy6uZJW1LKSIvWQ==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@msgpack/msgpack": "3.1.3", - "@noble/ciphers": "1.3.0", - "@noble/curves": "1.9.7", - "@noble/hashes": "1.8.0", - "@scure/base": "1.2.6", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "3.0.2", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.23.7", - "@walletconnect/window-getters": "1.0.1", - "@walletconnect/window-metadata": "1.0.1", - "blakejs": "1.2.1", - "detect-browser": "5.3.0", - "ox": "0.9.3", - "uint8arrays": "3.1.1" - } - }, - "node_modules/@walletconnect/utils/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@walletconnect/utils/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@walletconnect/utils/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@walletconnect/utils/node_modules/ox": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.3.tgz", - "integrity": "sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" ], + "dev": true, "license": "MIT", - "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.0.9", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@walletconnect/utils/node_modules/ox/node_modules/@noble/curves": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", - "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@walletconnect/utils/node_modules/unstorage": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", - "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^5.0.0", - "destr": "^2.0.5", - "h3": "^1.15.5", - "lru-cache": "^11.2.0", - "node-fetch-native": "^1.6.7", - "ofetch": "^1.5.1", - "ufo": "^1.6.3" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6 || ^7 || ^8", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/functions": "^2.2.12 || ^3.0.0", - "@vercel/kv": "^1 || ^2 || ^3", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" + "@napi-rs/wasm-runtime": "^0.2.11" }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/functions": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@walletconnect/window-getters": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", - "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/window-getters/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@walletconnect/window-metadata": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", - "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@walletconnect/window-getters": "^1.0.1", - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/window-metadata/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/abitype": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz", - "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==", + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3.22.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } + "optional": true, + "os": [ + "win32" + ] }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4900,23 +2109,22 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/agentkeepalive": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", - "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "license": "MIT", - "optional": true, "dependencies": { - "humanize-ms": "^1.2.1" + "debug": "4" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 6.0.0" } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -4934,6 +2142,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4943,6 +2152,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4954,19 +2164,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -5165,23 +2362,49 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT", - "optional": true + "license": "MIT" }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "node_modules/autoprefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, "engines": { - "node": ">=8.0.0" + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/available-typed-arrays": { "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==", - "dev": true, "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -5203,17 +2426,16 @@ "node": ">=4" } }, - "node_modules/axios-retry": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-4.5.0.tgz", - "integrity": "sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==", - "license": "Apache-2.0", - "optional": true, + "node_modules/axios": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", + "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", + "license": "MIT", "dependencies": { - "is-retry-allowed": "^2.2.0" - }, - "peerDependencies": { - "axios": "0.x || 1.x" + "follow-redirects": "^1.16.0", + "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/axobject-query": { @@ -5233,11 +2455,58 @@ "dev": true, "license": "MIT" }, - "node_modules/base-x": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", - "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", - "license": "MIT" + "node_modules/bare-addon-resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.10.0.tgz", + "integrity": "sha512-sSd0jieRJlDaODOzj0oe0RjFVC1QI0ZIjGIdPkbrTXsdVVtENg14c+lHHAhHwmWCZ2nQlMhy8jA3Y5LYPc/isA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-module-resolve": "^1.10.0", + "bare-semver": "^1.0.0" + }, + "peerDependencies": { + "bare-url": "*" + }, + "peerDependenciesMeta": { + "bare-url": { + "optional": true + } + } + }, + "node_modules/bare-module-resolve": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.12.2.tgz", + "integrity": "sha512-j+hiD5k99qec4KjJvYsI67q5AOBifmy9JG3oeMVxTmvrhn2sIdp8StrUvZu4YNgwTpO+NhniQG16N1ETDe1k5w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-semver": "^1.0.0" + }, + "peerDependencies": { + "bare-url": "*" + }, + "peerDependenciesMeta": { + "bare-url": { + "optional": true + } + } + }, + "node_modules/bare-semver": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.3.tgz", + "integrity": "sha512-HS/A30bi2+PiRJfU6R4+Kp+6KeLSCSByjYM2iiobOKzLAvtu1CT+S8xWfiU7wz0erknjkUoC+yXy108tzIuP5Q==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/base32.js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz", + "integrity": "sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, "node_modules/base64-js": { "version": "1.5.1", @@ -5260,70 +2529,24 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.32.tgz", - "integrity": "sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==", + "version": "2.10.30", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.30.tgz", + "integrity": "sha512-xjOFN16Ha1+Rz4nFYKqHU/LSB+gx/Vi3yQLX7r7sAW+Wa+8hhF2h4pvqTrTMc8+WcDBEunnUurr46Jvv0jk3Vg==", "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/big.js": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", - "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", "license": "MIT", "engines": { "node": "*" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bigjs" - } - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", - "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", - "license": "MIT", - "optional": true - }, - "node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "node_modules/borsh/node_modules/base-x": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", - "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/borsh/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "optional": true, - "dependencies": { - "base-x": "^3.0.2" } }, "node_modules/brace-expansion": { @@ -5350,20 +2573,10 @@ "node": ">=8" } }, - "node_modules/brotli-wasm": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/brotli-wasm/-/brotli-wasm-3.0.1.tgz", - "integrity": "sha512-U3K72/JAi3jITpdhZBqzSUq+DUY697tLxOuFXB+FpAE/Ug+5C3VZrv4uA674EUZHxNAuQ9wETXNqQkxZD6oL4A==", - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=v18.0.0" - } - }, "node_modules/browserslist": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -5380,13 +2593,12 @@ } ], "license": "MIT", - "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.25", - "caniuse-lite": "^1.0.30001754", - "electron-to-chromium": "^1.5.249", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.1.4" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -5395,15 +2607,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/bs58": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", - "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", - "license": "MIT", - "dependencies": { - "base-x": "^5.0.0" - } - }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -5432,7 +2635,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -5451,7 +2653,6 @@ "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==", - "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -5465,7 +2666,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -5488,19 +2688,10 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/caniuse-lite": { - "version": "1.0.30001757", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", - "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", "funding": [ { "type": "opencollective", @@ -5534,48 +2725,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", - "license": "MIT", - "dependencies": { - "readdirp": "^5.0.0" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -5589,6 +2744,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -5601,6 +2757,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -5608,7 +2765,6 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", - "optional": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5616,16 +2772,6 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", - "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=20" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5640,21 +2786,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cookie-es": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", - "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", - "license": "MIT" - }, - "node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -5670,30 +2801,11 @@ "node": ">= 8" } }, - "node_modules/crossws": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", - "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", - "license": "MIT", - "dependencies": { - "uncrypto": "^0.1.3" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/damerau-levenshtein": { @@ -5757,17 +2869,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" - }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -5781,15 +2886,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5801,7 +2897,6 @@ "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==", - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -5833,47 +2928,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "license": "MIT" - }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", - "optional": true, "engines": { "node": ">=0.4.0" } }, - "node_modules/destr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", - "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", - "license": "MIT" - }, - "node_modules/detect-browser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", - "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==", - "license": "MIT" - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -5884,12 +2947,6 @@ "node": ">=8" } }, - "node_modules/dijkstrajs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", - "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", - "license": "MIT" - }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -5907,7 +2964,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "devOptional": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -5919,9 +2975,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.263", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.263.tgz", - "integrity": "sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==", + "version": "1.5.357", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.357.tgz", + "integrity": "sha512-NHlTIQDK8fmVwHwuIzmXYEJ1Ewq3D9wDNc0cWXxDGysP6Pb21giwGNkxiTifyKy/4SoPuN5l6GLP1W9Sv7zB2g==", "dev": true, "license": "ISC" }, @@ -5932,21 +2988,15 @@ "dev": true, "license": "MIT" }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "license": "MIT" - }, "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.23.0.tgz", + "integrity": "sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.3" }, "engines": { "node": ">=10.13.0" @@ -6025,7 +3075,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6035,7 +3084,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6073,7 +3121,6 @@ "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==", - "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -6086,7 +3133,6 @@ "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==", - "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6129,33 +3175,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-toolkit": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", - "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==", - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" - ] - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "license": "MIT", - "optional": true - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "es6-promise": "^4.0.3" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -6180,74 +3199,70 @@ } }, "node_modules/eslint": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", - "dev": true, - "license": "MIT", - "peer": true, - "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.1", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "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", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", + "cross-spawn": "^7.0.2", "debug": "^4.3.2", + "doctrine": "^3.0.0", "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", + "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": "^8.0.0", + "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" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-next": { - "version": "16.0.6", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.0.6.tgz", - "integrity": "sha512-nx0Z2S50TlcSQ2RtyULCff5tlKTwqF/ICh3U9s8C/e2aRXAm1Ootdb7BEHGZmejtJSgsFq8PVFdlWy8BHiz2pg==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.1.1.tgz", + "integrity": "sha512-55nTpVWm3qeuxoQKLOjQVciKZJUphKrNM0fCcQHAIOGl6VFXgaqeMfv0aKJhs7QtcnlAPhNVqsqRfRjeKBPIUA==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "16.0.6", + "@next/eslint-plugin-next": "16.1.1", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", @@ -6371,7 +3386,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -6512,9 +3526,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -6522,7 +3536,7 @@ "estraverse": "^5.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -6541,19 +3555,58 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "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==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "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==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -6605,28 +3658,13 @@ "node": ">=0.10.0" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", "license": "MIT", "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", - "optional": true, - "engines": { - "node": "> 0.1.90" + "node": ">=12.0.0" } }, "node_modules/fast-deep-equal": { @@ -6680,13 +3718,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-stable-stringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", - "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", - "license": "MIT", - "optional": true - }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -6698,16 +3729,16 @@ } }, "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=16.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/fill-range": { @@ -6741,30 +3772,31 @@ } }, "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.4" + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=16" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -6772,7 +3804,6 @@ } ], "license": "MIT", - "optional": true, "engines": { "node": ">=4.0" }, @@ -6786,7 +3817,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7" @@ -6803,7 +3833,6 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", - "optional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -6815,6 +3844,20 @@ "node": ">= 6" } }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/framer-motion": { "version": "12.38.0", "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.38.0.tgz", @@ -6842,11 +3885,17 @@ } } }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "devOptional": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6903,20 +3952,10 @@ "node": ">=6.9.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "devOptional": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -6941,7 +3980,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "devOptional": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -6979,7 +4017,29 @@ "resolve-pkg-maps": "^1.0.0" }, "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { @@ -6996,13 +4056,16 @@ } }, "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7029,7 +4092,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7052,23 +4114,6 @@ "dev": true, "license": "MIT" }, - "node_modules/h3": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.6.tgz", - "integrity": "sha512-oi15ESLW5LRthZ+qPCi5GNasY/gvynSKUQxgiovrY63bPAtG59wtM+LSrlcwvOHAXzGrXVLnI97brbkdPF9WoQ==", - "license": "MIT", - "dependencies": { - "cookie-es": "^1.2.2", - "crossws": "^0.3.5", - "defu": "^6.1.4", - "destr": "^2.0.5", - "iron-webcrypto": "^1.2.1", - "node-mock-http": "^1.0.4", - "radix3": "^1.1.2", - "ufo": "^1.6.3", - "uncrypto": "^0.1.3" - } - }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -7096,7 +4141,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -7125,7 +4169,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7138,7 +4181,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "devOptional": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -7154,7 +4196,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "devOptional": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -7180,22 +4221,19 @@ "hermes-estree": "0.25.1" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "node_modules/https-proxy-agent": { + "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==", "license": "MIT", - "optional": true, "dependencies": { - "ms": "^2.0.0" + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", - "license": "Apache-2.0" - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -7253,6 +4291,24 @@ "node": ">=0.8.19" } }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", @@ -7268,15 +4324,6 @@ "node": ">= 0.4" } }, - "node_modules/iron-webcrypto": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", - "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/brc-dd" - } - }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -7348,13 +4395,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "license": "MIT", - "optional": true - }, "node_modules/is-bun-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", @@ -7382,7 +4422,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7468,15 +4507,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-fullwidth-code-point": { - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-generator-function": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", @@ -7563,6 +4593,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -7582,19 +4622,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-retry-allowed": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", - "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -7663,7 +4690,6 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" @@ -7725,7 +4751,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, "license": "MIT" }, "node_modules/isexe": { @@ -7735,31 +4760,6 @@ "dev": true, "license": "ISC" }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "license": "MIT", - "optional": true, - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/isows": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", - "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -7778,89 +4778,16 @@ "node": ">= 0.4" } }, - "node_modules/jayson": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.3.0.tgz", - "integrity": "sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/connect": "^3.4.33", - "@types/node": "^12.12.54", - "@types/ws": "^7.4.4", - "commander": "^2.20.3", - "delay": "^5.0.0", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "isomorphic-ws": "^4.0.1", - "json-stringify-safe": "^5.0.1", - "stream-json": "^1.9.1", - "uuid": "^8.3.2", - "ws": "^7.5.10" - }, - "bin": { - "jayson": "bin/jayson.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jayson/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "license": "MIT", - "optional": true - }, - "node_modules/jayson/node_modules/commander": { - "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==", - "license": "MIT", - "optional": true - }, - "node_modules/jayson/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", "dev": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" } }, - "node_modules/jose": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.1.tgz", - "integrity": "sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==", - "license": "MIT", - "optional": true, - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7915,13 +4842,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "license": "ISC", - "optional": true - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -7961,12 +4881,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/keyvaluestorage-interface": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", - "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==", - "license": "MIT" - }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", @@ -8002,9 +4916,9 @@ } }, "node_modules/lightningcss": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -8018,23 +4932,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.30.2", - "lightningcss-darwin-arm64": "1.30.2", - "lightningcss-darwin-x64": "1.30.2", - "lightningcss-freebsd-x64": "1.30.2", - "lightningcss-linux-arm-gnueabihf": "1.30.2", - "lightningcss-linux-arm64-gnu": "1.30.2", - "lightningcss-linux-arm64-musl": "1.30.2", - "lightningcss-linux-x64-gnu": "1.30.2", - "lightningcss-linux-x64-musl": "1.30.2", - "lightningcss-win32-arm64-msvc": "1.30.2", - "lightningcss-win32-x64-msvc": "1.30.2" + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", "cpu": [ "arm64" ], @@ -8053,9 +4967,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", "cpu": [ "arm64" ], @@ -8074,9 +4988,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "cpu": [ "x64" ], @@ -8095,9 +5009,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", "cpu": [ "x64" ], @@ -8116,9 +5030,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", "cpu": [ "arm" ], @@ -8137,9 +5051,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", "cpu": [ "arm64" ], @@ -8158,9 +5072,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", "cpu": [ "arm64" ], @@ -8179,9 +5093,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "cpu": [ "x64" ], @@ -8200,9 +5114,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ "x64" ], @@ -8221,9 +5135,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "cpu": [ "arm64" ], @@ -8242,9 +5156,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" ], @@ -8262,37 +5176,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/lit": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.0.tgz", - "integrity": "sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==", - "license": "BSD-3-Clause", - "dependencies": { - "@lit/reactive-element": "^2.1.0", - "lit-element": "^4.2.0", - "lit-html": "^3.3.0" - } - }, - "node_modules/lit-element": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.2.tgz", - "integrity": "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==", - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.5.0", - "@lit/reactive-element": "^2.1.0", - "lit-html": "^3.3.0" - } - }, - "node_modules/lit-html": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", - "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", - "license": "BSD-3-Clause", - "dependencies": { - "@types/trusted-types": "^2.0.2" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -8340,12 +5223,12 @@ } }, "node_modules/lucide-react": { - "version": "0.577.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.577.0.tgz", - "integrity": "sha512-4LjoFv2eEPwYDPg/CUdBJQSDfPyzXCRrVW1X7jrx/trgxnxkHFjnVZINbzvzxjN70dxychOfg+FTYwBiS3pQ5A==", + "version": "0.300.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.300.0.tgz", + "integrity": "sha512-rQxUUCmWAvNLoAsMZ5j04b2+OJv6UuNLYMY7VK0eVlm4aTwUEjEEHc09/DipkNIlhXUSDn2xoyIzVT0uh7dRsg==", "license": "ISC", "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" } }, "node_modules/magic-string": { @@ -8362,24 +5245,11 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -8409,7 +5279,6 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.6" } @@ -8419,7 +5288,6 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", - "optional": true, "dependencies": { "mime-db": "1.52.0" }, @@ -8450,26 +5318,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mipd": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mipd/-/mipd-0.0.7.tgz", - "integrity": "sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/motion-dom": { "version": "12.38.0", "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.38.0.tgz", @@ -8489,19 +5337,12 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "devOptional": true, "license": "MIT" }, - "node_modules/multiformats": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", - "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", - "license": "(Apache-2.0 AND MIT)" - }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "funding": [ { "type": "github", @@ -8592,6 +5433,16 @@ } } }, + "node_modules/next-themes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", + "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18", + "react-dom": "^16.8 || ^17 || ^18" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -8620,66 +5471,13 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/node-fetch": { - "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==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch-native": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", - "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", - "license": "MIT" - }, - "node_modules/node-gyp-build": { - "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==", - "license": "MIT", - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-mock-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", - "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", - "license": "MIT" - }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.44", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", + "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", "dev": true, "license": "MIT" }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -8803,117 +5601,50 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ofetch": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", - "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", - "license": "MIT", - "dependencies": { - "destr": "^2.0.5", - "node-fetch-native": "^1.6.7", - "ufo": "^1.6.1" - } - }, - "node_modules/on-exit-leak-free": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", - "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ox": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.14.0.tgz", - "integrity": "sha512-WLOB7IKnmI3Ol6RAqY7CJdZKl8QaI44LN91OGF1061YIeN6bL5IsFcdp7+oQShRyamE/8fW/CBRWhJAOzI35Dw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "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" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" } }, - "node_modules/ox/node_modules/@noble/curves": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", - "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, "license": "MIT", "dependencies": { - "@noble/hashes": "1.8.0" + "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" }, "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">= 0.8.0" } }, - "node_modules/ox/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">= 0.4" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/p-limit": { @@ -8948,15 +5679,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8974,11 +5696,22 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -9006,6 +5739,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -9014,66 +5748,19 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pino": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.0.0.tgz", - "integrity": "sha512-eI9pKwWEix40kfvSzqEP6ldqOoBIN7dwD/o91TY5z8vQI12sAffpR/pOqAD1IVVwIVHDpHjkq0joBPdJD0rafA==", - "license": "MIT", - "dependencies": { - "atomic-sleep": "^1.0.0", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^2.0.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "slow-redact": "^0.3.0", - "sonic-boom": "^4.0.1", - "thread-stream": "^3.0.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/pino-abstract-transport": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", - "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", - "license": "MIT", - "dependencies": { - "split2": "^4.0.0" - } - }, - "node_modules/pino-std-serializers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", - "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", - "license": "MIT" - }, - "node_modules/pngjs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", - "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", "dev": true, "funding": [ { @@ -9091,7 +5778,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -9099,16 +5786,12 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/preact": { - "version": "10.24.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.2.tgz", - "integrity": "sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==", - "license": "MIT", - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -9120,22 +5803,6 @@ "node": ">= 0.8.0" } }, - "node_modules/process-warning": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -9148,18 +5815,14 @@ "react-is": "^16.13.1" } }, - "node_modules/proxy-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", - "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", - "license": "MIT" - }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "license": "MIT", - "optional": true + "engines": { + "node": ">=10" + } }, "node_modules/punycode": { "version": "2.3.1", @@ -9171,24 +5834,6 @@ "node": ">=6" } }, - "node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -9210,39 +5855,34 @@ ], "license": "MIT" }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "license": "MIT" - }, - "node_modules/radix3": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", - "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", - "license": "MIT" + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } }, "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.0" + "react": "^19.2.3" } }, "node_modules/react-is": { @@ -9252,28 +5892,6 @@ "dev": true, "license": "MIT" }, - "node_modules/readdirp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", - "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", - "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - } - }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -9318,21 +5936,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/require-directory": { - "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==", - "license": "MIT", + "node_modules/require-addon": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.2.0.tgz", + "integrity": "sha512-VNPDZlYgIYQwWp9jMTzljx+k0ZtatKlcvOhktZ/anNPI3dQ9NXk7cq2U4iJ1wd9IrytRnYhyEocFWbkdPb+MYA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-addon-resolve": "^1.3.0" + }, "engines": { - "node": ">=0.10.0" + "bare": ">=1.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "license": "ISC" - }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", @@ -9385,52 +6001,21 @@ "node": ">=0.10.0" } }, - "node_modules/rpc-websockets": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.3.5.tgz", - "integrity": "sha512-4mAmr+AEhPYJ9TmDtxF3r3ZcbWy7W8kvZ4PoZYw/Xgp2J7WixjwTgiQZsoTDvch5nimmg3Ay6/0Kuh9oIvVs9A==", - "license": "LGPL-3.0-only", - "optional": true, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", "dependencies": { - "@swc/helpers": "^0.5.11", - "@types/uuid": "^10.0.0", - "@types/ws": "^8.2.2", - "buffer": "^6.0.3", - "eventemitter3": "^5.0.1", - "uuid": "^11.0.0", - "ws": "^8.5.0" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/kozjak" + "glob": "^7.1.3" }, - "optionalDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^6.0.0" - } - }, - "node_modules/rpc-websockets/node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/rpc-websockets/node_modules/uuid": { - "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==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "optional": true, "bin": { - "uuid": "dist/esm/bin/uuid" + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-parallel": { @@ -9495,8 +6080,7 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/safe-push-apply": { "version": "1.0.0", @@ -9533,15 +6117,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", @@ -9558,17 +6133,10 @@ "semver": "bin/semver.js" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "license": "ISC" - }, "node_modules/set-function-length": { "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==", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -9613,6 +6181,26 @@ "node": ">= 0.4" } }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/sharp": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", @@ -9770,19 +6358,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slow-redact": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/slow-redact/-/slow-redact-0.3.2.tgz", - "integrity": "sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==", - "license": "MIT" - }, - "node_modules/sonic-boom": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", - "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", + "node_modules/sodium-native": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.3.3.tgz", + "integrity": "sha512-OnxSlN3uyY8D0EsLHpmm2HOFmKddQVvEMmsakCrXUzSd8kjjbzL413t4ZNF3n0UxSwNgwTyUvkmZHTfuCeiYSw==", "license": "MIT", + "optional": true, "dependencies": { - "atomic-sleep": "^1.0.0" + "require-addon": "^1.1.0" } }, "node_modules/source-map-js": { @@ -9794,15 +6377,6 @@ "node": ">=0.10.0" } }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, "node_modules/stable-hash": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", @@ -9824,43 +6398,6 @@ "node": ">= 0.4" } }, - "node_modules/stream-chain": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", - "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", - "license": "BSD-3-Clause", - "optional": true - }, - "node_modules/stream-json": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", - "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "stream-chain": "^2.2.5" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, "node_modules/string.prototype.includes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", @@ -9978,6 +6515,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -10032,16 +6570,6 @@ } } }, - "node_modules/superstruct": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", - "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10069,9 +6597,9 @@ } }, "node_modules/tailwind-merge": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz", - "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.1.tgz", + "integrity": "sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ==", "license": "MIT", "funding": { "type": "github", @@ -10079,16 +6607,16 @@ } }, "node_modules/tailwindcss": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", - "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", + "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", "dev": true, "license": "MIT" }, "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", "engines": { @@ -10099,20 +6627,12 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/text-encoding-utf-8": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", - "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==", - "optional": true - }, - "node_modules/thread-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", - "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", - "license": "MIT", - "dependencies": { - "real-require": "^0.2.0" - } + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" }, "node_modules/tinyglobby": { "version": "0.2.15", @@ -10155,7 +6675,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -10163,6 +6682,20 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -10176,10 +6709,10 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", "license": "MIT" }, "node_modules/ts-api-utils": { @@ -10227,6 +6760,12 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -10240,11 +6779,23 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "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==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -10322,9 +6873,8 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10352,24 +6902,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/ufo": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", - "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", - "license": "MIT" - }, - "node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/unbox-primitive": { @@ -10391,17 +6926,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/uncrypto": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", - "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", - "license": "MIT" - }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/unrs-resolver": { @@ -10440,9 +6969,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "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==", "dev": true, "funding": [ { @@ -10480,284 +7009,11 @@ "punycode": "^2.1.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", - "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/utf-8-validate": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.6.tgz", - "integrity": "sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/valtio": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/valtio/-/valtio-2.1.7.tgz", - "integrity": "sha512-DwJhCDpujuQuKdJ2H84VbTjEJJteaSmqsuUltsfbfdbotVfNeTE4K/qc/Wi57I9x8/2ed4JNdjEna7O6PfavRg==", - "license": "MIT", - "dependencies": { - "proxy-compare": "^3.0.1" - }, - "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "react": ">=18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/viem": { - "version": "2.47.1", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.47.1.tgz", - "integrity": "sha512-frlK109+X5z2vlZeIGKa6Rxev6CcIpumV/VVhaIPc/QFotiB6t/CgUwkMlYfr4F2YNBZZ2l6jguWz2sY1XrQHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "peer": true, - "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.14.0", - "ws": "8.18.3" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/viem/node_modules/@noble/curves": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", - "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/viem/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/viem/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/wagmi": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/wagmi/-/wagmi-3.5.0.tgz", - "integrity": "sha512-39uiY6Vkc28NiAHrxJzVTodoRgSVGG97EewwUxRf+jcFMTe8toAnaM8pJZA3Zw/6snMg4tSgWLJAtMnOacLe7w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@wagmi/connectors": "7.2.1", - "@wagmi/core": "3.4.0", - "use-sync-external-store": "1.4.0" - }, - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "@tanstack/react-query": ">=5.0.0", - "react": ">=18", - "typescript": ">=5.7.3", - "viem": "2.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/wagmi/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "optional": true, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/wagmi/node_modules/@wagmi/connectors": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-7.2.1.tgz", - "integrity": "sha512-/tyDepUMDM8eNzNX3ofjqHNRFZ6XcZ3u0+cQp5x0/LHCpMA8tRh7A1/e7dTrYiIJeL7iLgHzfHUXCsU02OKMLQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "@base-org/account": "^2.5.1", - "@coinbase/wallet-sdk": "^4.3.6", - "@metamask/sdk": "~0.33.1", - "@safe-global/safe-apps-provider": "~0.18.6", - "@safe-global/safe-apps-sdk": "^9.1.0", - "@wagmi/core": "3.4.0", - "@walletconnect/ethereum-provider": "^2.21.1", - "porto": "~0.2.35", - "typescript": ">=5.7.3", - "viem": "2.x" - }, - "peerDependenciesMeta": { - "@base-org/account": { - "optional": true - }, - "@coinbase/wallet-sdk": { - "optional": true - }, - "@metamask/sdk": { - "optional": true - }, - "@safe-global/safe-apps-provider": { - "optional": true - }, - "@safe-global/safe-apps-sdk": { - "optional": true - }, - "@walletconnect/ethereum-provider": { - "optional": true - }, - "porto": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/wagmi/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wagmi/node_modules/ox": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz", - "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } + "node_modules/urijs": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", + "license": "MIT" }, "node_modules/which": { "version": "2.0.2", @@ -10842,17 +7098,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "license": "ISC" - }, "node_modules/which-typed-array": { "version": "1.1.19", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -10880,46 +7129,11 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" }, "node_modules/yallist": { @@ -10929,93 +7143,6 @@ "dev": true, "license": "ISC" }, - "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -11033,9 +7160,8 @@ "version": "4.1.13", "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", - "devOptional": true, + "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -11052,36 +7178,6 @@ "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } - }, - "node_modules/zustand": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.3.tgz", - "integrity": "sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "immer": ">=9.0.6", - "react": ">=18.0.0", - "use-sync-external-store": ">=1.2.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - }, - "use-sync-external-store": { - "optional": true - } - } } } } diff --git a/frontend/package.json b/frontend/package.json index 6a6a116..55f5fcd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,35 +1,35 @@ { - "name": "smartx-frontend", + "name": "epochsend-frontend", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", - "lint": "eslint" + "lint": "next lint" }, "dependencies": { - "@reown/appkit": "^1.8.19", - "@reown/appkit-adapter-wagmi": "^1.8.19", - "@tanstack/react-query": "^5.90.21", - "clsx": "^2.1.1", + "@stellar/freighter-api": "^2.0.0", + "@stellar/stellar-sdk": "^12.0.0", + "clsx": "^2.1.0", "framer-motion": "^12.38.0", - "lucide-react": "^0.577.0", - "next": "^16.1.1", - "react": "19.2.0", - "react-dom": "19.2.0", - "tailwind-merge": "^3.5.0", - "viem": "^2.47.1", - "wagmi": "^3.5.0" + "lucide-react": "^0.300.0", + "next": "16.1.1", + "next-themes": "^0.3.0", + "react": "19.2.3", + "react-dom": "19.2.3", + "tailwind-merge": "^2.2.0" }, "devDependencies": { - "@tailwindcss/postcss": "^4", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "eslint": "^9", - "eslint-config-next": "16.0.6", - "tailwindcss": "^4", - "typescript": "^5" + "@tailwindcss/postcss": "^4.3.0", + "@types/node": "^20.10.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "autoprefixer": "^10.4.0", + "eslint": "^8.0.0", + "eslint-config-next": "16.1.1", + "postcss": "^8.5.15", + "tailwindcss": "^4.3.0", + "typescript": "^5.0.0" } } diff --git a/frontend/public/epochsend-banner.png b/frontend/public/epochsend-banner.png new file mode 100644 index 0000000..175b3ba Binary files /dev/null and b/frontend/public/epochsend-banner.png differ diff --git a/frontend/public/epochsend-logo.png b/frontend/public/epochsend-logo.png new file mode 100644 index 0000000..3865232 Binary files /dev/null and b/frontend/public/epochsend-logo.png differ diff --git a/frontend/public/epochsend.svg b/frontend/public/epochsend.svg new file mode 100644 index 0000000..d318fb8 --- /dev/null +++ b/frontend/public/epochsend.svg @@ -0,0 +1,463 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1024" height="1024"> +<path d="M0 0 C0.53367187 0.32484375 1.06734375 0.6496875 1.6171875 0.984375 C4.58292664 2.24846053 6.90929974 2.26580197 10.125 2.25 C11.17945313 2.25515625 12.23390625 2.2603125 13.3203125 2.265625 C16.15175355 2.27085168 16.15175355 2.27085168 18 0 C18.66 0.66 19.32 1.32 20 2 C23.09926819 1.67801034 23.09926819 1.67801034 26 1 C26 1.66 26 2.32 26 3 C30.12973628 2.43260132 30.12973628 2.43260132 34 1 C34 1.66 34 2.32 34 3 C36.47266765 2.65555119 36.47266765 2.65555119 39 2 C39.33 1.34 39.66 0.68 40 0 C40.66 0 41.32 0 42 0 C42.33 0.66 42.66 1.32 43 2 C46.02934491 2.65772428 46.02934491 2.65772428 49 3 C49.33 2.01 49.66 1.02 50 0 C50 0.66 50 1.32 50 2 C50.74765625 1.98839844 51.4953125 1.97679687 52.265625 1.96484375 C53.25046875 1.95582031 54.2353125 1.94679687 55.25 1.9375 C56.71179688 1.92009766 56.71179688 1.92009766 58.203125 1.90234375 C60.65758678 1.98804423 62.66168914 2.29293934 65 3 C65.33 2.34 65.66 1.68 66 1 C66 1.66 66 2.32 66 3 C66.96486328 2.85691406 66.96486328 2.85691406 67.94921875 2.7109375 C79.17847699 1.33331095 90.52899205 2.32982004 100 9 C108.84576528 17.03324265 113.79662079 26.75360897 114.375 38.6875 C114.09825932 49.91279388 109.84451152 58.99485708 102.15234375 66.8984375 C94.5091303 74.10098855 86.25008596 77.09585773 75.81803894 77.15821838 C73.95240799 77.17290161 73.95240799 77.17290161 72.04908752 77.18788147 C70.67880287 77.19378484 69.30851782 77.19959534 67.93823242 77.20532227 C66.48923466 77.21490679 65.04023967 77.22491721 63.59124756 77.23532104 C59.66400065 77.26231395 55.73674179 77.28335384 51.80945373 77.30332303 C47.70280652 77.32521728 43.59619591 77.35258912 39.48957825 77.37937927 C31.71595998 77.42925969 23.94232135 77.47421575 16.16866332 77.51740164 C7.31742198 77.56681379 -1.53378263 77.62171715 -10.38498843 77.67708123 C-28.58995817 77.79082987 -46.79496259 77.89768437 -65 78 C-65 78.33 -65 78.66 -65 79 C-69.33333333 79 -73.66666667 79 -78 79 C-78 78.34 -78 77.68 -78 77 C-87.43356323 77.06181855 -96.86683987 77.13934397 -106.30011368 77.23571491 C-110.68264093 77.28001934 -115.06508368 77.31935715 -119.44775391 77.34643555 C-151.73237604 77.28756829 -151.73237604 77.28756829 -183.25 83.6875 C-184.065896 83.94023682 -184.88179199 84.19297363 -185.72241211 84.45336914 C-193.92879317 87.1110767 -201.51257482 90.74448068 -209 95 C-210.01707031 95.5775 -211.03414062 96.155 -212.08203125 96.75 C-218.00475082 100.32848231 -223.01098821 104.4921311 -228.00390625 109.27734375 C-230 111 -230 111 -232 111 C-232.25652344 111.58136719 -232.51304687 112.16273438 -232.77734375 112.76171875 C-234.11146811 115.20406142 -235.62072773 116.82365447 -237.5625 118.8125 C-248.29364409 130.69480319 -254.47007847 145.1503302 -258.25 160.5625 C-258.41346924 161.22233887 -258.57693848 161.88217773 -258.74536133 162.56201172 C-261.66414199 175.34237933 -261.15429568 188.58819554 -261.16113281 201.61352539 C-261.16576922 203.68296394 -261.17079497 205.75240164 -261.17617798 207.82183838 C-261.18922425 213.41520003 -261.19573159 219.00854972 -261.20018864 224.60192418 C-261.20313182 228.10577187 -261.20723889 231.60961638 -261.21169281 235.11346245 C-261.22534692 246.10346461 -261.23502391 257.0934594 -261.2388947 268.08346945 C-261.24337122 280.71940943 -261.26090914 293.35524101 -261.2898953 305.99114805 C-261.31159059 315.79288196 -261.32160314 325.59458554 -261.32293582 335.39634317 C-261.32397818 341.23466485 -261.32976396 347.07288435 -261.34775543 352.9111805 C-261.36437262 358.40982978 -261.36632618 363.90830154 -261.35761642 369.40696716 C-261.35685331 371.4098604 -261.3610912 373.41276374 -261.37107468 375.41563225 C-261.47677532 397.96770587 -259.36411904 418.12748529 -246 437 C-245.278125 438.03125 -244.55625 439.0625 -243.8125 440.125 C-230.57624709 455.09715493 -209.96655075 461.41026606 -190.65551758 462.69335938 C-181.29638559 463.21165435 -171.90551216 463.0488153 -162.53564453 462.96313477 C-154.96448028 462.90765023 -147.52490458 463.11250303 -140 464 C-140.33 463.01 -140.66 462.02 -141 461 C-141.07732524 458.58298762 -141.09814747 456.19748685 -141.06933594 453.78149414 C-141.06454727 453.04930664 -141.05975861 452.31711914 -141.05482483 451.56274414 C-141.03711462 449.13679394 -141.01135694 446.71102006 -140.984375 444.28515625 C-140.96767099 442.59183289 -140.95100902 440.89850911 -140.93438721 439.20518494 C-140.8978842 435.64837149 -140.85667114 432.09164416 -140.81298828 428.53491211 C-140.75832761 424.00626051 -140.72158334 419.47765913 -140.68935776 414.94880009 C-140.66128919 411.44563925 -140.62022081 407.94271335 -140.57575226 404.43972588 C-140.55671654 402.77224852 -140.54234014 401.10471053 -140.53295135 399.43715096 C-140.43239172 383.19072604 -138.38669076 368.75842796 -127 356.25 C-119.99667368 349.61652566 -109.76414586 343.87155816 -99.94704819 343.87695217 C-99.1448698 343.87496112 -98.34269142 343.87297007 -97.5162046 343.87091869 C-96.64071975 343.87383153 -95.7652349 343.87674437 -94.86322021 343.87974548 C-93.46151876 343.87846385 -93.46151876 343.87846385 -92.0315001 343.87715632 C-88.89305102 343.87550618 -85.75465511 343.88101532 -82.61621094 343.88647461 C-80.36934409 343.88675661 -78.12247715 343.8865985 -75.87561035 343.8860321 C-69.76859593 343.88574462 -63.66160105 343.89163345 -57.55459118 343.89860606 C-51.17508734 343.90484775 -44.79558308 343.90544405 -38.41607666 343.90663147 C-27.70609127 343.90938869 -16.99611445 343.91563937 -6.28613281 343.92456055 C4.74511682 343.93373978 15.7763645 343.94081812 26.80761719 343.94506836 C27.82759333 343.94546244 27.82759333 343.94546244 28.86817506 343.94586449 C32.27946076 343.94716953 35.69074647 343.94843324 39.10203218 343.94967639 C67.40135974 343.96004284 95.70067948 343.97773013 124 344 C124 344.66 124 345.32 124 346 C124.67546875 346.33773438 125.3509375 346.67546875 126.046875 347.0234375 C128.69791667 348.34895833 131.34895833 349.67447917 134 351 C134.70769531 351.309375 135.41539062 351.61875 136.14453125 351.9375 C139.72682554 353.98883484 141.69880876 357.66090034 144 361 C144.45890625 361.63292969 144.9178125 362.26585937 145.390625 362.91796875 C151.35176201 371.62625625 152.45031985 381.21331553 152.38818359 391.5390625 C152.39344055 392.63490662 152.39869751 393.73075073 152.40411377 394.85980225 C152.41721617 398.44835055 152.40861014 402.03644792 152.3984375 405.625 C152.40046103 408.13883549 152.40337479 410.65267041 152.40713501 413.16650391 C152.41154516 418.42159546 152.40545997 423.67657183 152.39111328 428.93164062 C152.37479096 434.97964732 152.38008106 441.02735045 152.3965925 447.07534981 C152.41192444 452.92890979 152.41020313 458.7823558 152.4014473 464.63592529 C152.39945505 467.11090132 152.40187005 469.58588517 152.40888596 472.06085205 C152.41655847 475.5277519 152.40481472 478.99407991 152.38818359 482.4609375 C152.39425629 483.47009216 152.40032898 484.47924683 152.40658569 485.51898193 C152.28281596 499.54179812 147.6115323 510.75488829 138.10546875 520.9921875 C129.56990142 529.13185653 119.91538314 531.44047301 108.44009399 531.68040466 C107.30712186 531.71353553 106.17414973 531.7466664 105.00684512 531.78080124 C91.71117623 532.13066566 78.41141767 532.13584065 65.11213899 532.11606562 C61.37568323 532.11165846 57.63922863 532.11321465 53.902771 532.1139679 C47.46219841 532.11448677 41.02163613 532.11140746 34.58106613 532.10573006 C25.26962001 532.0975274 15.95817876 532.09499096 6.64672942 532.09374207 C-8.46842668 532.09156515 -23.58357732 532.08494236 -38.69873047 532.07543945 C-53.3627927 532.06622986 -68.02685343 532.05916648 -82.69091797 532.05493164 C-83.5981078 532.05466892 -84.50529764 532.05440619 -85.43997808 532.05413551 C-89.99206738 532.05283027 -94.54415669 532.05156661 -99.096246 532.05032361 C-136.73083452 532.03999345 -174.36541683 532.02241265 -212 532 C-212 531.34 -212 530.68 -212 530 C-213.5159375 530.0928125 -213.5159375 530.0928125 -215.0625 530.1875 C-220.71093142 530.21792243 -226.12210588 528.85589588 -231.609375 527.65625 C-235.07892837 526.87331873 -235.07892837 526.87331873 -239 527 C-239 526.34 -239 525.68 -239 525 C-240.13953125 524.74476563 -241.2790625 524.48953125 -242.453125 524.2265625 C-247.10467431 523.05856133 -251.38085833 521.33423303 -255.75 519.375 C-256.5349585 519.02381104 -257.31991699 518.67262207 -258.12866211 518.31079102 C-264.93929986 515.17863726 -270.96623226 511.46844639 -277 507 C-277.76183594 506.45988281 -278.52367187 505.91976563 -279.30859375 505.36328125 C-308.08636301 484.17750816 -324.28512579 449.90138569 -330.65234375 415.47265625 C-332.00418316 406.54262222 -332.37799208 397.61090483 -332.65893555 388.59155273 C-332.70594604 387.15984741 -332.70594604 387.15984741 -332.75390625 385.69921875 C-332.78979858 384.41277466 -332.78979858 384.41277466 -332.82641602 383.1003418 C-332.87361157 380.9427562 -332.87361157 380.9427562 -334 379 C-333.34 379 -332.68 379 -332 379 C-332.16371094 378.01902344 -332.32742188 377.03804687 -332.49609375 376.02734375 C-333.09159852 371.85881034 -333.11249575 367.76598864 -333.0625 363.5625 C-333.05798828 362.83095703 -333.05347656 362.09941406 -333.04882812 361.34570312 C-333.03718148 359.56376581 -333.01925191 357.78187137 -333 356 C-334.07217773 355.99635437 -335.14435547 355.99270874 -336.24902344 355.98895264 C-346.37141909 355.95195253 -356.49351194 355.89412494 -366.61567688 355.81609726 C-371.81915517 355.77664994 -377.02246493 355.74444792 -382.22607422 355.72900391 C-387.251322 355.71381936 -392.27610635 355.6793416 -397.30114746 355.63169098 C-399.214762 355.61689577 -401.12844271 355.60896006 -403.04211426 355.60811615 C-405.73039703 355.60573913 -408.41740669 355.57860101 -411.10546875 355.54589844 C-411.89022079 355.5509288 -412.67497284 355.55595917 -413.48350525 355.56114197 C-418.99886148 355.4578699 -423.43095765 354.1808106 -428 351 C-430.7636989 347.02718283 -431.70023436 343.80160702 -431 339 C-428.873844 335.12735871 -426.8125722 332.25200828 -423 330 C-419.93743896 329.63923645 -419.93743896 329.63923645 -416.30371094 329.65942383 C-415.63988403 329.65898575 -414.97605713 329.65854767 -414.29211426 329.65809631 C-412.10589818 329.66018029 -409.9204565 329.68349145 -407.734375 329.70703125 C-406.2155194 329.71262863 -404.69665837 329.71689806 -403.17779541 329.71989441 C-399.18608568 329.7313321 -395.194705 329.76078973 -391.203125 329.79400635 C-387.12764944 329.8247306 -383.05212056 329.83840476 -378.9765625 329.85351562 C-370.98422423 329.88566072 -362.99215309 329.93684376 -355 330 C-355 329.34 -355 328.68 -355 328 C-353.98486328 328.24363281 -353.98486328 328.24363281 -352.94921875 328.4921875 C-349.52583927 329.08164357 -346.28540408 329.13231908 -342.8125 329.125 C-341.58144531 329.12757813 -340.35039062 329.13015625 -339.08203125 329.1328125 C-336.08753603 329.21388949 -336.08753603 329.21388949 -334 328 C-333.34786708 325.97536745 -333.34786708 325.97536745 -333 324 C-333.33 324 -333.66 324 -334 324 C-334.02703381 322.06257659 -334.04641125 320.12504521 -334.0625 318.1875 C-334.07410156 317.10855469 -334.08570313 316.02960938 -334.09765625 314.91796875 C-334 312 -334 312 -333 309 C-332.93059361 307.0010961 -332.91544132 304.99998686 -332.9375 303 C-332.94652344 301.948125 -332.95554687 300.89625 -332.96484375 299.8125 C-332.97644531 298.884375 -332.98804688 297.95625 -333 297 C-333 293.88772805 -332.54372951 291.05847848 -332 288 C-332.66 288 -333.32 288 -334 288 C-333.7215625 286.4221875 -333.7215625 286.4221875 -333.4375 284.8125 C-332.8217949 281.22070764 -332.8217949 281.22070764 -333.50390625 278.60546875 C-334.21620737 274.86448572 -333.61985728 271.46975432 -333.15625 267.71875 C-332.87664383 265.08688232 -332.87664383 265.08688232 -333.48413086 262.92114258 C-334.21418471 258.78716515 -334.12248103 254.73239782 -334.09765625 250.54296875 C-334.0962413 249.64000565 -334.09482635 248.73704254 -334.09336853 247.80671692 C-334.08778823 244.93361037 -334.07523934 242.06058284 -334.0625 239.1875 C-334.05748245 237.23502717 -334.05291999 235.28255311 -334.04882812 233.33007812 C-334.03782525 228.55335515 -334.02057418 223.77669096 -334 219 C-333.34 219 -332.68 219 -332 219 C-332.185625 218.071875 -332.37125 217.14375 -332.5625 216.1875 C-333 213 -333 213 -332 210 C-333.07875648 210.02545395 -333.07875648 210.02545395 -334.17930603 210.05142212 C-340.98986593 210.21016421 -347.800585 210.35828515 -354.61162472 210.49477577 C-358.1124162 210.56529702 -361.61302586 210.63977929 -365.11352539 210.72363281 C-369.1471031 210.82007601 -373.18086395 210.89871577 -377.21484375 210.9765625 C-378.45894516 211.00875885 -379.70304657 211.0409552 -380.98484802 211.0741272 C-397.17899852 211.35083457 -397.17899852 211.35083457 -403 206.5 C-406.10915506 202.61355618 -406.33983698 200.12049121 -406.28515625 195.25390625 C-405.8601083 191.89428066 -404.42183315 190.28728686 -402 188 C-401.14873535 187.19405396 -401.14873535 187.19405396 -400.28027344 186.37182617 C-397.13133803 184.47740775 -394.91496343 184.74971668 -391.265625 184.92578125 C-389.32236328 185.00795898 -389.32236328 185.00795898 -387.33984375 185.09179688 C-385.97654416 185.16502385 -384.61326306 185.23859594 -383.25 185.3125 C-381.87115926 185.37579264 -380.4922522 185.43765757 -379.11328125 185.49804688 C-375.74127038 185.6513201 -372.37062779 185.81918184 -369 186 C-369 185.34 -369 184.68 -369 184 C-368.01 184.33 -367.02 184.66 -366 185 C-363.73933418 185.07208181 -361.47655758 185.08386071 -359.21484375 185.0625 C-358.55795059 185.05871338 -357.90105743 185.05492676 -357.22425842 185.05102539 C-355.12860529 185.0388219 -353.03309051 185.0201892 -350.9375 185 C-348.17578501 184.97346024 -345.41413794 184.95344342 -342.65234375 184.9375 C-341.42507568 184.92589844 -340.19780762 184.91429687 -338.93334961 184.90234375 C-336 185 -336 185 -334 186 C-333.33342644 181.19850264 -332.90175012 176.50343569 -332.76098633 171.66040039 C-331.41511834 129.80435305 -314.70440772 88.8654457 -284.53344727 59.55932617 C-282.79801174 57.85321291 -282.79801174 57.85321291 -280.75 55.125 C-276.02511552 49.3227803 -269.60639363 44.90438458 -263.6171875 40.4921875 C-263.06554932 40.08524658 -262.51391113 39.67830566 -261.94555664 39.2590332 C-260.38242242 38.11373184 -258.81053871 36.98040083 -257.23828125 35.84765625 C-256.49964844 35.23792969 -255.76101563 34.62820312 -255 34 C-255 33.34 -255 32.68 -255 32 C-254.4328125 31.885354 -253.865625 31.77070801 -253.28125 31.65258789 C-250.74569649 30.92725243 -248.78325605 29.87693628 -246.5 28.55859375 C-218.57892634 12.71149789 -189.83688913 3.24669992 -157.5 2.375 C-156.27692139 2.33632812 -155.05384277 2.29765625 -153.79370117 2.2578125 C-142.98588822 1.9503317 -132.18213402 1.93617164 -121.37109375 2.03662109 C-120.17226563 2.04516113 -118.9734375 2.05370117 -117.73828125 2.0625 C-116.14560425 2.07990234 -116.14560425 2.07990234 -114.52075195 2.09765625 C-112.00365476 2.17359963 -112.00365476 2.17359963 -110 1 C-110 1.66 -110 2.32 -110 3 C-108.95024742 2.75650314 -108.95024742 2.75650314 -107.87928772 2.50808716 C-104.83437433 1.97077323 -102.02261325 1.87293854 -98.93139648 1.87060547 C-97.72921982 1.86745331 -96.52704315 1.86430115 -95.28843689 1.86105347 C-93.34935204 1.86408981 -93.34935204 1.86408981 -91.37109375 1.8671875 C-90.01693199 1.86651276 -88.66277035 1.86554132 -87.30860901 1.86428833 C-84.46996915 1.86281584 -81.6313608 1.86494915 -78.79272461 1.86962891 C-75.18775853 1.87528772 -71.58286756 1.87206895 -67.97790432 1.86605644 C-65.1783036 1.8624059 -62.37872003 1.86361046 -59.57911873 1.86618423 C-57.6141416 1.86715992 -55.64916375 1.86416445 -53.68418884 1.86105347 C-46.07292316 1.88065085 -38.57318411 2.23277825 -31 3 C-30.67 2.34 -30.34 1.68 -30 1 C-29.34 1.33 -28.68 1.66 -28 2 C-26.58410678 2.04680639 -25.16616987 2.03751443 -23.75 2 C-17.13849873 1.92244573 -10.58601355 2.46856375 -4 3 C-3.67 2.34 -3.34 1.68 -3 1 C-3 1.66 -3 2.32 -3 3 C-1.515 1.515 -1.515 1.515 0 0 Z " fill="#2C8C83" transform="translate(678,216)"/> +<path d="M0 0 C1.27178792 -0.00128164 1.27178792 -0.00128164 2.56926852 -0.00258917 C5.42061534 -0.00424105 8.27190381 0.00127267 11.12324524 0.00672913 C13.16307066 0.00701109 15.20289619 0.00685309 17.24272156 0.00628662 C22.7898965 0.00599899 28.33704995 0.01189017 33.88421988 0.01886058 C39.67782721 0.02509984 45.471435 0.02569837 51.26504517 0.02688599 C62.24035829 0.02999761 73.21566149 0.03820873 84.19097024 0.04823548 C96.68415025 0.05940185 109.17733072 0.06490839 121.67051446 0.06993091 C147.37392047 0.08039147 173.07731765 0.09798766 198.78071594 0.12025452 C198.78071594 0.78025452 198.78071594 1.44025452 198.78071594 2.12025452 C199.79391907 2.62685608 199.79391907 2.62685608 200.82759094 3.14369202 C203.47863261 4.46921285 206.12967428 5.79473368 208.78071594 7.12025452 C209.84225891 7.58431702 209.84225891 7.58431702 210.92524719 8.05775452 C214.50754148 10.10908935 216.4795247 13.78115485 218.78071594 17.12025452 C219.23962219 17.7531842 219.69852844 18.38611389 220.17134094 19.03822327 C226.13247796 27.74651077 227.23103579 37.33357005 227.16889954 47.65931702 C227.17678497 49.30308319 227.17678497 49.30308319 227.18482971 50.98005676 C227.19793211 54.56860507 227.18932608 58.15670244 227.17915344 61.74525452 C227.18117697 64.25909001 227.18409073 66.77292493 227.18785095 69.28675842 C227.1922611 74.54184998 227.18617591 79.79682635 227.17182922 85.05189514 C227.1555069 91.09990184 227.160797 97.14760497 227.17730844 103.19560432 C227.19264038 109.04916431 227.19091907 114.90261031 227.18216324 120.75617981 C227.18017099 123.23115584 227.18258599 125.70613968 227.1896019 128.18110657 C227.19727441 131.64800642 227.18553067 135.11433443 227.16889954 138.58119202 C227.17497223 139.59034668 227.18104492 140.59950134 227.18730164 141.63923645 C227.0635319 155.66205263 222.39224824 166.87514281 212.88618469 177.11244202 C204.45820708 185.14951157 194.87606197 187.55874296 183.53266907 187.79945374 C182.40963631 187.83254072 181.28660355 187.86562771 180.12953949 187.89971733 C165.16910681 188.29088356 150.20070791 188.26658678 135.23630333 188.25458002 C130.99007994 188.2519966 126.74385839 188.25440987 122.49763489 188.25596619 C115.38430892 188.25776922 108.27099344 188.25542953 101.15766907 188.25062561 C92.98569259 188.24516977 84.81374101 188.2469628 76.64176512 188.25245202 C69.55651499 188.25701676 62.47127227 188.25761786 55.38602114 188.25501335 C51.18391799 188.25347109 46.98182648 188.25319976 42.77972412 188.25654984 C-15.08561772 188.29599983 -15.08561772 188.29599983 -29.14897156 175.34291077 C-35.95350408 168.20253222 -40.31930588 158.90378391 -40.36645508 148.99900818 C-40.37361038 147.96460602 -40.38076569 146.93020386 -40.38813782 145.86445618 C-40.39082672 144.73505615 -40.39351562 143.60565613 -40.39628601 142.44203186 C-40.40285721 141.24806793 -40.40942841 140.054104 -40.41619873 138.82395935 C-40.43592756 134.86804338 -40.44759904 130.91214072 -40.45756531 126.95619202 C-40.4616151 125.59064845 -40.46573209 124.22510508 -40.46991539 122.85956192 C-40.48895942 116.44058047 -40.50319016 110.02161043 -40.51152736 103.60260618 C-40.52128683 96.21196462 -40.54757556 88.8216236 -40.58802825 81.43108785 C-40.61827607 75.70690429 -40.63300454 69.98280644 -40.63630837 64.25854456 C-40.63864966 60.84542333 -40.64748823 57.43262341 -40.67276955 54.01958847 C-40.69717311 50.20443212 -40.6961929 46.39005522 -40.68925476 42.57484436 C-40.70206482 41.45758972 -40.71487488 40.34033508 -40.72807312 39.18922424 C-40.65344677 27.8905023 -36.93420082 19.34003291 -29.21928406 11.12025452 C-21.07665653 3.51934025 -10.99440132 -0.04019761 0 0 Z " fill="#FDE321" transform="translate(603.2192840576172,559.8797454833984)"/> +<path d="M0 0 C3.35211493 2.18616191 4.72686604 3.18059812 6 7 C6.08777496 8.33281271 6.12200053 9.66959606 6.12025452 11.0052948 C6.12162918 11.81717758 6.12300385 12.62906036 6.12442017 13.46554565 C6.11902725 14.79587326 6.11902725 14.79587326 6.11352539 16.15307617 C6.11367142 17.08985703 6.11381744 18.02663788 6.1139679 18.99180603 C6.1132705 22.09221705 6.10548617 25.19256821 6.09765625 28.29296875 C6.09579146 30.44102445 6.09436784 32.58908057 6.09336853 34.73713684 C6.0895482 40.39408541 6.07972201 46.05100835 6.06866455 51.70794678 C6.05844005 57.47912245 6.05386868 63.25030226 6.04882812 69.02148438 C6.03809934 80.34766752 6.02102869 91.67383163 6 103 C6.78246094 103.30019043 7.56492187 103.60038086 8.37109375 103.90966797 C15.44935323 106.84535768 20.80399583 113.15511657 24 120 C24.87211257 122.67113012 25.4566876 125.23404595 26 128 C26.9904834 128.23021851 26.9904834 128.23021851 28.00097656 128.46508789 C36.58854037 130.53071768 44.99812208 133.0576462 53.41943359 135.70629883 C55.75782585 136.43995531 58.09946425 137.16253242 60.44140625 137.88476562 C61.95593897 138.35870505 63.47026926 138.83329198 64.984375 139.30859375 C65.67102234 139.51914902 66.35766968 139.72970428 67.06512451 139.94664001 C79.44731277 143.88269923 79.44731277 143.88269923 83.0625 148.8125 C84.24927171 152.84752383 84.2933262 154.9763185 83 159 C80.98369156 161.57702343 78.94669328 163.55833823 76 165 C69.76842594 165.53551006 64.73864803 163.91199069 58.8671875 161.9375 C57.91232452 161.62675537 56.95746155 161.31601074 55.97366333 160.99584961 C52.93750787 160.00689936 49.90597494 159.00470582 46.875 158 C43.83657858 156.99633459 40.79728098 155.99579313 37.75491333 155.00415039 C35.86603231 154.38821049 33.97941433 153.76527559 32.09542847 153.13452148 C31.23748688 152.85423096 30.37954529 152.57394043 29.49560547 152.28515625 C28.74616669 152.03644775 27.99672791 151.78773926 27.22457886 151.53149414 C24.71442737 150.93177127 22.57240803 150.81509808 20 151 C17.71741903 152.39697138 17.71741903 152.39697138 15.625 154.3125 C8.22976101 160.34321384 0.90879595 162.57486199 -8.58203125 161.78515625 C-17.86271674 160.28827149 -25.18508723 155.33505494 -31 148 C-35.8854712 140.05000596 -36.84914317 131.92116855 -34.9375 122.875 C-32.41934732 114.02743652 -27.04941098 107.53101172 -19 103 C-18.01 103 -17.02 103 -16 103 C-16.00666183 101.83790512 -16.01332367 100.67581024 -16.02018738 99.47850037 C-16.08105021 88.51718269 -16.12599755 77.55589938 -16.15543652 66.59445095 C-16.17108026 60.95929855 -16.1922952 55.32428277 -16.22631836 49.68920898 C-16.2589575 44.24920881 -16.27686273 38.8093399 -16.28463173 33.36924934 C-16.29016703 31.29565426 -16.30097613 29.22206622 -16.31719017 27.14852715 C-16.33902474 24.24005585 -16.34196437 21.33212429 -16.34057617 18.42358398 C-16.351362 17.56978149 -16.36214783 16.715979 -16.3732605 15.83630371 C-16.34566958 10.48032958 -15.57283011 6.73235866 -13 2 C-8.50699977 -1.26763653 -5.30531195 -1.44690326 0 0 Z " fill="#FEE123" transform="translate(579,330)"/> +<path d="M0 0 C1.43360974 -0.00256327 1.43360974 -0.00256327 2.89618129 -0.00517833 C6.10067871 -0.00847421 9.30496703 0.0025322 12.50944519 0.01345825 C14.80571996 0.01402234 17.10199509 0.01370585 19.39826965 0.01257324 C25.63540947 0.01199865 31.87247261 0.02377023 38.10959458 0.03772116 C44.62655643 0.05021076 51.14351997 0.05139762 57.66049194 0.05377197 C68.59990305 0.05928494 79.53928579 0.07178339 90.47868347 0.08963013 C101.74560912 0.10799207 113.01252713 0.12214704 124.27946472 0.13064575 C124.97412107 0.1311712 125.66877743 0.13169665 126.38448397 0.13223802 C129.86941935 0.13484812 133.35435479 0.13737553 136.83929026 0.13986182 C165.7439276 0.16059054 194.6485363 0.19596158 223.55314636 0.24050903 C224.84550351 5.15553661 224.66450154 10.01341005 224.61564636 15.05300903 C224.61113464 15.93666138 224.60662292 16.82031372 224.60197449 17.73074341 C224.59024502 19.90069462 224.57231131 22.07061075 224.55314636 24.24050903 C194.46293135 24.35456801 164.37272375 24.44305529 134.28234028 24.49583568 C130.73003049 24.50208923 127.17772113 24.50856084 123.62541199 24.51516724 C122.56460923 24.51713456 122.56460923 24.51713456 121.48237611 24.51914164 C110.03091125 24.54089918 98.57957186 24.58032257 87.12818144 24.62627301 C75.37829136 24.67302807 63.628467 24.70080239 51.87848771 24.71095151 C45.27852003 24.71747669 38.67883698 24.7328399 32.07896042 24.76915932 C25.86884561 24.80305748 19.6591331 24.81357425 13.44893456 24.80604744 C11.16805143 24.80742473 8.88715506 24.81739353 6.60635185 24.83653641 C3.49444167 24.86137701 0.38405467 24.85544615 -2.72789001 24.84178162 C-3.63256771 24.85634582 -4.53724541 24.87091003 -5.46933758 24.88591558 C-9.73059794 24.83526326 -12.58247939 24.5836693 -15.99178886 21.8904295 C-19.3695353 18.24459518 -19.85815219 15.24373949 -19.79450989 10.30691528 C-19.15587789 6.5110015 -17.2361856 4.84388553 -14.44685364 2.24050903 C-9.79586374 -0.32218916 -5.1649189 -0.03373125 0 0 Z " fill="#25817D" transform="translate(605.4468536376953,590.7594909667969)"/> +<path d="M0 0 C0.93457031 0.00322266 1.86914062 0.00644531 2.83203125 0.00976562 C3.80011719 0.01814453 4.76820313 0.02652344 5.765625 0.03515625 C6.74917969 0.03966797 7.73273438 0.04417969 8.74609375 0.04882812 C11.16933291 0.06059142 13.59244773 0.07702941 16.015625 0.09765625 C13.35794863 1.8694405 11.35542712 2.74512249 8.390625 3.78515625 C-2.62809541 8.1798133 -9.29829442 15.73130151 -14.05435181 26.52619934 C-15.3979361 31.6858055 -15.27919793 36.6759943 -15.27490234 41.98706055 C-15.28161957 43.17971024 -15.28833679 44.37235992 -15.29525757 45.60115051 C-15.31096965 48.86180033 -15.31761093 52.12229701 -15.31888914 55.38298011 C-15.32031472 57.42505266 -15.32459209 59.46709884 -15.32988358 61.50916481 C-15.34837052 68.64764718 -15.35655629 75.78605504 -15.35498047 82.92456055 C-15.35378097 89.55473379 -15.37484874 96.18458051 -15.4064678 102.81467122 C-15.4327211 108.52533567 -15.44334392 114.23589412 -15.44206965 119.94661838 C-15.44156246 123.34910343 -15.44710904 126.75129839 -15.46842575 130.15372276 C-15.48812039 133.95651328 -15.48223244 137.75847413 -15.47021484 141.5612793 C-15.48145386 142.67179657 -15.49269287 143.78231384 -15.50427246 144.92648315 C-15.41685123 155.86646853 -12.12301331 165.6871002 -4.984375 174.09765625 C1.84311168 180.71546964 9.70433805 184.4137001 19.015625 186.09765625 C19.015625 186.42765625 19.015625 186.75765625 19.015625 187.09765625 C10.52984771 187.85452036 2.13373894 188.23990937 -6.3840332 188.21118164 C-7.54660645 188.21132767 -8.70917969 188.21147369 -9.90698242 188.21162415 C-13.69972689 188.21093475 -17.4924205 188.20318853 -21.28515625 188.1953125 C-23.93458642 188.19344485 -26.58401387 188.19197331 -29.23344421 188.19102478 C-35.46268848 188.18793555 -41.69191488 188.17975514 -47.92115134 188.16967529 C-55.02167797 188.15843871 -62.12220553 188.15298482 -69.22273886 188.14797986 C-83.80996006 188.1375701 -98.39716728 188.12001804 -112.984375 188.09765625 C-113.314375 187.10765625 -113.644375 186.11765625 -113.984375 185.09765625 C-81.644375 184.76765625 -49.304375 184.43765625 -15.984375 184.09765625 C-20.934375 180.63265625 -20.934375 180.63265625 -25.984375 177.09765625 C-33.68750633 169.38288877 -39.5043772 159.59955742 -40.21142578 148.54907227 C-40.20095215 147.32889404 -40.19047852 146.10871582 -40.1796875 144.8515625 C-40.17469238 143.65088135 -40.16969727 142.4502002 -40.16455078 141.21313477 C-40.14634277 139.71065186 -40.12813477 138.20816895 -40.109375 136.66015625 C-40.068125 131.85453125 -40.026875 127.04890625 -39.984375 122.09765625 C-54.174375 122.09765625 -68.364375 122.09765625 -82.984375 122.09765625 C-82.654375 121.43765625 -82.324375 120.77765625 -81.984375 120.09765625 C-77.91365464 119.92773787 -73.84267019 119.76747221 -69.77124023 119.61547852 C-68.3912579 119.56268003 -67.01136734 119.50741445 -65.6315918 119.44946289 C-57.31941161 119.10224142 -49.24720908 119.05460532 -40.984375 120.09765625 C-41.314375 119.10765625 -41.644375 118.11765625 -41.984375 117.09765625 C-42.06170024 114.68064387 -42.08252247 112.2951431 -42.05371094 109.87915039 C-42.04652794 108.78086914 -42.04652794 108.78086914 -42.03919983 107.66040039 C-42.02148962 105.23445019 -41.99573194 102.80867631 -41.96875 100.3828125 C-41.95204599 98.68948914 -41.93538402 96.99616536 -41.91876221 95.30284119 C-41.8822592 91.74602774 -41.84104614 88.18930041 -41.79736328 84.63256836 C-41.74270261 80.10391676 -41.70595834 75.57531538 -41.67373276 71.04645634 C-41.64566419 67.5432955 -41.60459581 64.0403696 -41.56012726 60.53738213 C-41.54109154 58.86990477 -41.52671514 57.20236678 -41.51732635 55.53480721 C-41.41676672 39.28838229 -39.37106576 24.85608421 -27.984375 12.34765625 C-20.59644444 5.34988897 -10.28989628 -0.06274327 0 0 Z " fill="#1D706D" transform="translate(578.984375,559.90234375)"/> +<path d="M0 0 C0.89174927 -0.00335861 1.78349854 -0.00671722 2.70227051 -0.01017761 C5.64633585 -0.01966506 8.59034415 -0.02162984 11.53442383 -0.02270508 C13.58840457 -0.02591997 15.64238509 -0.02928422 17.69636536 -0.03279114 C22.00282318 -0.03877745 26.30926096 -0.04063163 30.61572266 -0.04003906 C36.11540832 -0.03993765 41.61496427 -0.05357068 47.11461926 -0.07081127 C51.35873497 -0.08197004 55.60281975 -0.08395705 59.84694862 -0.08342934 C61.87339028 -0.08460435 63.89983287 -0.08899905 65.92625999 -0.0967617 C68.77124278 -0.10663686 71.6159496 -0.1036537 74.4609375 -0.09765625 C75.2867482 -0.10327576 76.1125589 -0.10889526 76.96339417 -0.11468506 C91.81845071 -0.0357162 91.81845071 -0.0357162 96.61645508 4.64526367 C99.05816228 8.89171098 99.69137409 12.25534928 99.05395508 17.14526367 C96.90950505 21.69149773 94.76400932 23.67888408 90.1164093 25.54603958 C86.27386637 26.66244947 82.44050087 26.56116194 78.46606445 26.53344727 C77.53018997 26.53870422 76.59431549 26.54396118 75.63008118 26.54937744 C72.5524501 26.56252533 69.47534095 26.55385771 66.39770508 26.54370117 C64.24971416 26.5457234 62.10172392 26.54863608 59.95373535 26.55239868 C55.45826665 26.55681498 50.96297713 26.55041321 46.4675293 26.53637695 C40.71416714 26.51928564 34.96122488 26.52913052 29.20787811 26.54709435 C24.77428033 26.55795084 20.3407816 26.55447724 15.90718079 26.54671097 C13.78615773 26.54471413 11.6651256 26.54715005 9.54411316 26.55414963 C6.57644943 26.56179469 3.60945945 26.55011683 0.6418457 26.53344727 C-0.22901169 26.53951996 -1.09986908 26.54559265 -1.99711609 26.55184937 C-8.90603615 26.48019644 -13.64159325 25.2535918 -18.88354492 20.45776367 C-21.38823398 16.43508125 -21.95711982 13.75944186 -20.94604492 9.14526367 C-18.93101603 5.39314091 -17.4913835 3.50882272 -13.94604492 1.14526367 C-9.37134377 -0.17859059 -4.72124887 -0.00255954 0 0 Z " fill="#FDE223" transform="translate(228.946044921875,474.854736328125)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.66 5 1.32 5 2 C5.721875 2.061875 6.44375 2.12375 7.1875 2.1875 C10.9806506 3.28329906 12.54882071 4.93602589 15 8 C15.6875 11.25 15.6875 11.25 16 14 C16.99 14.495 16.99 14.495 18 15 C17.34 15 16.68 15 16 15 C15.95875 15.886875 15.9175 16.77375 15.875 17.6875 C14.70651951 22.1110333 12.71561438 23.45006856 9 26 C6.625 26.8125 6.625 26.8125 5 27 C5.495 27.99 5.495 27.99 6 29 C5.4301236 28.83799606 4.86024719 28.67599213 4.27310181 28.50907898 C1.97999755 27.9955203 -0.02337242 27.86667725 -2.36962891 27.85473633 C-3.65083115 27.84516655 -3.65083115 27.84516655 -4.95791626 27.83540344 C-6.32839615 27.83373421 -6.32839615 27.83373421 -7.7265625 27.83203125 C-8.67058929 27.82870285 -9.61461609 27.82537445 -10.58724976 27.82194519 C-12.57932041 27.81688907 -14.5713995 27.81453646 -16.56347656 27.81469727 C-19.62058271 27.81250317 -22.67733232 27.79431283 -25.734375 27.77539062 C-27.6692696 27.77245803 -29.60416591 27.77047234 -31.5390625 27.76953125 C-32.45676422 27.76234573 -33.37446594 27.75516022 -34.31997681 27.74775696 C-35.59172256 27.7523719 -35.59172256 27.7523719 -36.88916016 27.75708008 C-38.01023666 27.75494255 -38.01023666 27.75494255 -39.15396118 27.75276184 C-41.24773252 27.84307577 -41.24773252 27.84307577 -43 30 C-43.99 29.34 -44.98 28.68 -46 28 C-48.89044178 27.67975637 -48.89044178 27.67975637 -52.171875 27.69140625 C-53.39390625 27.66626953 -54.6159375 27.64113281 -55.875 27.61523438 C-58.44266073 27.58029141 -61.01037389 27.54899599 -63.578125 27.52148438 C-71.45149522 27.35194226 -77.30836802 27.21834583 -83.4375 21.875 C-85.6320754 17.83698127 -86.0422062 14.49068261 -85 10 C-82.9440359 6.62771742 -80.56113744 3.78056872 -77 2 C-74.55977066 1.87796382 -72.14613824 1.81439143 -69.70458984 1.79467773 C-68.57761436 1.77982834 -68.57761436 1.77982834 -67.4278717 1.76467896 C-64.93892594 1.73303477 -62.44996107 1.70829505 -59.9609375 1.68359375 C-58.23743182 1.66302674 -56.51393121 1.64203033 -54.79043579 1.62062073 C-50.2497976 1.56537393 -45.7091137 1.51597617 -41.168396 1.46777344 C-36.53670168 1.41757744 -31.90507391 1.36188146 -27.2734375 1.30664062 C-18.18234849 1.19902716 -9.09120175 1.09758928 0 1 C0 0.67 0 0.34 0 0 Z " fill="#2B8B82" transform="translate(750,450)"/> +<path d="M0 0 C6.11031961 3.7161569 10.2947315 9.57701593 12.29296875 16.39453125 C13.17092025 23.9251293 12.2212441 30.38170947 7.7109375 36.5625 C2.81109878 42.42309141 -1.6615791 45.87666959 -9.37109375 46.66796875 C-17.81876463 46.95773055 -24.08975025 45.41634895 -30.5546875 39.78515625 C-35.30959877 34.69144295 -37.76502612 28.97304459 -38.14453125 22.01953125 C-37.82731749 14.66017202 -35.33238206 8.47252472 -29.89453125 3.45703125 C-20.67908958 -3.72559241 -10.66695191 -4.79928043 0 0 Z " fill="#23817F" transform="translate(788.70703125,657.60546875)"/> +<path d="M0 0 C3.0482673 2.46455654 4.83325083 4.74987624 7 8 C7.45413101 13.54039834 7.30330197 17.31144236 4 22 C0.66664824 24.77348648 -2.27052955 25.89761818 -6.5625 26.5 C-11.41119882 25.79473472 -14.395568 23.79117112 -17.64453125 20.1640625 C-20.03857629 16.34186955 -19.61196037 12.3524822 -19 8 C-17.22128603 4.23733583 -15.66862969 2.48203536 -12.3125 0.0625 C-7.93209385 -1.34253594 -4.40672559 -1.34966134 0 0 Z " fill="#FDE123" transform="translate(187,475)"/> +<path d="M0 0 C6.26267177 0.24753643 11.25417023 0.48567412 16 5 C18.15483058 8.71549832 19.0434359 11.8923846 18.875 16.1875 C17.50072397 20.6048158 16.18845108 23.15110637 12.375 25.875 C7.95135487 27.34954838 4.46613794 27.35137753 0 26 C-3.65183503 23.20284976 -5.92774079 20.50348867 -7 16 C-7 10.11446204 -4.87168834 6.98243426 -1.27734375 2.6015625 C0.10392194 1.21112745 0.10392194 1.21112745 0 0 Z " fill="#2B8B82" transform="translate(239,400)"/> +<path d="M0 0 C2.9576473 2.29217666 3.81597278 3.44791835 5 7 C5.11687338 8.47586615 5.17501742 9.95706612 5.1875 11.4375 C5.20167969 12.19933594 5.21585938 12.96117187 5.23046875 13.74609375 C4.96838518 16.30918218 4.38628279 17.83393314 3 20 C-1.77026971 23.3672492 -5.02166854 24.86957549 -11 24 C-14.78171013 21.96369455 -18.09528802 19.91524129 -20 16 C-20.77348586 11.98412393 -20.87984213 8.55438776 -18.828125 4.9296875 C-13.26566976 -1.92302798 -8.23151801 -3.03104495 0 0 Z " fill="#2B8A81" transform="translate(224,547)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.66 5 1.32 5 2 C5.721875 2.061875 6.44375 2.12375 7.1875 2.1875 C10.9806506 3.28329906 12.54882071 4.93602589 15 8 C15.6875 11.25 15.6875 11.25 16 14 C16.99 14.495 16.99 14.495 18 15 C17.34 15 16.68 15 16 15 C15.95875 15.886875 15.9175 16.77375 15.875 17.6875 C14.70651951 22.1110333 12.71561438 23.45006856 9 26 C6.625 26.8125 6.625 26.8125 5 27 C5.495 27.99 5.495 27.99 6 29 C5.4301236 28.83799606 4.86024719 28.67599213 4.27310181 28.50907898 C1.97999755 27.9955203 -0.02337242 27.86667725 -2.36962891 27.85473633 C-3.65083115 27.84516655 -3.65083115 27.84516655 -4.95791626 27.83540344 C-6.32839615 27.83373421 -6.32839615 27.83373421 -7.7265625 27.83203125 C-8.67058929 27.82870285 -9.61461609 27.82537445 -10.58724976 27.82194519 C-12.57932041 27.81688907 -14.5713995 27.81453646 -16.56347656 27.81469727 C-19.62058271 27.81250317 -22.67733232 27.79431283 -25.734375 27.77539062 C-27.6692696 27.77245803 -29.60416591 27.77047234 -31.5390625 27.76953125 C-32.45676422 27.76234573 -33.37446594 27.75516022 -34.31997681 27.74775696 C-35.59172256 27.7523719 -35.59172256 27.7523719 -36.88916016 27.75708008 C-38.01023666 27.75494255 -38.01023666 27.75494255 -39.15396118 27.75276184 C-41.24773252 27.84307577 -41.24773252 27.84307577 -43 30 C-43.99 29.34 -44.98 28.68 -46 28 C-48.97228429 27.6633947 -48.97228429 27.6633947 -52.34765625 27.65625 C-53.59224609 27.62660156 -54.83683594 27.59695313 -56.11914062 27.56640625 C-58.75195202 27.52206965 -61.38476452 27.47779902 -64.01757812 27.43359375 C-65.26087891 27.40394531 -66.50417969 27.37429688 -67.78515625 27.34375 C-68.92863525 27.32505859 -70.07211426 27.30636719 -71.25024414 27.28710938 C-74 27 -74 27 -76 25 C-71.38702018 24.10422792 -66.90680749 23.83849048 -62.22216797 23.81054688 C-61.46693848 23.80225357 -60.71170898 23.79396027 -59.93359375 23.78541565 C-58.30328265 23.76809702 -56.67294781 23.75290836 -55.04259872 23.73963928 C-52.46177655 23.71850092 -49.88107393 23.69148997 -47.30032349 23.66296387 C-40.89453139 23.59335441 -34.48865361 23.53372891 -28.08276367 23.47393799 C-22.66048114 23.42296597 -17.23826453 23.36814144 -11.81607437 23.30812073 C-9.27460957 23.28158848 -6.73313836 23.26075321 -4.19161987 23.2401123 C-2.6340912 23.22350822 -1.07656536 23.20663628 0.48095703 23.18945312 C1.18650726 23.18526871 1.8920575 23.18108429 2.61898804 23.17677307 C7.4202848 23.202274 7.4202848 23.202274 12 22 C13.3461031 17.9616907 13.57269422 14.22266539 13 10 C11.12379387 7.49839182 9.76108697 6.38054348 7 5 C4.31470138 4.90687092 1.65555582 4.87421678 -1.02978516 4.88647461 C-1.85913071 4.88632858 -2.68847626 4.88618256 -3.54295349 4.8860321 C-6.29168285 4.88673029 -9.04034494 4.89451829 -11.7890625 4.90234375 C-13.69192467 4.90420826 -15.59478732 4.90563201 -17.49765015 4.90663147 C-22.51181356 4.91045401 -27.52594811 4.92028207 -32.5401001 4.93133545 C-37.65433359 4.94155521 -42.76857174 4.9461303 -47.8828125 4.95117188 C-57.92188769 4.96190455 -67.96094145 4.97897784 -78 5 C-77.67 4.01 -77.34 3.02 -77 2 C-51.59 1.67 -26.18 1.34 0 1 C0 0.67 0 0.34 0 0 Z " fill="#2B7D76" transform="translate(750,450)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1.02283601 28.73121684 1.04052175 57.4624326 1.05106533 86.19365673 C1.05231596 89.58930958 1.05361029 92.98496241 1.05493164 96.38061523 C1.05532511 97.39459144 1.05532511 97.39459144 1.05572652 98.42905202 C1.06007218 109.3597531 1.06795365 120.2904489 1.0771528 131.22114686 C1.08652006 142.44561266 1.09198731 153.67007583 1.09408849 164.89454573 C1.09539071 171.19553405 1.09844566 177.49651041 1.10573006 183.79749489 C1.1125356 189.73256365 1.11460774 195.66761555 1.11310768 201.60268784 C1.11338197 203.77663324 1.11536012 205.95057923 1.11920547 208.12452126 C1.15470718 229.23714002 1.15470718 229.23714002 0 238 C-0.33 238 -0.66 238 -1 238 C-2.18226144 233.33413507 -2.14250348 228.82284821 -2.13371277 224.04476929 C-2.13597833 223.14170976 -2.13824388 222.23865024 -2.14057809 221.30822527 C-2.14690932 218.28147963 -2.14608928 215.25477887 -2.14526367 212.22802734 C-2.14825578 210.05797264 -2.15165843 207.88791846 -2.15544128 205.71786499 C-2.16428197 199.82091349 -2.16661948 193.92397651 -2.16725707 188.02701902 C-2.16796774 184.34118848 -2.17010241 180.65536164 -2.17275429 176.96953201 C-2.18200916 164.10582495 -2.18608915 151.24212825 -2.18530273 138.37841797 C-2.18470246 126.39690032 -2.19524404 114.41544222 -2.2110464 102.43393362 C-2.22413602 92.14159953 -2.22948601 81.84928016 -2.22884732 71.55693781 C-2.22859268 65.41250882 -2.23142515 59.26811987 -2.24202538 53.12369919 C-2.2517298 47.34038704 -2.25176943 41.557153 -2.24450874 35.77383804 C-2.2434657 33.65632767 -2.2458091 31.53881238 -2.2518692 29.42131042 C-2.30686399 8.86634574 -2.30686399 8.86634574 0 0 Z " fill="#1D6567" transform="translate(416,381)"/> +<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C5.96616874 1.12059979 8.9105516 1.18543804 11.87768555 1.20532227 C13.23896576 1.22017166 13.23896576 1.22017166 14.62774658 1.23532104 C17.63071067 1.2669362 20.63369058 1.2916936 23.63671875 1.31640625 C25.71751825 1.33697576 27.79831356 1.35797223 29.87910461 1.37937927 C35.35845558 1.43460024 40.83784426 1.48400945 46.31726074 1.53222656 C52.89020162 1.59126852 59.4630735 1.65749666 66.03595734 1.72252655 C76.02392946 1.82053639 86.01194562 1.90939229 96 2 C96 19.49 96 36.98 96 55 C95.34 54.67 94.68 54.34 94 54 C93.97494385 53.31373535 93.9498877 52.6274707 93.92407227 51.92041016 C93.80828573 48.82174183 93.68548115 45.72339077 93.5625 42.625 C93.52318359 41.54476562 93.48386719 40.46453125 93.44335938 39.3515625 C93.40146484 38.3203125 93.35957031 37.2890625 93.31640625 36.2265625 C93.27974854 35.27346191 93.24309082 34.32036133 93.20532227 33.33837891 C93.14236535 30.97867651 93.14236535 30.97867651 92 29 C92.66 29 93.32 29 94 29 C93.75443359 27.52853516 93.75443359 27.52853516 93.50390625 26.02734375 C92.90840148 21.85881034 92.88750425 17.76598864 92.9375 13.5625 C92.94201172 12.83095703 92.94652344 12.09941406 92.95117188 11.34570312 C92.96281852 9.56376581 92.98074809 7.78187137 93 6 C91.92338104 5.99413376 90.84676208 5.98826752 89.73751831 5.98222351 C79.58510119 5.92497902 69.43289791 5.85220821 59.28069878 5.76428509 C54.06149722 5.71958188 48.84237372 5.68032552 43.62304688 5.65356445 C38.5849018 5.62753117 33.5470571 5.58712828 28.50909805 5.53681374 C26.58824529 5.52014525 24.66734057 5.50863086 22.74642563 5.50238609 C20.05312456 5.49274489 17.3605919 5.46468534 14.66748047 5.43237305 C13.87553787 5.43380814 13.08359528 5.43524323 12.26765442 5.4367218 C7.45067617 5.35513641 4.23474023 4.53741126 0 2 C0 1.34 0 0.68 0 0 Z " fill="#277D77" transform="translate(252,566)"/> +<path d="M0 0 C-0.33 0.66 -0.66 1.32 -1 2 C-20.85688915 2.98127525 -40.66931099 3.15027238 -60.54441261 3.1343255 C-64.790636 3.13174208 -69.03685755 3.13415535 -73.28308105 3.13571167 C-80.39640703 3.13751471 -87.50972251 3.13517502 -94.62304688 3.13037109 C-102.79502336 3.12491525 -110.96697493 3.12670828 -119.13895082 3.1321975 C-126.22420096 3.13676224 -133.30944368 3.13736334 -140.39469481 3.13475883 C-144.59679796 3.13321658 -148.79888946 3.13294525 -153.00099182 3.13629532 C-186.33388826 3.15937316 -186.33388826 3.15937316 -201 2 C-201 1.67 -201 1.34 -201 1 C-175.38353907 0.71564415 -149.76701966 0.43721806 -124.15041733 0.16588497 C-112.25665838 0.03976649 -100.36292641 -0.08830513 -88.46923828 -0.22094727 C-78.10481369 -0.33652965 -67.74035735 -0.44847545 -57.37584615 -0.55602258 C-51.88603606 -0.61311534 -46.39625949 -0.6720506 -40.90651703 -0.73533821 C-35.7422231 -0.79481654 -30.57790085 -0.84944213 -25.41351509 -0.90030479 C-23.51558303 -0.91986005 -21.61766848 -0.94120634 -19.71977806 -0.96445465 C-17.13317475 -0.99587449 -14.54658625 -1.02091283 -11.9598999 -1.04432678 C-11.20503445 -1.05502152 -10.45016901 -1.06571626 -9.67242885 -1.07673508 C-6.30016917 -1.1009063 -3.22203798 -1.06628014 0 0 Z " fill="#FAD11D" transform="translate(799,745)"/> +<path d="M0 0 C0.99 0.495 0.99 0.495 2 1 C0 4 0 4 -3.03999329 4.67941284 C-7.4964126 5.04018769 -11.89142877 5.14006762 -16.36010742 5.12939453 C-17.27154007 5.13114685 -18.18297272 5.13289917 -19.12202454 5.13470459 C-22.11652565 5.1390844 -25.1109671 5.13619952 -28.10546875 5.1328125 C-30.19338492 5.13348648 -32.28130102 5.13445729 -34.36921692 5.13571167 C-38.73597972 5.13718325 -43.10272201 5.13505078 -47.46948242 5.13037109 C-53.06831327 5.12466351 -58.66709629 5.12796274 -64.26592541 5.13394356 C-68.5732713 5.13755468 -72.88060581 5.13640822 -77.18795204 5.13381577 C-79.25284137 5.13314858 -81.31773173 5.13396767 -83.38261986 5.13629532 C-86.26446654 5.13883201 -89.1462353 5.1349673 -92.02807617 5.12939453 C-92.88166718 5.13141876 -93.73525818 5.13344299 -94.61471558 5.13552856 C-95.40102859 5.13270874 -96.18734161 5.12988892 -96.9974823 5.12698364 C-98.01809643 5.1264181 -98.01809643 5.1264181 -99.05932903 5.12584114 C-101.2007602 4.98698188 -102.98524882 4.75545947 -105 4 C-105.33 3.01 -105.66 2.02 -106 1 C-104.71626999 1.00222061 -103.43253998 1.00444122 -102.10990906 1.00672913 C-90.02888906 1.02697562 -77.9478725 1.04197944 -65.86683941 1.05181217 C-59.6554411 1.05703715 -53.44405646 1.06412786 -47.23266602 1.07543945 C-41.24156878 1.08628195 -35.25048472 1.09227975 -29.25937843 1.09487724 C-26.97037359 1.09672902 -24.68136948 1.10034493 -22.39237022 1.10573006 C-19.1934489 1.11295851 -15.99458243 1.11399017 -12.7956543 1.11352539 C-11.84331406 1.11712067 -10.89097382 1.12071594 -9.90977478 1.12442017 C-9.03899292 1.1230455 -8.16821106 1.12167084 -7.27104187 1.12025452 C-6.51424983 1.12117631 -5.75745779 1.1220981 -4.97773266 1.12304783 C-2.78728248 1.07170946 -2.78728248 1.07170946 0 0 Z " fill="#F9DA29" transform="translate(321,496)"/> +<path d="M0 0 C2.41723924 2.41723924 2.93601683 4.33647829 4.0625 7.5625 C10.80776914 25.44438651 20.93120906 40.10407039 34 54 C34.59941406 54.67546875 35.19882812 55.3509375 35.81640625 56.046875 C54.35002756 76.06158484 82.84085835 85.01785344 109 89 C109 89.33 109 89.66 109 90 C100.92259196 90.29136943 92.87852456 89.95156113 85 88 C84.67 87.34 84.34 86.68 84 86 C82.10152517 85.51483421 80.20093771 85.03657131 78.29101562 84.59863281 C74.44009142 83.5924024 70.87466571 82.00039128 67.25 80.375 C66.4650415 80.02381104 65.68008301 79.67262207 64.87133789 79.31079102 C58.06070014 76.17863726 52.03376774 72.46844639 46 68 C45.23816406 67.45988281 44.47632813 66.91976562 43.69140625 66.36328125 C23.42272135 51.44177169 8.07251368 28.73216839 0 5 C-0.1875 2 -0.1875 2 0 0 Z " fill="#1F706D" transform="translate(355,655)"/> +<path d="M0 0 C0.6909375 0.165 1.381875 0.33 2.09375 0.5 C5.29683614 1.05106858 8.25218973 1.06070673 11.5 1 C15.51390858 0.92497367 19.08901726 1.06603397 23 2 C22.67 2.66 22.34 3.32 22 4 C20.34415642 4.00546844 20.34415642 4.00546844 18.65486145 4.01104736 C8.25192827 4.04798779 -2.15070864 4.10575012 -12.55341625 4.18390274 C-17.90159012 4.22341275 -23.24959848 4.255584 -28.59790039 4.27099609 C-33.7592911 4.28613937 -38.92022687 4.3205437 -44.08141518 4.36830902 C-46.05054076 4.38314683 -48.01973128 4.39104239 -49.98891258 4.39188385 C-52.74725225 4.39424803 -55.50432903 4.42128314 -58.26245117 4.45410156 C-59.07669052 4.4490712 -59.89092987 4.44404083 -60.72984314 4.43885803 C-64.68347536 4.51164318 -66.57887665 4.73167415 -69.99971008 6.91131592 C-72.09548926 9.09970899 -72.6753876 9.9726687 -72.875 12.9375 C-72.92269531 13.62714844 -72.97039062 14.31679688 -73.01953125 15.02734375 C-72.99551346 17.45314069 -72.65647753 19.66585768 -72 22 C-75 20 -75 20 -75.65234375 18.046875 C-76.18414297 13.76334153 -76.29417247 11.58834493 -74.3125 7.625 C-69.51428713 2.17837999 -69.51428713 2.17837999 -64.93743896 1.63923645 C-63.13874359 1.6492292 -63.13874359 1.6492292 -61.30371094 1.65942383 C-60.63988403 1.65898575 -59.97605713 1.65854767 -59.29211426 1.65809631 C-57.10589818 1.66018029 -54.9204565 1.68349145 -52.734375 1.70703125 C-51.2155194 1.71262863 -49.69665837 1.71689806 -48.17779541 1.71989441 C-44.18608568 1.7313321 -40.194705 1.76078973 -36.203125 1.79400635 C-32.12764944 1.8247306 -28.05212056 1.83840476 -23.9765625 1.85351562 C-15.98422423 1.88566072 -7.99215309 1.93684376 0 2 C0 1.34 0 0.68 0 0 Z " fill="#0F686A" transform="translate(323,544)"/> +<path d="M0 0 C8.29273717 -0.04631905 16.58542038 -0.08186694 24.87825489 -0.10362434 C28.72886025 -0.11406625 32.57937718 -0.12823279 36.42993164 -0.15087891 C40.14520323 -0.17259291 43.86038969 -0.18456556 47.57571983 -0.18975449 C48.99391711 -0.19345285 50.41210968 -0.20067475 51.83027077 -0.21146011 C53.81494233 -0.22595502 55.79969935 -0.22681675 57.78442383 -0.22705078 C58.91471512 -0.231492 60.04500641 -0.23593323 61.20954895 -0.24050903 C64 0 64 0 67 2 C67.29159149 4.88493931 67.39590537 7.55187937 67.36328125 10.4375 C67.36402901 11.6913147 67.36402901 11.6913147 67.36479187 12.97045898 C67.36244959 14.73911921 67.35271197 16.50778266 67.33618164 18.27636719 C67.31259361 20.98923432 67.31561867 23.70111895 67.32226562 26.4140625 C67.31668889 28.13021421 67.30957904 29.84636178 67.30078125 31.5625 C67.30169266 32.37710693 67.30260406 33.19171387 67.30354309 34.03100586 C67.23102158 39.76897842 67.23102158 39.76897842 65 42 C64.83236258 36.78575406 64.67180531 31.57135652 64.51782227 26.35668945 C64.46443392 24.58254115 64.40910702 22.80845009 64.35180664 21.03442383 C64.26980731 18.48531435 64.19476856 15.93608072 64.12109375 13.38671875 C64.09405869 12.59287277 64.06702362 11.79902679 64.03916931 10.98112488 C63.94995568 7.69363284 63.95116594 5.14650219 65 2 C63.93337379 2.00333092 63.93337379 2.00333092 62.84519958 2.00672913 C56.12210546 2.02682149 49.39901981 2.04201961 42.67590237 2.05181217 C39.22003835 2.05701596 35.76419928 2.06406782 32.30834961 2.07543945 C28.32926743 2.08844988 24.35019512 2.09324892 20.37109375 2.09765625 C19.13854355 2.10281754 17.90599335 2.10797882 16.63609314 2.11329651 C10.98465057 2.11366428 5.5632616 2.03129096 0 1 C0 0.67 0 0.34 0 0 Z " fill="#16706F" transform="translate(281,424)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1 25.08 1 50.16 1 76 C0.34 75.67 -0.32 75.34 -1 75 C-1.625 72.4375 -1.625 72.4375 -2 70 C-2.33 70 -2.66 70 -3 70 C-3.02703381 68.06257659 -3.04641125 66.12504521 -3.0625 64.1875 C-3.07410156 63.10855469 -3.08570313 62.02960937 -3.09765625 60.91796875 C-3 58 -3 58 -2 55 C-1.93059361 53.0010961 -1.91544132 50.99998686 -1.9375 49 C-1.94652344 47.948125 -1.95554687 46.89625 -1.96484375 45.8125 C-1.97644531 44.884375 -1.98804688 43.95625 -2 43 C-2 39.88772805 -1.54372951 37.05847848 -1 34 C-1.66 34 -2.32 34 -3 34 C-2.814375 32.948125 -2.62875 31.89625 -2.4375 30.8125 C-1.82212188 27.22399467 -1.82212188 27.22399467 -2.5 24.625 C-3.25097741 20.68236861 -2.55881198 16.9460723 -2 13 C-1.34 13 -0.68 13 0 13 C0 8.71 0 4.42 0 0 Z " fill="#217774" transform="translate(347,470)"/> +<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C1.74765625 1.98839844 2.4953125 1.97679687 3.265625 1.96484375 C4.25046875 1.95582031 5.2353125 1.94679687 6.25 1.9375 C7.71179688 1.92009766 7.71179688 1.92009766 9.203125 1.90234375 C11.65758678 1.98804423 13.66168914 2.29293934 16 3 C16.33 2.34 16.66 1.68 17 1 C17 1.66 17 2.32 17 3 C17.96486328 2.85691406 17.96486328 2.85691406 18.94921875 2.7109375 C30.17847699 1.33331095 41.52899205 2.32982004 51 9 C58.42825964 15.74594116 63.5890474 23.9786187 65 34 C65.14362732 37.34172888 65.12326814 40.65806386 65 44 C64.34 44 63.68 44 63 44 C62.88785156 42.58460938 62.88785156 42.58460938 62.7734375 41.140625 C61.63474187 30.02159712 59.12514738 20.67259656 50.9375 12.5 C40.01182151 4.02318048 26.85027855 4.35950943 13.6875 4.25 C11.96416367 4.22177252 10.24085445 4.19183592 8.51757812 4.16015625 C4.34510202 4.08710545 0.1729447 4.03704458 -4 4 C-2.68 3.67 -1.36 3.34 0 3 C0 2.01 0 1.02 0 0 Z " fill="#1F716E" transform="translate(727,216)"/> +<path d="M0 0 C0.66 0 1.32 0 2 0 C2.27972656 0.81082031 2.55945313 1.62164063 2.84765625 2.45703125 C5.70767901 10.35657964 9.14717871 17.1469526 14 24 C14.721875 25.03125 15.44375 26.0625 16.1875 27.125 C23.16336078 35.01572777 32.40549146 40.06022596 42 44 C44.02037637 44.96524751 46.00805995 45.97711186 48 47 C43.17685078 48.8129568 39.69328491 46.61791398 35.22265625 44.640625 C19.03281614 36.39852458 7.62263199 23.03849614 1 6.3125 C0 3 0 3 0 0 Z " fill="#207571" transform="translate(418,629)"/> +<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C3.21625 1.4125 2.4325 1.825 1.625 2.25 C-1.2065998 4.1377332 -2.04557385 4.7896575 -3 8 C-3.53229599 11.97174701 -3.63012041 14.93153497 -1.5625 18.4375 C2.15857932 20.70645081 5.66616258 21.21630561 10 21 C13.05147152 19.66498121 14.51186717 18.97626566 16 16 C16.42067534 12.94108931 16.48592529 10.05287848 16 7 C13.77023837 4.01880459 13.77023837 4.01880459 11 2 C10.34 1.34 9.68 0.68 9 0 C11.25 -0.25 11.25 -0.25 14 0 C16.79035429 2.2477854 17.85910005 3.57730016 19 7 C19.11687338 8.47586615 19.17501742 9.95706612 19.1875 11.4375 C19.20167969 12.19933594 19.21585938 12.96117187 19.23046875 13.74609375 C18.96838518 16.30918218 18.38628279 17.83393314 17 20 C12.22973029 23.3672492 8.97833146 24.86957549 3 24 C-0.78171013 21.96369455 -4.09528802 19.91524129 -6 16 C-6.79199583 11.88802164 -6.93174804 8.47999399 -4.65234375 4.859375 C-3.17323274 3.13899056 -1.66432755 1.54049365 0 0 Z " fill="#22706B" transform="translate(210,547)"/> +<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C5.23748539 1.06037516 7.47678834 1.06041992 9.71484375 1.02734375 C11.05403388 1.01469769 12.39322672 1.00233671 13.73242188 0.99023438 C15.83691936 0.96542356 17.94127474 0.93744011 20.0456543 0.90405273 C22.08122649 0.87378489 24.11661784 0.85605698 26.15234375 0.83984375 C27.36913818 0.82300537 28.58593262 0.80616699 29.83959961 0.78881836 C32.84645428 0.9897399 34.48304872 1.41493439 37 3 C34.25334611 4.37332694 32.06375932 4.11964892 28.98974609 4.11352539 C27.72858978 4.11344986 26.46743347 4.11337433 25.1680603 4.11329651 C23.78651897 4.10818949 22.40497804 4.10297349 21.0234375 4.09765625 C19.6138209 4.09579144 18.20420366 4.09436783 16.79458618 4.09336853 C13.08246068 4.08954833 9.37037422 4.07972228 5.65826416 4.06866455 C1.87113981 4.05843975 -1.91599083 4.05386862 -5.703125 4.04882812 C-13.13543448 4.03809958 -20.56771177 4.02102911 -28 4 C-28 3.67 -28 3.34 -28 3 C-24.42649959 2.18101378 -21.14340521 1.88188042 -17.48046875 1.90234375 C-16.45888672 1.90556641 -15.43730469 1.90878906 -14.38476562 1.91210938 C-13.32966797 1.92048828 -12.27457031 1.92886719 -11.1875 1.9375 C-10.11306641 1.94201172 -9.03863281 1.94652344 -7.93164062 1.95117188 C-5.28770317 1.96292271 -2.64388048 1.97935213 0 2 C0 1.34 0 0.68 0 0 Z " fill="#156969" transform="translate(309,400)"/> +<path d="M0 0 C-0.78761719 0.52207031 -1.57523437 1.04414063 -2.38671875 1.58203125 C-10.74390312 7.22931205 -18.40164452 13.37683453 -26 20 C-26.71671875 20.59296875 -27.4334375 21.1859375 -28.171875 21.796875 C-34.71735097 27.26045411 -40.30002902 33.68253216 -46 40 C-46.33 39.34 -46.66 38.68 -47 38 C-46.56429688 37.50371094 -46.12859375 37.00742187 -45.6796875 36.49609375 C-44.78636719 35.47708984 -44.78636719 35.47708984 -43.875 34.4375 C-43.23175781 33.7053125 -42.58851563 32.973125 -41.92578125 32.21875 C-40.76191287 30.87782254 -39.60972504 29.52645301 -38.48046875 28.15625 C-34.70952595 23.58541024 -30.53906757 19.79768653 -26 16 C-25.0203125 15.16726563 -24.040625 14.33453125 -23.03125 13.4765625 C-14.54444811 6.30541166 -14.54444811 6.30541166 -10.6328125 3.82421875 C-9.76398438 3.22222656 -8.89515625 2.62023437 -8 2 C-8 1.34 -8 0.68 -8 0 C-4.90645403 -0.99435406 -3.09720845 -0.87840996 0 0 Z " fill="#207470" transform="translate(431,248)"/> +<path d="M0 0 C2 2 2 2 2.24050903 3.87295532 C2.23606781 4.63240448 2.23162659 5.39185364 2.22705078 6.17431641 C2.22682419 7.46542831 2.22682419 7.46542831 2.22659302 8.78262329 C2.21627045 9.71287323 2.20594788 10.64312317 2.1953125 11.6015625 C2.1924826 12.55316254 2.18965271 13.50476257 2.18673706 14.48519897 C2.17551989 17.53192592 2.15041263 20.57836154 2.125 23.625 C2.11497218 25.68749576 2.10584599 27.74999612 2.09765625 29.8125 C2.07557554 34.87511267 2.0410353 39.9375069 2 45 C1.34 44.67 0.68 44.34 0 44 C-0.02505615 43.31373535 -0.0501123 42.6274707 -0.07592773 41.92041016 C-0.19171427 38.82174183 -0.31451885 35.72339077 -0.4375 32.625 C-0.47681641 31.54476562 -0.51613281 30.46453125 -0.55664062 29.3515625 C-0.59853516 28.3203125 -0.64042969 27.2890625 -0.68359375 26.2265625 C-0.72025146 25.27346191 -0.75690918 24.32036133 -0.79467773 23.33837891 C-0.85763465 20.97867651 -0.85763465 20.97867651 -2 19 C-1.34 19 -0.68 19 0 19 C-0.185625 18.0925 -0.37125 17.185 -0.5625 16.25 C-1.36767612 10.82624421 -0.57821839 5.41746155 0 0 Z " fill="#1C706F" transform="translate(346,576)"/> +<path d="M0 0 C6.35303307 0.25110803 11.02052086 0.64295575 16 5 C18.35735328 8.21457266 18.17742689 11.09660847 18 15 C17.01 15.495 17.01 15.495 16 16 C15.90203125 15.38511719 15.8040625 14.77023437 15.703125 14.13671875 C14.8436216 9.15287028 14.8436216 9.15287028 12.25 4.9375 C9.20142802 3.66726168 7.28379298 3.54026898 4 4 C0.56629327 5.9524999 -2.35454877 8.06060974 -5 11 C-4.4950001 6.58125084 -2.86980559 4.33267746 0 1 C0 0.67 0 0.34 0 0 Z " fill="#2B7D76" transform="translate(239,400)"/> +<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.3709375 1.84820312 1.741875 2.69640625 1.09375 3.5703125 C-4.24103533 10.85263477 -9.00320852 18.20006916 -13.30859375 26.13671875 C-14.72099398 28.52768727 -15.92153224 30.20120374 -18 32 C-16.29435032 21.14586564 -8.21909715 11.75648878 -2 3 C-1.34 2.01 -0.68 1.02 0 0 Z " fill="#217370" transform="translate(381,289)"/> +<path d="M0 0 C1.02104551 0.97850195 2.0206121 1.97980427 3 3 C3 3.33 3 3.66 3 4 C-3.61993177 4.19370307 -10.24015643 4.37108553 -16.86083984 4.53710938 C-19.11321924 4.59552002 -21.36550487 4.65767101 -23.61767578 4.72363281 C-26.85431852 4.81777932 -30.09105973 4.89848408 -33.328125 4.9765625 C-34.33554749 5.00875885 -35.34296997 5.0409552 -36.38092041 5.0741272 C-37.32159363 5.09429901 -38.26226685 5.11447083 -39.23144531 5.13525391 C-40.47054657 5.16856308 -40.47054657 5.16856308 -41.73468018 5.20254517 C-44.24264437 4.97830485 -45.83927555 4.25881474 -48 3 C-44.05352382 2.01155049 -40.72607036 2.03808095 -36.6875 2.4375 C-35.08455078 2.59025391 -35.08455078 2.59025391 -33.44921875 2.74609375 C-32.64097656 2.82988281 -31.83273437 2.91367188 -31 3 C-30.67 2.34 -30.34 1.68 -30 1 C-29.34 1.33 -28.68 1.66 -28 2 C-26.58410678 2.04680639 -25.16616987 2.03751443 -23.75 2 C-17.13849873 1.92244573 -10.58601355 2.46856375 -4 3 C-3.67 2.34 -3.34 1.68 -3 1 C-3 1.66 -3 2.32 -3 3 C-2.01 2.01 -1.02 1.02 0 0 Z " fill="#105A5D" transform="translate(678,216)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1.72863528 6.70344459 -0.33690993 11.41165795 -4 17 C-8.64998437 22.65777566 -13.85943955 27.79944992 -21 30 C-24.5 30.25 -24.5 30.25 -27 30 C-24.50378608 28.33585739 -22.49266241 27.34322907 -19.75 26.25 C-11.04540983 22.38442835 -6.10555538 16.55214731 -2 8 C-1.0943076 5.31325701 -0.51799545 2.79717542 0 0 Z " fill="#1E6F6B" transform="translate(789,261)"/> +<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.39865234 1.64001953 1.39865234 1.64001953 0.78515625 2.29296875 C-6.87749027 10.72014236 -13.09546907 20.28609427 -19 30 C-20 27 -20 27 -19.13671875 24.9765625 C-13.67883494 16.12037368 -7.554451 7.20631962 0 0 Z " fill="#22746F" transform="translate(445,326)"/> +<path d="M0 0 C10.23 0 20.46 0 31 0 C30.67 0.99 30.34 1.98 30 3 C20.43 3 10.86 3 1 3 C0.67 2.01 0.34 1.02 0 0 Z " fill="#1F726D" transform="translate(465,745)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C0.67 10.56 0.34 21.12 0 32 C-0.66 32 -1.32 32 -2 32 C-2.05828635 27.79172527 -2.093693 23.58355511 -2.125 19.375 C-2.14175781 18.18519531 -2.15851563 16.99539063 -2.17578125 15.76953125 C-2.18222656 14.61582031 -2.18867188 13.46210938 -2.1953125 12.2734375 C-2.20578613 11.21560059 -2.21625977 10.15776367 -2.22705078 9.06787109 C-1.98270857 5.76636112 -1.16882977 3.08587237 0 0 Z " fill="#1F7472" transform="translate(348,369)"/> +<path d="M0 0 C0 0.66 0 1.32 0 2 C-0.68707031 2.10957031 -1.37414062 2.21914063 -2.08203125 2.33203125 C-2.98308594 2.49058594 -3.88414062 2.64914062 -4.8125 2.8125 C-5.70582031 2.96332031 -6.59914063 3.11414063 -7.51953125 3.26953125 C-10.25161471 4.07409756 -11.32782286 4.7187871 -13 7 C-13.90638724 11.68300074 -14.30692269 15.35316375 -13 20 C-16 18 -16 18 -16.65234375 16.046875 C-17.18414297 11.76334153 -17.29417247 9.58834493 -15.3125 5.625 C-10.32644938 -0.03484125 -7.38261782 -0.42592026 0 0 Z " fill="#227570" transform="translate(264,546)"/> +<path d="M0 0 C2.75026417 -0.05404449 5.49946203 -0.09369306 8.25 -0.125 C9.02730469 -0.14175781 9.80460937 -0.15851563 10.60546875 -0.17578125 C17.72431144 -0.23662606 17.72431144 -0.23662606 21 2 C17.77396455 3.61301773 14.25289962 3.12053599 10.7109375 3.09765625 C9.48330185 3.09553383 9.48330185 3.09553383 8.23086548 3.09336853 C5.61220675 3.0877629 2.99363296 3.07520948 0.375 3.0625 C-1.39843627 3.05748572 -3.17187387 3.05292269 -4.9453125 3.04882812 C-9.29690782 3.03779164 -13.6484395 3.02052325 -18 3 C-18 2.67 -18 2.34 -18 2 C-12.06 2 -6.12 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#1B7471" transform="translate(325,401)"/> +<path d="M0 0 C0.556875 0.350625 1.11375 0.70125 1.6875 1.0625 C4.53886783 2.21845993 6.08517222 1.80967438 9 1 C9 1.66 9 2.32 9 3 C13.12973628 2.43260132 13.12973628 2.43260132 17 1 C17 1.66 17 2.32 17 3 C19.47266765 2.65555119 19.47266765 2.65555119 22 2 C22.33 1.34 22.66 0.68 23 0 C23.66 0 24.32 0 25 0 C25 1.32 25 2.64 25 4 C12.46 4 -0.08 4 -13 4 C-13 3.67 -13 3.34 -13 3 C-12.14535156 2.95101562 -11.29070313 2.90203125 -10.41015625 2.8515625 C-9.30542969 2.77679688 -8.20070313 2.70203125 -7.0625 2.625 C-5.40927734 2.52058594 -5.40927734 2.52058594 -3.72265625 2.4140625 C-2.37494141 2.20910156 -2.37494141 2.20910156 -1 2 C-0.67 1.34 -0.34 0.68 0 0 Z " fill="#176564" transform="translate(695,216)"/> +<path d="M0 0 C0.66 0.66 1.32 1.32 2 2 C3.27142132 2.70451051 4.56612429 3.36778833 5.875 4 C6.55304687 4.33 7.23109375 4.66 7.9296875 5 C9.33591328 5.67923358 10.75911467 6.32417708 12.1953125 6.9375 C14 8 14 8 15 11 C10.37060228 9.58211402 6.11488883 7.69481522 1.8125 5.5 C1.19697266 5.19191406 0.58144531 4.88382813 -0.05273438 4.56640625 C-2.82236565 3.16808754 -5.41459853 1.72360098 -8 0 C-4.96083486 -0.97687451 -3.01586454 -1.105817 0 0 Z " fill="#F7DC29" transform="translate(802,561)"/> +<path d="M0 0 C0.6909375 0.165 1.381875 0.33 2.09375 0.5 C5.29683614 1.05106858 8.25218973 1.06070673 11.5 1 C15.51390858 0.92497367 19.08901726 1.06603397 23 2 C22.67 2.66 22.34 3.32 22 4 C18.58340509 4.05816623 15.16693795 4.09365195 11.75 4.125 C10.29787109 4.15013672 10.29787109 4.15013672 8.81640625 4.17578125 C7.41455078 4.18544922 7.41455078 4.18544922 5.984375 4.1953125 C5.12553711 4.20578613 4.26669922 4.21625977 3.38183594 4.22705078 C0.82096404 3.98293323 -0.79511029 3.28990512 -3 2 C-2.01 2 -1.02 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#1C7471" transform="translate(323,544)"/> +<path d="M0 0 C2.31258026 3.80424459 2.85249265 7.92984948 3.5625 12.25 C3.75102539 13.33861328 3.75102539 13.33861328 3.94335938 14.44921875 C4.76673232 19.28599597 5.42132487 24.1281065 6 29 C5.34 29 4.68 29 4 29 C1.16961632 19.15683532 -0.63789884 10.34813679 0 0 Z " fill="#1B6A69" transform="translate(348,622)"/> +<path d="M0 0 C5.7926463 0.61425377 10.94609066 2.15533044 16.4375 4.0625 C17.26443359 4.34416016 18.09136719 4.62582031 18.94335938 4.91601562 C20.96412338 5.60517792 22.98233282 6.3018231 25 7 C23.02 7.99 23.02 7.99 21 9 C21 8.34 21 7.68 21 7 C20.31035156 6.96261719 19.62070312 6.92523438 18.91015625 6.88671875 C12.80444382 6.45957014 6.475079 5.9794616 1 3 C0.67 2.01 0.34 1.02 0 0 Z " fill="#F8DD2E" transform="translate(632,467)"/> +<path d="M0 0 C0.69738281 0.00902344 1.39476562 0.01804687 2.11328125 0.02734375 C3.82566958 0.05080112 5.53788004 0.08666896 7.25 0.125 C7.25 0.455 7.25 0.785 7.25 1.125 C6.1053125 1.2796875 6.1053125 1.2796875 4.9375 1.4375 C1.95876939 2.19950085 1.3131646 2.97587021 -0.75 5.125 C-3.4375 6.3125 -3.4375 6.3125 -5.75 7.125 C-5.75 6.135 -5.75 5.145 -5.75 4.125 C-7.73 3.465 -9.71 2.805 -11.75 2.125 C-8.00764681 -0.32489101 -4.30774581 -0.10586143 0 0 Z " fill="#32816C" transform="translate(581.75,559.875)"/> +<path d="M0 0 C3.29159316 -0.05790353 6.58305603 -0.09356261 9.875 -0.125 C10.81214844 -0.14175781 11.74929688 -0.15851562 12.71484375 -0.17578125 C13.61074219 -0.18222656 14.50664062 -0.18867187 15.4296875 -0.1953125 C16.25710449 -0.20578613 17.08452148 -0.21625977 17.93701172 -0.22705078 C20 0 20 0 22 2 C21 3 21 3 19.06640625 3.1328125 C6.10111118 3.09235916 6.10111118 3.09235916 1 2 C0.67 1.34 0.34 0.68 0 0 Z " fill="#247874" transform="translate(475,679)"/> +<path d="M0 0 C3.22795322 0.95966177 4.74128361 1.66099231 6.8125 4.375 C8 7 8 7 8 11 C8.66 11.33 9.32 11.66 10 12 C9.34 12 8.68 12 8 12 C7.8453125 13.3921875 7.8453125 13.3921875 7.6875 14.8125 C6.99468505 18.02464205 6.6120831 19.11930017 4 21 C3.34 21 2.68 21 2 21 C2 20.34 2 19.68 2 19 C2.66 19 3.32 19 4 19 C5.34591808 14.96224575 5.57366831 11.22219878 5 7 C3.26989612 4.51768273 3.26989612 4.51768273 1 3 C0.34 2.34 -0.32 1.68 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#26766F" transform="translate(758,453)"/> +<path d="M0 0 C0.268125 0.556875 0.53625 1.11375 0.8125 1.6875 C3.06711799 6.62575086 3.06711799 6.62575086 7 10 C8.87056791 10.2275015 10.74685958 10.40962811 12.625 10.5625 C13.62789062 10.64628906 14.63078125 10.73007812 15.6640625 10.81640625 C16.82035156 10.90728516 16.82035156 10.90728516 18 11 C16.35438313 13.01247413 15.54654767 13.93449616 12.9140625 14.25 C8.54252071 13.77256199 6.48183082 13.40152568 3 10.5 C2.34 9.675 1.68 8.85 1 8 C0.67 7.67 0.34 7.34 0 7 C-0.04092937 4.66702567 -0.04241723 2.33294775 0 0 Z " fill="#2F8075" transform="translate(233,413)"/> +<path d="M0 0 C1.093125 0.226875 2.18625 0.45375 3.3125 0.6875 C3.3125 1.0175 3.3125 1.3475 3.3125 1.6875 C2.425625 1.914375 1.53875 2.14125 0.625 2.375 C-3.30098014 3.93057704 -5.12950728 5.32556671 -7.6875 8.6875 C-8.37719668 11.42093024 -8.54308647 13.84736725 -8.6875 16.6875 C-9.3475 16.6875 -10.0075 16.6875 -10.6875 16.6875 C-11.31528112 8.68329074 -11.31528112 8.68329074 -8.875 4.8125 C-8.153125 4.11125 -7.43125 3.41 -6.6875 2.6875 C-6.254375 2.06875 -5.82125 1.45 -5.375 0.8125 C-3.6875 -0.3125 -3.6875 -0.3125 0 0 Z " fill="#207673" transform="translate(282.6875,401.3125)"/> +<path d="M0 0 C-2.95105384 1.7004792 -5.91190122 3.38311093 -8.875 5.0625 C-9.71675781 5.54783203 -10.55851562 6.03316406 -11.42578125 6.53320312 C-12.23144531 6.98759766 -13.03710938 7.44199219 -13.8671875 7.91015625 C-14.61081543 8.33433838 -15.35444336 8.75852051 -16.12060547 9.19555664 C-17.05090576 9.5937561 -17.05090576 9.5937561 -18 10 C-18.66 9.67 -19.32 9.34 -20 9 C-17.32506945 5.91573844 -14.11557856 4.20197505 -10.5625 2.25 C-9.42941406 1.61578125 -8.29632813 0.9815625 -7.12890625 0.328125 C-3.81691131 -1.07771555 -3.22104229 -1.04070478 0 0 Z " fill="#227772" transform="translate(453,236)"/> +<path d="M0 0 C-0.66386719 0.4125 -1.32773437 0.825 -2.01171875 1.25 C-7.30620913 4.712674 -11.06075637 7.68354777 -14.0625 13.30078125 C-15 15 -15 15 -17 17 C-16.33979906 11.38829201 -13.37563836 6.58006775 -9 3 C-8.34 3 -7.68 3 -7 3 C-7.33 2.01 -7.66 1.02 -8 0 C-2.25 -1.125 -2.25 -1.125 0 0 Z " fill="#F6F413" transform="translate(768,656)"/> +<path d="M0 0 C-2.66148345 1.01620277 -5.3270413 2.01476068 -8 3 C-8.79019531 3.29777344 -9.58039063 3.59554688 -10.39453125 3.90234375 C-11.17183594 4.18207031 -11.94914062 4.46179688 -12.75 4.75 C-13.82507813 5.14445312 -13.82507813 5.14445312 -14.921875 5.546875 C-17.29387831 6.06407873 -18.71972362 5.76009213 -21 5 C-19.10667466 4.18167278 -17.21022267 3.37057732 -15.3125 2.5625 C-14.25675781 2.11003906 -13.20101563 1.65757812 -12.11328125 1.19140625 C-7.7379742 -0.48295843 -4.53526072 -1.51175357 0 0 Z " fill="#257872" transform="translate(502,297)"/> +<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C-6.09705662 3.34495828 -12.7725395 4.24091535 -20 4 C-16.89234404 2.25971266 -14.0636951 1.48685934 -10.5625 0.875 C-9.17224609 0.62363281 -9.17224609 0.62363281 -7.75390625 0.3671875 C-5.12946175 0.01726157 -2.64357647 -0.06716891 0 0 Z " fill="#257A74" transform="translate(527,291)"/> +<path d="M0 0 C0.99 0 1.98 0 3 0 C1.96008872 3.01574271 1.03085171 3.97991051 -1.6875 5.75 C-5.39931936 7.15068655 -8.06397193 7.37846424 -12 7 C-12.66 6.34 -13.32 5.68 -14 5 C-10.37 5 -6.74 5 -3 5 C-2.34 3.68 -1.68 2.36 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#F5D72F" transform="translate(189,494)"/> +<path d="M0 0 C2.44307131 2.44307131 2.67506344 4.59947811 3.42578125 7.890625 C4.22072692 10.81083358 5.54646126 13.35720228 7 16 C3.60606022 14.59561113 1.91654773 13.13616902 0 10 C-0.29296875 7.421875 -0.29296875 7.421875 -0.1875 4.75 C-0.16042969 3.85796875 -0.13335937 2.9659375 -0.10546875 2.046875 C-0.07066406 1.37140625 -0.03585938 0.6959375 0 0 Z " fill="#F7DA29" transform="translate(168,483)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C0.67 6.27 0.34 12.54 0 19 C-3 16 -3 16 -3.1875 12.3125 C-3.125625 11.219375 -3.06375 10.12625 -3 9 C-2.67 9 -2.34 9 -2 9 C-1.34 6.03 -0.68 3.06 0 0 Z " fill="#308074" transform="translate(347,464)"/> +<path d="M0 0 C0 0.66 0 1.32 0 2 C-2.43123269 3.36663387 -4.86886163 4.7183867 -7.3125 6.0625 C-8.00279297 6.45244141 -8.69308594 6.84238281 -9.40429688 7.24414062 C-11.22925688 8.24037483 -13.11273877 9.12752842 -15 10 C-15.99 9.67 -16.98 9.34 -18 9 C-15.70870707 7.68684387 -13.4169845 6.37444807 -11.125 5.0625 C-10.47402344 4.68931641 -9.82304687 4.31613281 -9.15234375 3.93164062 C-2.2808277 0 -2.2808277 0 0 0 Z " fill="#247872" transform="translate(480,303)"/> +<path d="M0 0 C1.34803303 5.19955596 2.12181618 9.91472734 2.0625 15.3125 C2.05347656 16.38113281 2.04445313 17.44976562 2.03515625 18.55078125 C2.02355469 19.35902344 2.01195312 20.16726563 2 21 C1.67 19.68 1.34 18.36 1 17 C0.34 17 -0.32 17 -1 17 C-0.814375 15.948125 -0.62875 14.89625 -0.4375 13.8125 C-0.03978617 10.34670804 -0.30015524 8.32426259 -1 5 C-0.5625 2.1875 -0.5625 2.1875 0 0 Z " fill="#499178" transform="translate(345,487)"/> +<path d="M0 0 C0.66 0 1.32 0 2 0 C1.57045059 6.25107435 0.98598493 12.04204521 -1 18 C-1.33 18 -1.66 18 -2 18 C-2.20190089 11.64012196 -1.6277833 6.14778871 0 0 Z " fill="#1F706E" transform="translate(351,349)"/> +<path d="M0 0 C0.556875 0.19335938 1.11375 0.38671875 1.6875 0.5859375 C6.75117127 2.31374425 11.79322065 3.7693067 17 5 C17 5.33 17 5.66 17 6 C15.56465159 6.2226746 14.12654475 6.42761906 12.6875 6.625 C11.88699219 6.74101563 11.08648438 6.85703125 10.26171875 6.9765625 C6.54484823 7.01507929 4.87619465 4.87907385 2.3125 2.375 C1.549375 1.59125 0.78625 0.8075 0 0 Z " fill="#265E74" transform="translate(581,741)"/> +<path d="M0 0 C-1 2 -1 2 -3.87109375 3.0703125 C-5.04800781 3.41835937 -6.22492188 3.76640625 -7.4375 4.125 C-9.19900391 4.65480469 -9.19900391 4.65480469 -10.99609375 5.1953125 C-14 6 -14 6 -16 6 C-16 5.34 -16 4.68 -16 4 C-5.62642369 -0.59225513 -5.62642369 -0.59225513 0 0 Z " fill="#227773" transform="translate(475,227)"/> +<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C1.68 1.33 0.36 1.66 -1 2 C-1 2.66 -1 3.32 -1 4 C-6.19548425 6.20808081 -9.58264203 5.93402724 -15 5 C-15 4.67 -15 4.34 -15 4 C-14.08476563 3.79503906 -13.16953125 3.59007812 -12.2265625 3.37890625 C-11.03804687 3.10949219 -9.84953125 2.84007812 -8.625 2.5625 C-6.84996094 2.16224609 -6.84996094 2.16224609 -5.0390625 1.75390625 C-2.10505419 1.14365305 -2.10505419 1.14365305 0 0 Z " fill="#F9EF14" transform="translate(788,701)"/> +<path d="M0 0 C-2.67034273 1.78022849 -4.97600432 2.89126186 -7.9375 4.0625 C-8.79214844 4.40410156 -9.64679687 4.74570312 -10.52734375 5.09765625 C-12.67696324 5.88211455 -14.77025942 6.49817903 -17 7 C-15.36587557 5.29159719 -14.13093906 4.06546953 -12 3 C-12.66 2.34 -13.32 1.68 -14 1 C-9.27616037 0.34843591 -4.78025483 -0.11950637 0 0 Z " fill="#125682" transform="translate(595,560)"/> +<path d="M0 0 C3.875 1.875 3.875 1.875 5 3 C4.90913549 5.53541298 4.7629055 8.03554784 4.5625 10.5625 C4.51029297 11.27341797 4.45808594 11.98433594 4.40429688 12.71679688 C4.27425893 14.47821999 4.13773103 16.23916173 4 18 C3.67 18 3.34 18 3 18 C2.92652344 16.67935547 2.92652344 16.67935547 2.8515625 15.33203125 C2.77679687 14.17058594 2.70203125 13.00914062 2.625 11.8125 C2.55539062 10.66394531 2.48578125 9.51539063 2.4140625 8.33203125 C2.02490426 5.20040883 1.3190149 2.84714191 0 0 Z " fill="#F7DB2A" transform="translate(579,331)"/> +<path d="M0 0 C10.23 0 20.46 0 31 0 C31 0.33 31 0.66 31 1 C20.77 1 10.54 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#4A997E" transform="translate(568,294)"/> +<path d="M0 0 C-1.99043687 1.32695791 -3.99045158 2.63966665 -6 3.9375 C-8.30885169 5.52483554 -10.14362806 6.93736451 -12 9 C-11.66466723 5.98200506 -11.13434402 4.19118187 -9.375 1.6875 C-6.16715428 -0.5917588 -3.84279789 -0.29559984 0 0 Z " fill="#21736F" transform="translate(246,402)"/> +<path d="M0 0 C2.72647685 2.35468455 3.98756342 4.5408417 5 8 C4.625 10.3125 4.625 10.3125 4 12 C1 7.375 1 7.375 1 4 C0.34 4 -0.32 4 -1 4 C-0.67 2.68 -0.34 1.36 0 0 Z " fill="#F1D927" transform="translate(823,580)"/> +<path d="M0 0 C1.76070375 6.05067242 1.62043498 12.92336881 0 19 C-0.33 19 -0.66 19 -1 19 C-2.05268874 12.18597425 -1.93833398 6.63198569 0 0 Z " fill="#F9DE31" transform="translate(545,450)"/> +<path d="M0 0 C0 3 0 3 -1.96875 5.04296875 C-2.8040625 5.75066406 -3.639375 6.45835937 -4.5 7.1875 C-5.3353125 7.90292969 -6.170625 8.61835938 -7.03125 9.35546875 C-7.6809375 9.89816406 -8.330625 10.44085938 -9 11 C-9.99 10.67 -10.98 10.34 -12 10 C-8.04 6.7 -4.08 3.4 0 0 Z " fill="#247670" transform="translate(459,314)"/> +<path d="M0 0 C1.58400468 2.85640188 2.3725034 5.25797039 2.75 8.5 C2.84796875 9.2528125 2.9459375 10.005625 3.046875 10.78125 C2.9926939 13.34582212 2.29270519 14.81234507 1 17 C-0.13480527 13.39006828 -0.10015767 10.0157673 -0.0625 6.25 C-0.05347656 5.07953125 -0.04445313 3.9090625 -0.03515625 2.703125 C-0.02355469 1.81109375 -0.01195312 0.9190625 0 0 Z " fill="#21726F" transform="translate(348,622)"/> +<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.195625 2.010625 0.39125 3.02125 -0.4375 4.0625 C-3.10547019 7.75545309 -3.72410871 10.49377556 -4 15 C-4.33 15 -4.66 15 -5 15 C-5.76681614 6.22421525 -5.76681614 6.22421525 -3.88671875 3.22265625 C-2.5 1.875 -2.5 1.875 0 0 Z " fill="#1F7575" transform="translate(671,453)"/> +<path d="M0 0 C7.59 0 15.18 0 23 0 C23 0.33 23 0.66 23 1 C15.41 1 7.82 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#3B9181" transform="translate(656,294)"/> +<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C-0.65654657 4.73884332 -2.58110387 6.64978174 -7 8 C-5.50902342 4.2047869 -3.24299151 2.38957269 0 0 Z " fill="#FBDF2D" transform="translate(557,435)"/> +<path d="M0 0 C0.268125 0.556875 0.53625 1.11375 0.8125 1.6875 C2.57662422 5.12289979 4.25793106 8.25793106 7 11 C4 11 4 11 1.8125 9.4375 C-0.60192567 6.19051375 -0.3037572 3.94884357 0 0 Z " fill="#26736E" transform="translate(233,413)"/> +<path d="M0 0 C1.5778125 0.4021875 1.5778125 0.4021875 3.1875 0.8125 C3.1875 1.1425 3.1875 1.4725 3.1875 1.8125 C1.7953125 2.245625 1.7953125 2.245625 0.375 2.6875 C-2.91041667 3.7 -2.91041667 3.7 -5.8125 5.8125 C-6.8025 5.4825 -7.7925 5.1525 -8.8125 4.8125 C-4.75096154 -0.23365385 -4.75096154 -0.23365385 0 0 Z " fill="#297D75" transform="translate(282.8125,401.1875)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1.14285714 7.42857143 1.14285714 7.42857143 0 11 C-0.66 11 -1.32 11 -2 11 C-1.85892253 9.54119891 -1.71197585 8.08296449 -1.5625 6.625 C-1.48128906 5.81289063 -1.40007812 5.00078125 -1.31640625 4.1640625 C-1 2 -1 2 0 0 Z " fill="#21746E" transform="translate(419,369)"/> +<path d="M0 0 C0.66 0 1.32 0 2 0 C1.71872579 1.48117801 1.42466268 2.95993249 1.125 4.4375 C0.96257812 5.26121094 0.80015625 6.08492188 0.6328125 6.93359375 C0.31957031 7.95646484 0.31957031 7.95646484 0 9 C-0.99 9.495 -0.99 9.495 -2 10 C-1.125 2.25 -1.125 2.25 0 0 Z " fill="#217470" transform="translate(357,331)"/> +<path d="M0 0 C2.31 0.33 4.62 0.66 7 1 C7 1.33 7 1.66 7 2 C4 3 1 4 -2 5 C-1.34 3.35 -0.68 1.7 0 0 Z " fill="#FCE131" transform="translate(597,478)"/> +<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C-1.5 5.875 -1.5 5.875 -6 7 C-4.02 4.69 -2.04 2.38 0 0 Z " fill="#F8D72D" transform="translate(812,736)"/> +<path d="M0 0 C2.25 -0.25 2.25 -0.25 5 0 C7.3125 2 7.3125 2 9 4 C8.67 4.66 8.34 5.32 8 6 C6.66402348 5.19185349 5.331275 4.37836819 4 3.5625 C3.2575 3.11003906 2.515 2.65757812 1.75 2.19140625 C1.1725 1.79824219 0.595 1.40507813 0 1 C0 0.67 0 0.34 0 0 Z " fill="#267871" transform="translate(219,547)"/> +<path d="M0 0 C1.07765625 0.10183594 2.1553125 0.20367187 3.265625 0.30859375 C4.08546875 0.39238281 4.9053125 0.47617188 5.75 0.5625 C5.75 0.8925 5.75 1.2225 5.75 1.5625 C3.83496326 1.78531874 1.91783494 1.99021076 0 2.1875 C-1.06734375 2.30351562 -2.1346875 2.41953125 -3.234375 2.5390625 C-6.28792399 2.56279475 -7.71162421 2.17670985 -10.25 0.5625 C-6.70049966 -0.60056443 -3.69176052 -0.36115049 0 0 Z " fill="#095357" transform="translate(640.25,218.4375)"/> +<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C-2.3 2.34 -5.6 1.68 -9 1 C-4.82091936 -1.08954032 -4.19589427 -1.16552619 0 0 Z " fill="#FCDD2E" transform="translate(625,484)"/> +<path d="M0 0 C1.98 0.99 1.98 0.99 4 2 C4 4.31 4 6.62 4 9 C1.49701566 6.06171403 0.53069061 3.82097239 0 0 Z " fill="#FADC2D" transform="translate(545,469)"/> +<path d="M0 0 C4.29 0 8.58 0 13 0 C13 0.33 13 0.66 13 1 C6.565 1.495 6.565 1.495 0 2 C0 1.34 0 0.68 0 0 Z " fill="#45967F" transform="translate(528,294)"/> +<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C0.68 2.65 -0.64 4.3 -2 6 C-3.32 5.67 -4.64 5.34 -6 5 C-4.02 3.35 -2.04 1.7 0 0 Z " fill="#287E78" transform="translate(413,257)"/> +<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C1.35 2.98 -0.3 4.96 -2 7 C-2.6875 5.1875 -2.6875 5.1875 -3 3 C-1.5625 1.25 -1.5625 1.25 0 0 Z " fill="#1D6766" transform="translate(550,574)"/> +<path d="M0 0 C3.96 1.98 3.96 1.98 8 4 C6.02 4.99 6.02 4.99 4 6 C2 4.6875 2 4.6875 0 3 C0 2.01 0 1.02 0 0 Z " fill="#327E73" transform="translate(668,470)"/> +<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 2.98 3 4.96 3 7 C2.01 7 1.02 7 0 7 C0 4.69 0 2.38 0 0 Z " fill="#237974" transform="translate(345,425)"/> +<path d="M0 0 C1.02104551 0.97850195 2.0206121 1.97980427 3 3 C3 3.33 3 3.66 3 4 C0.03 4 -2.94 4 -6 4 C-5.34 3.67 -4.68 3.34 -4 3 C-3.67 2.34 -3.34 1.68 -3 1 C-3 1.66 -3 2.32 -3 3 C-2.01 2.01 -1.02 1.02 0 0 Z " fill="#1B6B69" transform="translate(678,216)"/> +<path d="M0 0 C5.28 0 10.56 0 16 0 C16 0.33 16 0.66 16 1 C10.72 1 5.44 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#368F81" transform="translate(712,294)"/> +<path d="M0 0 C4.95 0 9.9 0 15 0 C15 0.33 15 0.66 15 1 C10.05 1 5.1 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#3F9381" transform="translate(630,294)"/> +<path d="M0 0 C4.29 0 8.58 0 13 0 C13 0.33 13 0.66 13 1 C8.71 1 4.42 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#4A967E" transform="translate(720,478)"/> +<path d="M0 0 C4.29 0 8.58 0 13 0 C13 0.33 13 0.66 13 1 C8.71 1 4.42 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#378F81" transform="translate(696,294)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1 3.63 1 7.26 1 11 C0.67 11 0.34 11 0 11 C0 7.37 0 3.74 0 0 Z " fill="#80A159" transform="translate(831,597)"/> +<path d="M0 0 C2.97 0 5.94 0 9 0 C9 0.33 9 0.66 9 1 C4.545 1.495 4.545 1.495 0 2 C0 1.34 0 0.68 0 0 Z " fill="#4D987E" transform="translate(710,478)"/> +<path d="M0 0 C2.97 0 5.94 0 9 0 C9 0.33 9 0.66 9 1 C6.03 1 3.06 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#449580" transform="translate(614,294)"/> +<path d="M0 0 C2.97 0 5.94 0 9 0 C9 0.33 9 0.66 9 1 C6.03 1 3.06 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#4C997E" transform="translate(558,294)"/> +<path d="M0 0 C2.64 0 5.28 0 8 0 C8 0.33 8 0.66 8 1 C5.36 1 2.72 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#429482" transform="translate(518,295)"/> +<path d="M0 0 C2.31 0 4.62 0 7 0 C5.02 0.99 5.02 0.99 3 2 C2.01 1.34 1.02 0.68 0 0 Z " fill="#3A9081" transform="translate(680,294)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1 2.31 1 4.62 1 7 C0.67 7 0.34 7 0 7 C0 4.69 0 2.38 0 0 Z " fill="#2E8177" transform="translate(536,665)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1 2.31 1 4.62 1 7 C0.67 7 0.34 7 0 7 C0 4.69 0 2.38 0 0 Z " fill="#2E7F76" transform="translate(536,648)"/> +<path d="M0 0 C2.31 0 4.62 0 7 0 C7 0.33 7 0.66 7 1 C4.69 1 2.38 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#48937D" transform="translate(744,478)"/> +<path d="M0 0 C2.31 0 4.62 0 7 0 C7 0.33 7 0.66 7 1 C4.69 1 2.38 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#368E81" transform="translate(734,294)"/> +<path d="M0 0 C2.31 0 4.62 0 7 0 C7 0.33 7 0.66 7 1 C4.69 1 2.38 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#31897E" transform="translate(511,217)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5.33 0.66 5.66 1.32 6 2 C3.03 1.505 3.03 1.505 0 1 C0 0.67 0 0.34 0 0 Z " fill="#2F897F" transform="translate(682,216)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1 1.98 1 3.96 1 6 C0.67 6 0.34 6 0 6 C0 4.02 0 2.04 0 0 Z " fill="#2E7D74" transform="translate(536,633)"/> +<path d="M0 0 C0.33 0 0.66 0 1 0 C1 1.98 1 3.96 1 6 C0.67 6 0.34 6 0 6 C0 4.02 0 2.04 0 0 Z " fill="#2D7C74" transform="translate(536,617)"/> +<path d="M0 0 C1.98 0 3.96 0 6 0 C6 0.33 6 0.66 6 1 C4.02 1 2.04 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#52997C" transform="translate(696,478)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C4.01 0.66 3.02 1.32 2 2 C1.34 1.34 0.68 0.68 0 0 Z " fill="#4B9A7F" transform="translate(552,294)"/> +<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C2.68 1.33 1.36 1.66 0 2 C0 1.34 0 0.68 0 0 Z " fill="#66935E" transform="translate(566,560)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.33 5 0.66 5 1 C3.35 1 1.7 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#509980" transform="translate(266,544)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.33 5 0.66 5 1 C3.35 1 1.7 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#589B7A" transform="translate(688,478)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.33 5 0.66 5 1 C3.35 1 1.7 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#629F77" transform="translate(680,478)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.33 5 0.66 5 1 C3.35 1 1.7 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#368B7F" transform="translate(746,294)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.33 5 0.66 5 1 C3.35 1 1.7 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#379082" transform="translate(688,294)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.33 5 0.66 5 1 C3.35 1 1.7 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#429380" transform="translate(624,294)"/> +<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.33 5 0.66 5 1 C3.35 1 1.7 1 0 1 C0 0.67 0 0.34 0 0 Z " fill="#48977E" transform="translate(544,294)"/> +<path d="M0 0 C4 1 4 1 4 1 Z " fill="#2F837B" transform="translate(432,741)"/> +<path d="M0 0 C1 4 1 4 1 4 Z " fill="#A1AE48" transform="translate(830,590)"/> +<path d="M0 0 C4 1 4 1 4 1 Z " fill="#4F997E" transform="translate(259,544)"/> +<path d="M0 0 C4 1 4 1 4 1 Z " fill="#E7D730" transform="translate(242,502)"/> +<path d="M0 0 C4 1 4 1 4 1 Z " fill="#D6C429" transform="translate(180,502)"/> +<path d="M0 0 C4 1 4 1 4 1 Z " fill="#48967F" transform="translate(737,478)"/> +<path d="M0 0 C4 1 4 1 4 1 Z " fill="#388E81" transform="translate(717,450)"/> +<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C1.34 2 0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#4A9078" transform="translate(272,422)"/> +<path d="M0 0 C1 4 1 4 1 4 Z " fill="#EFDC2C" transform="translate(561,364)"/> +<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.01 1 0.02 1 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#328B7F" transform="translate(672,216)"/> +<path d="M0 0 C4 1 4 1 4 1 Z " fill="#31897E" transform="translate(624,216)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#308479" transform="translate(467,748)"/> +<path d="M0 0 C0.66 0.66 1.32 1.32 2 2 C1.34 2 0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#31837A" transform="translate(400,723)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#338A83" transform="translate(460,672)"/> +<path d="" fill="#358C82" transform="translate(0,0)"/> +<path d="" fill="#388F83" transform="translate(0,0)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#439584" transform="translate(329,544)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#479682" transform="translate(317,544)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#4C9883" transform="translate(309,544)"/> +<path d="" fill="#54997B" transform="translate(0,0)"/> +<path d="" fill="#599B79" transform="translate(0,0)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#E8DA30" transform="translate(273,502)"/> +<path d="M0 0 C0.66 0.66 1.32 1.32 2 2 C1.34 2 0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#E5D12D" transform="translate(208,494)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#78A76A" transform="translate(672,477)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#D4C52C" transform="translate(181,472)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#368D81" transform="translate(725,450)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#398F81" transform="translate(709,450)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#599771" transform="translate(243,428)"/> +<path d="" fill="#378F84" transform="translate(0,0)"/> +<path d="" fill="#348B84" transform="translate(0,0)"/> +<path d="M0 0 C0.66 0 1.32 0 2 0 C1.67 0.66 1.34 1.32 1 2 C0.67 1.34 0.34 0.68 0 0 Z " fill="#BEC644" transform="translate(579,328)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#378E82" transform="translate(730,294)"/> +<path d="M0 0 C3 1 3 1 3 1 Z " fill="#328A7E" transform="translate(568,216)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#EED720" transform="translate(768,749)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#30837B" transform="translate(402,725)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#30837A" transform="translate(370,694)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#30827A" transform="translate(368,691)"/> +<path d="" fill="#32847C" transform="translate(0,0)"/> +<path d="" fill="#317F77" transform="translate(0,0)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#348B83" transform="translate(445,664)"/> +<path d="" fill="#2F8179" transform="translate(0,0)"/> +<path d="" fill="#33857C" transform="translate(0,0)"/> +<path d="" fill="#2F8077" transform="translate(0,0)"/> +<path d="" fill="#33877D" transform="translate(0,0)"/> +<path d="" fill="#2E7D75" transform="translate(0,0)"/> +<path d="" fill="#328B81" transform="translate(0,0)"/> +<path d="" fill="#2D7F74" transform="translate(0,0)"/> +<path d="" fill="#2E7D75" transform="translate(0,0)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#338D82" transform="translate(419,624)"/> +<path d="" fill="#379184" transform="translate(0,0)"/> +<path d="" fill="#94A64F" transform="translate(0,0)"/> +<path d="" fill="#3B9084" transform="translate(0,0)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#498868" transform="translate(553,568)"/> +<path d="" fill="#387B6B" transform="translate(0,0)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#409483" transform="translate(334,544)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#DDD536" transform="translate(309,502)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#E3D834" transform="translate(298,502)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#E7DA31" transform="translate(282,502)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#EBDA30" transform="translate(259,502)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#E3D131" transform="translate(221,502)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#DED133" transform="translate(655,495)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#E9D92C" transform="translate(645,495)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#6DA36D" transform="translate(677,478)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#C9C642" transform="translate(655,472)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#E6D731" transform="translate(631,464)"/> +<path d="" fill="#80A968" transform="translate(0,0)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#3C9181" transform="translate(694,450)"/> +<path d="" fill="#F4DE2B" transform="translate(0,0)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#398D82" transform="translate(285,400)"/> +<path d="" fill="#F0DC2B" transform="translate(0,0)"/> +<path d="" fill="#EADA2E" transform="translate(0,0)"/> +<path d="" fill="#BEC842" transform="translate(0,0)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#358B7F" transform="translate(755,294)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#3C9381" transform="translate(651,294)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#3D9483" transform="translate(648,294)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#34877D" transform="translate(761,293)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#328A80" transform="translate(376,292)"/> +<path d="" fill="#2B817B" transform="translate(0,0)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#30877F" transform="translate(758,217)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#328C80" transform="translate(598,217)"/> +<path d="M0 0 C2 1 2 1 2 1 Z " fill="#31897F" transform="translate(576,216)"/> +<path d="" fill="#E0CC22" transform="translate(0,0)"/> +<path d="" fill="#F0DA20" transform="translate(0,0)"/> +<path d="" fill="#F1DA21" transform="translate(0,0)"/> +<path d="" fill="#F1DA20" transform="translate(0,0)"/> +<path d="" fill="#F0D820" transform="translate(0,0)"/> +<path d="" fill="#C8C034" transform="translate(0,0)"/> +<path d="" fill="#BDBA37" transform="translate(0,0)"/> +<path d="" fill="#819E50" transform="translate(0,0)"/> +<path d="" fill="#7D9D52" transform="translate(0,0)"/> +<path d="" fill="#769850" transform="translate(0,0)"/> +<path d="" fill="#608C5A" transform="translate(0,0)"/> +<path d="" fill="#337E6F" transform="translate(0,0)"/> +<path d="" fill="#338479" transform="translate(0,0)"/> +<path d="" fill="#328679" transform="translate(0,0)"/> +<path d="" fill="#E8D024" transform="translate(0,0)"/> +<path d="" fill="#31837A" transform="translate(0,0)"/> +<path d="" fill="#30857B" transform="translate(0,0)"/> +<path d="" fill="#32817A" transform="translate(0,0)"/> +<path d="" fill="#30837B" transform="translate(0,0)"/> +<path d="" fill="#E0CC21" transform="translate(0,0)"/> +<path d="" fill="#E4CF23" transform="translate(0,0)"/> +<path d="" fill="#32837C" transform="translate(0,0)"/> +<path d="" fill="#31837A" transform="translate(0,0)"/> +<path d="" fill="#308279" transform="translate(0,0)"/> +<path d="" fill="#2F8478" transform="translate(0,0)"/> +<path d="" fill="#33837C" transform="translate(0,0)"/> +<path d="" fill="#31827B" transform="translate(0,0)"/> +<path d="" fill="#318479" transform="translate(0,0)"/> +<path d="" fill="#2E827A" transform="translate(0,0)"/> +<path d="" fill="#2E827A" transform="translate(0,0)"/> +<path d="" fill="#EFD722" transform="translate(0,0)"/> +<path d="" fill="#2F847C" transform="translate(0,0)"/> +<path d="" fill="#32857A" transform="translate(0,0)"/> +<path d="" fill="#348D82" transform="translate(0,0)"/> +<path d="" fill="#318A80" transform="translate(0,0)"/> +<path d="" fill="#358E85" transform="translate(0,0)"/> +<path d="" fill="#31857E" transform="translate(0,0)"/> +<path d="" fill="#318179" transform="translate(0,0)"/> +<path d="" fill="#EDD626" transform="translate(0,0)"/> +<path d="" fill="#ECD427" transform="translate(0,0)"/> +<path d="" fill="#338F86" transform="translate(0,0)"/> +<path d="" fill="#EAD625" transform="translate(0,0)"/> +<path d="" fill="#E8D227" transform="translate(0,0)"/> +<path d="" fill="#2F877D" transform="translate(0,0)"/> +<path d="" fill="#358F84" transform="translate(0,0)"/> +<path d="" fill="#307E75" transform="translate(0,0)"/> +<path d="" fill="#C6C035" transform="translate(0,0)"/> +<path d="" fill="#338A7F" transform="translate(0,0)"/> +<path d="" fill="#2F7F74" transform="translate(0,0)"/> +<path d="" fill="#317E74" transform="translate(0,0)"/> +<path d="" fill="#2D7D74" transform="translate(0,0)"/> +<path d="" fill="#389185" transform="translate(0,0)"/> +<path d="" fill="#307D73" transform="translate(0,0)"/> +<path d="" fill="#399184" transform="translate(0,0)"/> +<path d="" fill="#B2B33D" transform="translate(0,0)"/> +<path d="" fill="#3B9282" transform="translate(0,0)"/> +<path d="" fill="#BAB535" transform="translate(0,0)"/> +<path d="" fill="#C0BB36" transform="translate(0,0)"/> +<path d="" fill="#399282" transform="translate(0,0)"/> +<path d="" fill="#C4B92E" transform="translate(0,0)"/> +<path d="" fill="#378F84" transform="translate(0,0)"/> +<path d="" fill="#40806B" transform="translate(0,0)"/> +<path d="" fill="#D6CA29" transform="translate(0,0)"/> +<path d="" fill="#3F826B" transform="translate(0,0)"/> +<path d="" fill="#348D81" transform="translate(0,0)"/> +<path d="" fill="#DDCB29" transform="translate(0,0)"/> +<path d="" fill="#358F83" transform="translate(0,0)"/> +<path d="" fill="#378E82" transform="translate(0,0)"/> +<path d="" fill="#378E82" transform="translate(0,0)"/> +<path d="" fill="#368F82" transform="translate(0,0)"/> +<path d="" fill="#368D82" transform="translate(0,0)"/> +<path d="" fill="#378B81" transform="translate(0,0)"/> +<path d="" fill="#388D81" transform="translate(0,0)"/> +<path d="" fill="#378B7F" transform="translate(0,0)"/> +<path d="" fill="#36897F" transform="translate(0,0)"/> +<path d="" fill="#358274" transform="translate(0,0)"/> +<path d="" fill="#368176" transform="translate(0,0)"/> +<path d="" fill="#387D72" transform="translate(0,0)"/> +<path d="" fill="#367B6E" transform="translate(0,0)"/> +<path d="" fill="#4A8569" transform="translate(0,0)"/> +<path d="" fill="#387C6F" transform="translate(0,0)"/> +<path d="" fill="#337C6D" transform="translate(0,0)"/> +<path d="" fill="#5C8E62" transform="translate(0,0)"/> +<path d="" fill="#38887B" transform="translate(0,0)"/> +<path d="" fill="#42836B" transform="translate(0,0)"/> +<path d="" fill="#3B897A" transform="translate(0,0)"/> +<path d="" fill="#3E8B7B" transform="translate(0,0)"/> +<path d="" fill="#499983" transform="translate(0,0)"/> +<path d="" fill="#4E9C84" transform="translate(0,0)"/> +<path d="" fill="#499583" transform="translate(0,0)"/> +<path d="" fill="#4B9884" transform="translate(0,0)"/> +<path d="" fill="#489882" transform="translate(0,0)"/> +<path d="" fill="#4C9982" transform="translate(0,0)"/> +<path d="" fill="#499A81" transform="translate(0,0)"/> +<path d="" fill="#4F9B82" transform="translate(0,0)"/> +<path d="" fill="#499982" transform="translate(0,0)"/> +<path d="" fill="#4C9A83" transform="translate(0,0)"/> +<path d="" fill="#519B82" transform="translate(0,0)"/> +<path d="" fill="#529B80" transform="translate(0,0)"/> +<path d="" fill="#DFD637" transform="translate(0,0)"/> +<path d="" fill="#E7D833" transform="translate(0,0)"/> +<path d="" fill="#E7D933" transform="translate(0,0)"/> +<path d="" fill="#E9D932" transform="translate(0,0)"/> +<path d="" fill="#E9DC31" transform="translate(0,0)"/> +<path d="" fill="#EADB30" transform="translate(0,0)"/> +<path d="" fill="#ECDC31" transform="translate(0,0)"/> +<path d="" fill="#E5D831" transform="translate(0,0)"/> +<path d="" fill="#E5D731" transform="translate(0,0)"/> +<path d="" fill="#E2D531" transform="translate(0,0)"/> +<path d="" fill="#E3D532" transform="translate(0,0)"/> +<path d="" fill="#5B9E78" transform="translate(0,0)"/> +<path d="" fill="#5A9C77" transform="translate(0,0)"/> +<path d="" fill="#C4CB42" transform="translate(0,0)"/> +<path d="" fill="#D3BB2B" transform="translate(0,0)"/> +<path d="" fill="#EED92C" transform="translate(0,0)"/> +<path d="" fill="#F0DC2D" transform="translate(0,0)"/> +<path d="" fill="#EFDC2B" transform="translate(0,0)"/> +<path d="" fill="#C7C644" transform="translate(0,0)"/> +<path d="" fill="#E8D32A" transform="translate(0,0)"/> +<path d="" fill="#F5DC28" transform="translate(0,0)"/> +<path d="" fill="#5DA079" transform="translate(0,0)"/> +<path d="" fill="#C0CA43" transform="translate(0,0)"/> +<path d="" fill="#D9C123" transform="translate(0,0)"/> +<path d="" fill="#4A977F" transform="translate(0,0)"/> +<path d="" fill="#49967F" transform="translate(0,0)"/> +<path d="" fill="#5E9F79" transform="translate(0,0)"/> +<path d="" fill="#75A76C" transform="translate(0,0)"/> +<path d="" fill="#E4D12C" transform="translate(0,0)"/> +<path d="" fill="#478B76" transform="translate(0,0)"/> +<path d="" fill="#E1CD2C" transform="translate(0,0)"/> +<path d="" fill="#E2D233" transform="translate(0,0)"/> +<path d="" fill="#E0CE2C" transform="translate(0,0)"/> +<path d="" fill="#E9DE31" transform="translate(0,0)"/> +<path d="" fill="#E4D633" transform="translate(0,0)"/> +<path d="" fill="#DFCB2A" transform="translate(0,0)"/> +<path d="" fill="#E6DB32" transform="translate(0,0)"/> +<path d="" fill="#E6D931" transform="translate(0,0)"/> +<path d="" fill="#E4D72F" transform="translate(0,0)"/> +<path d="" fill="#DBCA2A" transform="translate(0,0)"/> +<path d="" fill="#408573" transform="translate(0,0)"/> +<path d="" fill="#F4E037" transform="translate(0,0)"/> +<path d="" fill="#36887B" transform="translate(0,0)"/> +<path d="" fill="#378A7F" transform="translate(0,0)"/> +<path d="" fill="#378C7F" transform="translate(0,0)"/> +<path d="" fill="#409481" transform="translate(0,0)"/> +<path d="" fill="#44947F" transform="translate(0,0)"/> +<path d="" fill="#F1DA33" transform="translate(0,0)"/> +<path d="" fill="#F2E031" transform="translate(0,0)"/> +<path d="" fill="#F4DE2F" transform="translate(0,0)"/> +<path d="" fill="#F8E32E" transform="translate(0,0)"/> +<path d="" fill="#449384" transform="translate(0,0)"/> +<path d="" fill="#F6E12C" transform="translate(0,0)"/> +<path d="" fill="#599B7C" transform="translate(0,0)"/> +<path d="" fill="#5C9671" transform="translate(0,0)"/> +<path d="" fill="#4B907B" transform="translate(0,0)"/> +<path d="" fill="#579071" transform="translate(0,0)"/> +<path d="" fill="#569071" transform="translate(0,0)"/> +<path d="" fill="#F4E02A" transform="translate(0,0)"/> +<path d="" fill="#F4DE2B" transform="translate(0,0)"/> +<path d="" fill="#438571" transform="translate(0,0)"/> +<path d="" fill="#3B8C7E" transform="translate(0,0)"/> +<path d="" fill="#3C8273" transform="translate(0,0)"/> +<path d="" fill="#379188" transform="translate(0,0)"/> +<path d="" fill="#399489" transform="translate(0,0)"/> +<path d="" fill="#389289" transform="translate(0,0)"/> +<path d="" fill="#399489" transform="translate(0,0)"/> +<path d="" fill="#3A9087" transform="translate(0,0)"/> +<path d="" fill="#399086" transform="translate(0,0)"/> +<path d="" fill="#3B8C80" transform="translate(0,0)"/> +<path d="" fill="#398B7E" transform="translate(0,0)"/> +<path d="" fill="#389083" transform="translate(0,0)"/> +<path d="" fill="#F1DB2B" transform="translate(0,0)"/> +<path d="" fill="#F2DB2C" transform="translate(0,0)"/> +<path d="" fill="#EED92E" transform="translate(0,0)"/> +<path d="" fill="#348E84" transform="translate(0,0)"/> +<path d="" fill="#EADA31" transform="translate(0,0)"/> +<path d="" fill="#E7D732" transform="translate(0,0)"/> +<path d="" fill="#398E84" transform="translate(0,0)"/> +<path d="" fill="#348B80" transform="translate(0,0)"/> +<path d="" fill="#D5D13D" transform="translate(0,0)"/> +<path d="" fill="#368C83" transform="translate(0,0)"/> +<path d="" fill="#B8C44A" transform="translate(0,0)"/> +<path d="" fill="#C0C243" transform="translate(0,0)"/> +<path d="" fill="#BCC645" transform="translate(0,0)"/> +<path d="" fill="#399082" transform="translate(0,0)"/> +<path d="" fill="#3E9183" transform="translate(0,0)"/> +<path d="" fill="#3A9083" transform="translate(0,0)"/> +<path d="" fill="#378A7E" transform="translate(0,0)"/> +<path d="" fill="#3C9282" transform="translate(0,0)"/> +<path d="" fill="#3E9184" transform="translate(0,0)"/> +<path d="" fill="#3B8D82" transform="translate(0,0)"/> +<path d="" fill="#3B9285" transform="translate(0,0)"/> +<path d="" fill="#3B9080" transform="translate(0,0)"/> +<path d="" fill="#32897E" transform="translate(0,0)"/> +<path d="" fill="#32897E" transform="translate(0,0)"/> +<path d="" fill="#3F8F81" transform="translate(0,0)"/> +<path d="" fill="#358B7F" transform="translate(0,0)"/> +<path d="" fill="#388C81" transform="translate(0,0)"/> +<path d="" fill="#378F82" transform="translate(0,0)"/> +<path d="" fill="#3A9182" transform="translate(0,0)"/> +<path d="" fill="#399082" transform="translate(0,0)"/> +<path d="" fill="#3F9581" transform="translate(0,0)"/> +<path d="" fill="#4A997F" transform="translate(0,0)"/> +<path d="" fill="#4A987F" transform="translate(0,0)"/> +<path d="" fill="#308379" transform="translate(0,0)"/> +<path d="" fill="#31887F" transform="translate(0,0)"/> +<path d="" fill="#2E837C" transform="translate(0,0)"/> +<path d="" fill="#2D877D" transform="translate(0,0)"/> +<path d="" fill="#30867E" transform="translate(0,0)"/> +<path d="" fill="#2C7E76" transform="translate(0,0)"/> +<path d="" fill="#2F877E" transform="translate(0,0)"/> +<path d="" fill="#2F887E" transform="translate(0,0)"/> +<path d="" fill="#30877D" transform="translate(0,0)"/> +<path d="" fill="#2D8178" transform="translate(0,0)"/> +<path d="" fill="#2E857A" transform="translate(0,0)"/> +<path d="" fill="#32887D" transform="translate(0,0)"/> +<path d="" fill="#30857C" transform="translate(0,0)"/> +<path d="" fill="#30897E" transform="translate(0,0)"/> +<path d="" fill="#2E897B" transform="translate(0,0)"/> +<path d="" fill="#318C7F" transform="translate(0,0)"/> +<path d="" fill="#338D81" transform="translate(0,0)"/> +<path d="" fill="#348E80" transform="translate(0,0)"/> +<path d="" fill="#318C7F" transform="translate(0,0)"/> +<path d="" fill="#328B80" transform="translate(0,0)"/> +<path d="" fill="#318A7E" transform="translate(0,0)"/> +<path d="" fill="#358D7E" transform="translate(0,0)"/> +<path d="" fill="#368C7F" transform="translate(0,0)"/> +<path d="" fill="#368F81" transform="translate(0,0)"/> +<path d="" fill="#348C81" transform="translate(0,0)"/> +<path d="" fill="#348C80" transform="translate(0,0)"/> +<path d="" fill="#338B80" transform="translate(0,0)"/> +<path d="" fill="#338B7F" transform="translate(0,0)"/> +<path d="" fill="#348C80" transform="translate(0,0)"/> +<path d="" fill="#32897F" transform="translate(0,0)"/> +<path d="" fill="#338C80" transform="translate(0,0)"/> +<path d="" fill="#358B81" transform="translate(0,0)"/> +<path d="" fill="#328A7E" transform="translate(0,0)"/> +<path d="" fill="#30887D" transform="translate(0,0)"/> +<path d="" fill="#2F867C" transform="translate(0,0)"/> +<path d="" fill="#30877E" transform="translate(0,0)"/> +<path d="" fill="#2E8A80" transform="translate(0,0)"/> +<path d="" fill="#2E887D" transform="translate(0,0)"/> +<path d="" fill="#2F887E" transform="translate(0,0)"/> +<path d="" fill="#31887D" transform="translate(0,0)"/> +<path d="" fill="#30897F" transform="translate(0,0)"/> +<path d="" fill="#2F897F" transform="translate(0,0)"/> +<path d="" fill="#31897C" transform="translate(0,0)"/> +<path d="" fill="#318A7F" transform="translate(0,0)"/> +<path d="" fill="#318A7F" transform="translate(0,0)"/> +<path d="" fill="#328B7F" transform="translate(0,0)"/> +<path d="" fill="#328A7E" transform="translate(0,0)"/> +<path d="" fill="#2F8A7F" transform="translate(0,0)"/> +<path d="" fill="#32897E" transform="translate(0,0)"/> +<path d="" fill="#308B81" transform="translate(0,0)"/> +<path d="" fill="#318A7F" transform="translate(0,0)"/> +<path d="" fill="#32897D" transform="translate(0,0)"/> +<path d="" fill="#328A7F" transform="translate(0,0)"/> +<path d="" fill="#318A7F" transform="translate(0,0)"/> +<path d="" fill="#31897F" transform="translate(0,0)"/> +<path d="" fill="#338B80" transform="translate(0,0)"/> +<path d="" fill="#32897E" transform="translate(0,0)"/> +<path d="" fill="#31897F" transform="translate(0,0)"/> +<path d="" fill="#318A7F" transform="translate(0,0)"/> +<path d="" fill="#318A80" transform="translate(0,0)"/> +<path d="" fill="#32887E" transform="translate(0,0)"/> +<path d="" fill="#31897E" transform="translate(0,0)"/> +</svg> diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg deleted file mode 100644 index 7f3cb24..0000000 --- a/frontend/public/favicon.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> - <rect width="32" height="32" rx="8" fill="#131507"/> - <line x1="8" y1="8" x2="20" y2="22" stroke="#8FA828" stroke-width="2.8" stroke-linecap="round"/> - <path d="M24 8 L16 16 L16 21 C16 24 12.5 25 10.5 23" stroke="#8FA828" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round" fill="none"/> - <circle cx="8.5" cy="22" r="2.2" fill="#C8BFA2"/> -</svg> diff --git a/frontend/public/file.svg b/frontend/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/frontend/public/file.svg +++ /dev/null @@ -1 +0,0 @@ -<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg> \ No newline at end of file diff --git a/frontend/public/globe.svg b/frontend/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/frontend/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ -<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg> \ No newline at end of file diff --git a/frontend/public/logo.svg b/frontend/public/logo.svg deleted file mode 100644 index 9c49bc1..0000000 --- a/frontend/public/logo.svg +++ /dev/null @@ -1,12 +0,0 @@ -<svg viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"> - <!-- Dark olive background --> - <rect x="1" y="1" width="42" height="42" rx="12" fill="#131507" stroke="#2E3215" stroke-width="1.5"/> - <!-- Main diagonal stroke: top-left to bottom-right --> - <line x1="12" y1="12" x2="28" y2="30" stroke="#8FA828" stroke-width="3.2" stroke-linecap="round"/> - <!-- Hook stroke: top-right diagonal curving into a left hook at bottom --> - <path d="M32 12 L22 22 L22 28 C22 32 17.5 33.5 15 31" stroke="#8FA828" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round" fill="none"/> - <!-- Off-white anchor dot β€” forge spark --> - <circle cx="12" cy="30" r="2.8" fill="#C8BFA2"/> - <!-- Small olive top-right spark --> - <circle cx="32" cy="12" r="1.8" fill="#8FA828" opacity="0.6"/> -</svg> diff --git a/frontend/public/next.svg b/frontend/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/frontend/public/next.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg> \ No newline at end of file diff --git a/frontend/public/vercel.svg b/frontend/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/frontend/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ -<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg> \ No newline at end of file diff --git a/frontend/public/window.svg b/frontend/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/frontend/public/window.svg +++ /dev/null @@ -1 +0,0 @@ -<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg> \ No newline at end of file diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 3a13f90..9e9bbf7 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -1,7 +1,10 @@ { "compilerOptions": { - "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -19,16 +22,20 @@ } ], "paths": { - "@/*": ["./*"] - } + "@/*": [ + "./*" + ] + }, + "target": "ES2017" }, "include": [ "next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", - ".next/dev/types/**/*.ts", - "**/*.mts" + ".next/dev/types/**/*.ts" ], - "exclude": ["node_modules"] + "exclude": [ + "node_modules" + ] } diff --git a/frontend/types/global.d.ts b/frontend/types/global.d.ts new file mode 100644 index 0000000..6075a14 --- /dev/null +++ b/frontend/types/global.d.ts @@ -0,0 +1,10 @@ +import React from "react"; + +declare global { + namespace JSX { + interface IntrinsicElements { + "appkit-button": any; + "appkit-network-button": any; + } + } +} diff --git a/frontend/vercel.json b/frontend/vercel.json new file mode 100644 index 0000000..d959418 --- /dev/null +++ b/frontend/vercel.json @@ -0,0 +1,7 @@ +{ + "version": 2, + "installCommand": "npm install --legacy-peer-deps", + "buildCommand": "npm run build", + "outputDirectory": ".next", + "framework": "nextjs" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..38f2c98 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "epochsend-monorepo", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "npm run dev --prefix frontend", + "build": "npm run build --prefix frontend", + "start": "npm run start --prefix frontend", + "lint": "npm run lint --prefix frontend" + } +} diff --git a/smartcontract/.env.example b/smartcontract/.env.example deleted file mode 100644 index 861d418..0000000 --- a/smartcontract/.env.example +++ /dev/null @@ -1,20 +0,0 @@ -# Account Configuration -# Private key for deployment (NEVER commit this!) -PRIVATE_KEY=your_private_key_here - -# Network Configuration -# Base Mainnet RPC URL -BASE_RPC_URL=https://mainnet.base.org - -# Optional: Base Sepolia RPC URL (for reference) -BASE_SEPOLIA_RPC_URL=https://sepolia.base.org - -# API Keys -# Etherscan/BaseScan API Key for contract verification -ETHERSCAN_API_KEY=your_etherscan_api_key_here - -# Alchemy/Infura API Key (optional fallback) -ALCHEMY_API_KEY= - -# CoinMarketCap API Key for gas reporting (optional) -COINMARKETCAP_API_KEY= diff --git a/smartcontract/.gitignore b/smartcontract/.gitignore deleted file mode 100644 index 2b6243d..0000000 --- a/smartcontract/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# Hardhat files -cache/ -artifacts/ -typechain-types/ - -# Node -node_modules/ - -# Environment variables -.env -.env.local -.env.*.local - -# IDE -.vscode/ -.idea/ -*.swp -*.swo -*~ - -# OS -.DS_Store -Thumbs.db - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Coverage -coverage/ -coverage.json - -# Build outputs -dist/ -build/ - -# Misc -*.sol.js -*.sol.ts diff --git a/smartcontract/README.md b/smartcontract/README.md deleted file mode 100644 index 49c48f4..0000000 --- a/smartcontract/README.md +++ /dev/null @@ -1,207 +0,0 @@ -# SmartX β€” Smart Contracts - -Solidity smart contracts for SmartX - a decentralized vault platform enabling users to create multiple ERC-4626 compliant vaults for automated yield generation. Deployed on Base Mainnet. - -## Overview - -SmartX is a comprehensive DeFi platform that allows users to: - -- **Create Multiple Vaults**: Each user can create multiple personal ERC-4626 compliant vaults -- **Automated Yield Generation**: Deploy assets to DeFi protocols (Aave, Compound, Uniswap) automatically -- **ERC-4626 Standard**: Industry-standard tokenized vault interface for maximum interoperability -- **Share-Based Ownership**: Transferable ERC-20 vault shares representing ownership -- **Protocol Allocations**: Configure how assets are distributed across different DeFi protocols - - -SmartX smart contracts implement: - -### VaultFactory Contract - -- **Multi-vault creation** for registered users -- **User registration system** with username and bio -- **Protocol address management** (Aave, Compound, Uniswap, WETH) -- **Admin system** for protocol configuration -- **Vault tracking** and ownership management - -### UserVault Contract (ERC-4626) - -- **ERC-4626 standard compliance** for tokenized vaults -- **ERC-20 share tokens** representing vault ownership -- **Deposit/Withdraw/Mint/Redeem** operations -- **Protocol integration** for yield generation -- **Allocation management** across DeFi protocols -- **Pause/unpause** functionality - -Built with Solidity, Hardhat, and deployed on Base Mainnet. - -## Tech Stack - -- **Language:** Solidity ^0.8.20 -- **Framework:** Hardhat -- **Testing:** Hardhat Test Suite, Chai -- **Network:** Base Mainnet -- **Chain ID:** 8453 - -## Quick Start - -```bash -# Install dependencies -npm install - -# Compile contracts -npx hardhat compile - -# Run tests -npx hardhat test - -# Deploy to Base Mainnet -npx hardhat run scripts/deploy.js --network base -``` - -## Project Structure - -``` -smartx-smartcontracts/ -β”œβ”€β”€ contracts/ -β”‚ β”œβ”€β”€ VaultFactory.sol # Factory contract for vault deployment -β”‚ β”œβ”€β”€ UserVault.sol # ERC-4626 compliant vault contract -β”‚ β”œβ”€β”€ interfaces/ -β”‚ β”‚ β”œβ”€β”€ IERC4626.sol # ERC-4626 interface -β”‚ β”‚ β”œβ”€β”€ IERC20.sol # ERC-20 interface -β”‚ β”‚ └── IProtocol.sol # Protocol interface -β”‚ └── libraries/ -β”‚ └── VaultMath.sol # Math utilities for vault calculations -β”œβ”€β”€ scripts/ -β”‚ β”œβ”€β”€ deploy.js # Deployment script -β”‚ β”œβ”€β”€ verify.js # Contract verification script -β”‚ └── initialize.js # Contract initialization script -β”œβ”€β”€ test/ -β”‚ β”œβ”€β”€ VaultFactory.test.js # Factory contract tests -β”‚ β”œβ”€β”€ UserVault.test.js # Vault contract tests -β”‚ └── integration.test.js # Integration tests -β”œβ”€β”€ hardhat.config.js # Hardhat configuration -└── package.json # Dependencies -``` - -## Contract Architecture - -### VaultFactory.sol - -**Purpose:** Central factory managing vault creation, user registration, and protocol configuration. - -**Key Functions:** -- `registerUser(string username, string bio)` - Register user profile -- `createVault(address asset)` - Create new ERC-4626 vault -- `getUserVaults(address user)` - Get all vaults for a user -- `setAaveAddress(address)` - Admin: Set Aave protocol address -- `addAdmin(address)` - Admin: Add new admin - -**Events:** -- `VaultCreated(address indexed owner, address indexed vault, uint256 timestamp)` -- `UserRegistered(address indexed user, uint256 timestamp)` - -### UserVault.sol - -**Purpose:** Individual ERC-4626 compliant vault with DeFi protocol integration. - -**Key Functions (ERC-4626):** -- `deposit(uint256 assets, address receiver)` - Deposit assets, receive shares -- `withdraw(uint256 assets, address receiver, address owner)` - Withdraw assets -- `mint(uint256 shares, address receiver)` - Mint shares for assets -- `redeem(uint256 shares, address receiver, address owner)` - Redeem shares -- `totalAssets()` - Total assets managed by vault -- `convertToShares(uint256 assets)` - Convert assets to shares -- `convertToAssets(uint256 shares)` - Convert shares to assets - -**Key Functions (Vault Management):** -- `setProtocolAllocation(string protocol, uint256 amount)` - Configure allocation -- `deployToAave(uint256 amount)` - Deploy assets to Aave -- `deployToCompound(uint256 amount)` - Deploy assets to Compound -- `pause()` / `unpause()` - Emergency controls - -**Events:** -- `Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)` -- `Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)` - -## Contributing - -We welcome contributions! To get started: - -1. **Pick an issue** from [`ISSUES.md`](./ISSUES.md) -2. **Create a branch** using the issue number: `issue/<number>-short-description` -3. **Implement your changes** following the issue's acceptance criteria -4. **Write tests** for your changes -5. **Submit a PR** with the issue number in the title/description - -When pushing your changes, include the issue number or title in your commit messages. - -## Environment Variables - -Create a `.env` file: - -```env -PRIVATE_KEY=your_private_key -BASE_RPC_URL=https://mainnet.base.org -ETHERSCAN_API_KEY=your_etherscan_api_key -``` - -**Note:** Never commit your private key or `.env` file to version control! - -## Network Configuration - -### Base Sepolia Testnet - -- **Chain ID:** 84532 -- **RPC URL:** `https://sepolia.base.org` -- **Explorer:** [Base Sepolia Explorer](https://sepolia.basescan.org/) -- **Faucet:** [Base Sepolia Faucet](https://www.coinbase.com/faucets/base-ethereum-goerli-faucet) - -## Deployment - -### Deploy VaultFactory - -```bash -npx hardhat run scripts/deploy.js --network baseSepolia -``` - -### Initialize VaultFactory - -```bash -npx hardhat run scripts/initialize.js --network baseSepolia -``` - -### Verify Contracts - -```bash -npx hardhat verify --network baseSepolia <CONTRACT_ADDRESS> <CONSTRUCTOR_ARGS> -``` - -## Testing - -```bash -# Run all tests -npx hardhat test - -# Run specific test file -npx hardhat test test/UserVault.test.js - -# Run tests with gas reporting -REPORT_GAS=true npx hardhat test - -# Coverage report -npx hardhat coverage -``` - -## Security - -- All contracts follow best practices -- Access control implemented for admin functions -- Reentrancy guards on critical functions -- Input validation on all user inputs -- Comprehensive test coverage - -**Note:** Contracts should be audited before mainnet deployment. - -## License - -MIT License - see LICENSE file for details. diff --git a/smartcontract/TODO.md b/smartcontract/TODO.md deleted file mode 100644 index 92c9202..0000000 --- a/smartcontract/TODO.md +++ /dev/null @@ -1,784 +0,0 @@ -# Smart Contracts Issues - -This file contains all GitHub issues for the ForgeX smart contracts. Each issue is ready to be copied into GitHub. - -## βœ… Completed Issues - -### Issue #1: Project Setup & Hardhat Configuration - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `infrastructure`, `setup` - -**Priority:** HIGH - -**Description:** - -Set up Hardhat project with proper configuration for Base Mainnet. Configure compiler settings, network settings, and necessary plugins. - -**Acceptance Criteria:** - -- [x] Initialize npm project with `package.json` -- [x] Install Hardhat and dependencies -- [x] Configure `hardhat.config.js`: - - [x] Solidity compiler version (^0.8.20) - - [x] Base Mainnet network configuration - - [x] Gas optimization settings - - [x] Etherscan verification plugin -- [x] Create project folder structure: - - [x] `contracts/` directory - - [x] `scripts/` directory - - [x] `test/` directory -- [x] Set up environment variables file (`.env.example`) -- [x] Add `.gitignore` for artifacts, cache, node_modules, .env -- [x] Create basic README.md structure - -**Implementation Notes:** - -- Use Hardhat version ^2.19.0 or latest -- Install: `@nomicfoundation/hardhat-toolbox` -- Configure Base Mainnet RPC: `https://mainnet.base.org` -- Chain ID: 8453 -- Solidity optimizer enabled with 200 runs - -**Completed:** All acceptance criteria met. Project structure created, dependencies installed, and Hardhat configured for Base Mainnet. - ---- - -### Issue #2: ERC-4626 Interface Implementation - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `standard`, `erc4626` - -**Priority:** HIGH - -**Description:** - -Implement the ERC-4626 interface (`IERC4626.sol`) in the contracts directory. This is the standard interface that all vault contracts must implement. - -**Acceptance Criteria:** - -- [x] Create `contracts/interfaces/IERC4626.sol` -- [x] Implement all required ERC-4626 functions: - - [x] `asset()` - Returns the address of the underlying asset - - [x] `totalAssets()` - Returns total assets managed - - [x] `convertToShares(uint256 assets)` - Assets to shares conversion - - [x] `convertToAssets(uint256 shares)` - Shares to assets conversion - - [x] `maxDeposit(address)` - Maximum deposit for receiver - - [x] `maxMint(address)` - Maximum shares to mint - - [x] `maxWithdraw(address owner)` - Maximum withdraw for owner - - [x] `maxRedeem(address owner)` - Maximum shares to redeem - - [x] `previewDeposit(uint256 assets)` - Preview deposit - - [x] `previewMint(uint256 shares)` - Preview mint - - [x] `previewWithdraw(uint256 assets)` - Preview withdraw - - [x] `previewRedeem(uint256 shares)` - Preview redeem -- [x] Implement all required ERC-4626 events: - - [x] `Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)` - - [x] `Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)` -- [x] Follow ERC-4626 standard specification exactly -- [x] Add NatSpec documentation for all functions - -**Implementation Notes:** - -- Reference: [EIP-4626 Specification](https://eips.ethereum.org/EIPS/eip-4626) -- Interface should extend IERC20 for share tokens -- All functions must match standard signatures exactly -- Use proper event indexing - -**Completed:** All acceptance criteria met. UserVault contract created with full ERC-4626 compliance, including deposit/withdraw/mint/redeem functions, proper share calculations, asset management, access control, events, and comprehensive NatSpec documentation. Comprehensive test suite created with 40+ test cases covering all functionality and edge cases. - ---- - -### Issue #3: UserVault Contract β€” Core ERC-4626 Implementation - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `erc4626`, `vault` - -**Priority:** HIGH - -**Description:** - -Implement the core UserVault contract that extends ERC-4626 standard. This contract handles deposits, withdrawals, share calculations, and basic vault functionality. - -**Acceptance Criteria:** - -- [x] Create `contracts/UserVault.sol` -- [x] Implement ERC-4626 interface -- [x] Extend ERC20 for vault shares -- [x] Core functionality: - - [x] `deposit(uint256 assets, address receiver)` - Deposit assets, mint shares - - [x] `withdraw(uint256 assets, address receiver, address owner)` - Withdraw assets, burn shares - - [x] `mint(uint256 shares, address receiver)` - Mint shares for assets - - [x] `redeem(uint256 shares, address receiver, address owner)` - Redeem shares for assets -- [x] Share calculation logic: - - [x] First deposit: 1:1 ratio (assets = shares) - - [x] Subsequent deposits: proportional based on total assets/shares - - [x] Handle edge cases (zero assets, zero shares) -- [x] Asset management: - - [x] Store underlying asset address - - [x] Track total assets and total shares - - [x] Transfer assets from/to users -- [x] Access control: - - [x] Owner-only functions - - [x] Proper ownership checks -- [x] Events emitted for all operations -- [x] NatSpec documentation - -**Implementation Notes:** - -- Used OpenZeppelin's ERC20 implementation for shares -- Implemented proper rounding in share calculations (round down for safety) -- Handled first deposit edge case correctly -- Used Solidity 0.8+ built-in overflow protection -- Used SafeERC20 for all token transfers -- Comprehensive test suite with 40+ test cases - ---- - -### Issue #4: VaultFactory Contract β€” User Registration - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `factory` - -**Priority:** HIGH - -**Description:** - -Implement user registration functionality in VaultFactory contract. Users must register with a username and bio before creating vaults. - -**Acceptance Criteria:** - -- [x] Create `contracts/VaultFactory.sol` (or add to existing) -- [x] User registration: - - [x] `registerUser(string username, string bio)` function - - [x] Username validation (max 20 characters) - - [x] Bio validation (max 30 characters) - - [x] Prevent duplicate registration - - [x] Store registration timestamp -- [x] Storage structure: - - [x] `mapping(address => bool) registeredUsers` - - [x] `mapping(address => string) userUsernames` - - [x] `mapping(address => string) userBios` - - [x] `mapping(address => uint256) userRegistrationTimestamps` -- [x] View functions: - - [x] `isUserRegistered(address user) returns (bool)` - - [x] `getUserInfo(address user) returns (string, string, uint256)` -- [x] Event: `UserRegistered(address indexed user, uint256 timestamp)` -- [x] Input validation and error messages -- [x] Gas optimization considerations - -**Implementation Notes:** - -- Used custom errors for gas optimization -- Stored strings directly for better UX -- Added comprehensive validation -- Used calldata for function parameters -- Comprehensive test suite with 50+ test cases - -**Completed:** All acceptance criteria met. VaultFactory contract created with user registration functionality, validation, custom errors, view functions, and comprehensive testing. - ---- - -### Issue #4.5: Chainlink Price Feeds Integration - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `chainlink`, `price-feeds` - -**Priority:** MEDIUM - -**Description:** - -Integrate Chainlink Price Feeds into UserVault contract to provide real-time USD valuation of vault assets and shares. This enables better portfolio tracking and accurate asset pricing. - -**Acceptance Criteria:** - -- [x] Add Chainlink dependencies: - - [x] Install `@chainlink/contracts` package - - [x] Import `AggregatorV3Interface` -- [x] Modify UserVault contract: - - [x] Add price feed address to constructor - - [x] Store price feed reference as state variable - - [x] Implement `getTotalValueUSD()` function - - [x] Implement `getSharePriceUSD()` function - - [x] Implement `getAssetPriceUSD()` function -- [x] Price feed functions: - - [x] `getTotalValueUSD()` - Returns total vault value in USD - - [x] `getSharePriceUSD()` - Returns price per share in USD - - [x] `getAssetPriceUSD()` - Returns current asset price from Chainlink -- [x] VaultFactory updates: - - [x] Store price feed addresses for different assets - - [x] Pass correct price feed when creating vaults - - [x] Admin function to update price feed addresses -- [x] Testing: - - [x] Mock Chainlink price feed for tests - - [x] Test USD value calculations - - [x] Test with different price scenarios - - [x] Test price feed failures/fallbacks -- [x] Documentation: - - [x] Document price feed addresses for Base Mainnet - - [x] Add NatSpec for new functions - - [x] Update README with Chainlink integration - -**Implementation Notes:** - -- Use Chainlink Price Feeds available on Base Mainnet -- Handle price feed decimals correctly (usually 8 decimals) -- Implement fallback mechanism for price feed failures -- Consider staleness checks for price data -- Price feeds for common assets: - - ETH/USD: Available on Base Mainnet - - USDC/USD: Available on Base Mainnet - - Add more as needed - -**Base Mainnet Price Feed Addresses:** - -- ETH/USD: `0x71041dddad3595F745215C98a901844ED99Db595` -- USDC/USD: `0x7e860098F58bBFC8648a4311b374B1D669a2bc6B` - ---- - -### Issue #5: VaultFactory Contract β€” Vault Creation - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `factory`, `vault` - -**Priority:** HIGH - -**Description:** - -Implement vault creation functionality in VaultFactory. Registered users can create multiple ERC-4626 vaults. Factory should deploy new UserVault contracts. - -**Acceptance Criteria:** - -- [x] Vault creation function: - - [x] `createVault(address asset) returns (address)` - Creates new vault - - [x] Check user is registered - - [x] Deploy new UserVault contract - - [x] Initialize vault with owner, asset, factory - - [x] Track vault in user's vault list -- [x] Storage structure: - - [x] `mapping(address => address[]) userVaults` - User's vault addresses - - [x] `mapping(address => address) vaultOwners` - Vault owner mapping - - [x] `mapping(address => uint256) vaultCreatedAt` - Creation timestamps - - [x] `uint256 totalVaults` - Total vaults created -- [x] View functions: - - [x] `getUserVaults(address user) returns (address[])` - - [x] `getVaultOwner(address vault) returns (address)` - - [x] `getTotalVaults() returns (uint256)` -- [x] Event: `VaultCreated(address indexed owner, address indexed vault, address indexed asset, uint256 timestamp)` -- [x] Gas optimization for vault deployment - -**Implementation Notes:** - -- Implemented `createVault` function with `new UserVault()` -- Enforced strict price feed requirement for vault creation -- Added comprehensive storage for vault tracking -- Added view functions for vault querying -- Gas optimization using custom errors -- Verified with comprehensive test suite - -**Completed:** All acceptance criteria met. VaultFactory can now create and track UserVaults for registered users. - ---- - -### Issue #6: VaultFactory Contract β€” Admin System - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `factory`, `admin` - -**Priority:** MEDIUM - -**Description:** - -Implement admin system in VaultFactory for managing protocol addresses and platform configuration. Deployer should be initial admin. - -**Acceptance Criteria:** - -- [x] Admin management: - - [x] `addAdmin(address newAdmin)` - Add admin (admin only) - - [x] `removeAdmin(address admin)` - Remove admin (admin only) - - [x] Deployer is initial admin (in constructor) - - [x] Cannot remove deployer admin -- [x] Storage structure: - - [x] `address deployerAdmin` - Deployer address - - [x] `mapping(address => bool) admins` - Admin addresses - - [x] `uint256 adminCount` - Total admin count -- [x] Modifier: `onlyAdmin()` for access control -- [x] View functions: - - [x] `isAdmin(address) returns (bool)` - - [x] `getAdminCount() returns (uint256)` -- [x] Events: - - [x] `AdminAdded(address indexed admin, address indexed addedBy)` - - [x] `AdminRemoved(address indexed admin, address indexed removedBy)` -- [x] Proper access control checks - -**Implementation Notes:** - -- Implemented parallel `onlyAdmin` role alongside Ownable -- Secured initialization: Deployer is `deployerAdmin` -- Added protection: `deployerAdmin` cannot be removed -- Added event logging for all admin changes -- Verified with comprehensive test suite (VaultFactory.test.ts) - -**Completed:** All acceptance criteria met. Admin system fully implemented and tested. - ---- - -### Issue #7: VaultFactory Contract β€” Protocol Address Management - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `factory`, `admin` - -**Priority:** HIGH - -**Description:** - -Implement protocol address management in VaultFactory. Admins can set addresses for DeFi protocols (Aave, Compound, Uniswap, WETH) that vaults will interact with. - -**Acceptance Criteria:** - -- [x] Protocol address setters (admin only): - - [x] `setAaveAddress(address aaveAddress)` - - [x] `setCompoundAddress(address compoundAddress)` - - [x] `setUniswapAddress(address uniswapAddress)` - - [x] `setWETHAddress(address wethAddress)` -- [x] Storage structure: - - [x] `address aaveLendingPool` - - [x] `address compoundComptroller` - - [x] `address uniswapRouter` - - [x] `address wethAddress` -- [x] View functions: - - [x] `getAaveAddress() returns (address)` - - [x] `getCompoundAddress() returns (address)` - - [x] `getUniswapAddress() returns (address)` - - [x] `getWETHAddress() returns (address)` -- [x] Events: - - [x] `ProtocolAddressSet(string indexed protocol, address indexed newAddress, address indexed setBy)` -- [x] Validation (non-zero addresses) -- [x] Admin access control - -**Implementation Notes:** - -- Implemented storage for Aave, Compound, Uniswap, and WETH addresses -- All setter functions protected with `onlyAdmin` modifier -- Added `ZeroAddress` custom error for validation -- Emits `ProtocolAddressSet` event with protocol name, new address, and setter -- Verified with comprehensive test suite (11 new tests) - -**Completed:** All acceptance criteria met. Protocol address management fully implemented and tested. - ---- - -### Issue #8: UserVault Contract β€” Protocol Allocation Management - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `vault`, `defi` - -**Priority:** HIGH - -**Description:** - -Implement protocol allocation management in UserVault. Owners can configure how their vault assets are allocated across different DeFi protocols. - -**Acceptance Criteria:** - -- [x] Allocation management: - - [x] `setProtocolAllocation(string protocol, uint256 amount)` - Set allocation (owner only) - - [x] `getProtocolAllocation(string protocol) returns (uint256)` - Get allocation -- [x] Storage structure: - - [x] `mapping(string => uint256) protocolAllocations` - Protocol name to amount -- [x] Validation: - - [x] Total allocations cannot exceed total assets - - [x] Protocol name validation - - [x] Amount validation (non-negative) -- [x] Event: `ProtocolAllocationChanged(string indexed protocol, uint256 oldAmount, uint256 newAmount)` -- [x] View function to get all allocations -- [x] Owner-only access control - -**Implementation Notes:** - -- Implemented storage mapping for protocol allocations -- Added array tracking for protocol names to enable iteration -- All setter functions protected with `onlyOwner` modifier -- Added custom errors for validation (`InvalidProtocolName`, `AllocationExceedsBalance`) -- Implemented `getTotalAllocated()` and `getAllProtocolAllocations()` view functions -- Verified with comprehensive test suite (13 new tests) - -**Completed:** All acceptance criteria met. Protocol allocation management fully implemented and tested. - ---- - -### Issue #9: UserVault Contract β€” Aave Integration - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `vault`, `defi`, `aave` - -**Priority:** MEDIUM - -**Description:** - -Implement Aave protocol integration in UserVault. Allow vault to deploy assets to Aave lending pool to earn interest. - -**Acceptance Criteria:** - -- [x] Aave integration: - - [x] `deployToAave(uint256 amount)` - Deploy assets to Aave (owner only) - - [x] `withdrawFromAave(uint256 amount)` - Withdraw from Aave (owner only) - - [x] `getAaveBalance() returns (uint256)` - Get deposited balance -- [x] Implementation: - - [x] Approve Aave to spend vault assets - - [x] Call Aave's `supply()` function - - [x] Track Aave aTokens received - - [x] Handle Aave withdrawals -- [x] Safety: - - [x] Check protocol address is set - - [x] Validate amounts - - [x] Handle errors gracefully -- [x] Events: - - [x] `ProtocolDeployed(string indexed protocol, uint256 amount)` - - [x] `ProtocolWithdrawn(string indexed protocol, uint256 amount)` -- [x] Update total assets after deployment - -**Implementation Notes:** - -- Created IAaveLendingPool interface for Aave V3 integration -- Implemented deployToAave, withdrawFromAave, and getAaveBalance functions -- Added state tracking with aaveDeposited variable -- Added AaveOperationFailed custom error for error handling -- Updated IVaultFactory interface to include getAaveAddress() -- Created MockAaveLendingPool contract for comprehensive testing -- Comprehensive test suite with 40+ test cases covering: - - Deployment with various scenarios and edge cases - - Withdrawal with partial and full redemption - - Balance tracking accuracy and consistency - - Protocol allocation integration - - Event emission verification - - Pause/unpause behavior - - Access control and owner-only operations - - Vault state integrity during Aave operations - -**Completed:** All acceptance criteria met. Aave integration fully implemented with proper error handling, events, balance tracking, and comprehensive test coverage. - ---- - -### Issue #10: UserVault Contract β€” Compound Integration - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `vault`, `defi`, `compound` - -**Priority:** MEDIUM - -**Description:** - -Implement Compound protocol integration in UserVault. Allow vault to deploy assets to Compound to earn interest. - -**Acceptance Criteria:** - -- [x] Compound integration: - - [x] `deployToCompound(uint256 amount)` - Deploy assets to Compound (owner only) - - [x] `withdrawFromCompound(uint256 amount)` - Withdraw from Compound (owner only) - - [x] `getCompoundBalance() returns (uint256)` - Get deposited balance -- [x] Implementation: - - [x] Approve Compound cToken contract - - [x] Call Compound's `mint()` function - - [x] Track Compound cTokens received - - [x] Handle Compound redemptions -- [x] Safety: - - [x] Check protocol address is set - - [x] Validate amounts - - [x] Handle errors gracefully -- [x] Events: - - [x] `ProtocolDeployed(string indexed protocol, uint256 amount)` - - [x] `ProtocolWithdrawn(string indexed protocol, uint256 amount)` -- [x] Update total assets after deployment - -**Implementation Notes:** - -- Created ICToken interface for Compound V2 integration -- Implemented deployToCompound, withdrawFromCompound, and getCompoundBalance functions -- Added state tracking with compoundDeposited variable -- Updated totalAssets() to include Compound balance -- Created MockCToken contract for testing -- Comprehensive test suite with 25+ test cases (15 passing, 10 need minor adjustments) -- All core functionality working correctly - -**Completed:** All acceptance criteria met. Compound integration fully implemented with proper error handling, events, and balance tracking. - ---- - -### Issue #11: UserVault Contract β€” Pause/Unpause Functionality - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `feature`, `vault`, `security` - -**Priority:** MEDIUM - -**Description:** - -Implement pause/unpause functionality in UserVault for emergency stops. Only owner can pause/unpause the vault. - -**Acceptance Criteria:** - -- [x] Pause functionality: - - [x] `pause()` - Pause vault operations (owner only) - - [x] `unpause()` - Resume vault operations (owner only) -- [x] Storage: - - [x] `bool private _paused` - Pause state -- [x] Modifier: `whenNotPaused()` for protected functions -- [x] Protected functions: - - [x] `deposit()`, `withdraw()`, `mint()`, `redeem()` - - [x] Protocol deployment functions (`deployToCompound()`, `withdrawFromCompound()`) -- [x] View function: - - [x] `isPaused() returns (bool)` -- [x] Events: - - [x] `VaultPaused(address indexed vault, address indexed pausedBy)` - - [x] `VaultUnpaused(address indexed vault, address indexed unpausedBy)` -- [x] Clear error messages when paused (`EnforcedPause()`) - -**Implementation Notes:** - -- Used custom implementation (more gas-efficient than OpenZeppelin Pausable) -- All critical functions protected with `whenNotPaused` modifier -- View functions remain accessible when paused -- Comprehensive test suite with 19 passing tests -- 8 modular commits - -**Completed:** All acceptance criteria met. Pause/unpause functionality fully implemented with proper error handling, events, and comprehensive testing. - ---- - -### Issue #12: Comprehensive Test Suite β€” VaultFactory - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `testing`, `factory` - -**Priority:** HIGH - -**Description:** - -Write comprehensive test suite for VaultFactory contract covering all functions, edge cases, and error scenarios. - -**Acceptance Criteria:** - -- [x] Create `test/VaultFactory.test.ts` -- [x] Test user registration: - - [x] Successful registration - - [x] Duplicate registration fails - - [x] Username length validation - - [x] Bio length validation - - [x] Event emission -- [x] Test vault creation: - - [x] Successful vault creation - - [x] Unregistered user cannot create vault - - [x] Vault tracking - - [x] Event emission -- [x] Test admin functions: - - [x] Add admin (admin only) - - [x] Remove admin (admin only) - - [x] Non-admin cannot add/remove - - [x] Cannot remove deployer -- [x] Test protocol address management: - - [x] Set protocol addresses (admin only) - - [x] Get protocol addresses - - [x] Non-admin cannot set addresses -- [x] Test view functions: - - [x] `getUserVaults()` - - [x] `getVaultOwner()` - - [x] `isUserRegistered()` -- [x] Test edge cases and error scenarios -- [x] Test coverage > 90% - -**Implementation Notes:** - -- Comprehensive test suite with 66 passing tests -- Coverage metrics: - - 98.04% Statement Coverage - - 93.1% Branch Coverage - - 100% Function Coverage - - 100% Line Coverage -- Tests organized by functionality: - - User Registration (22 tests) - - Vault Creation (5 tests) - - Admin System (8 tests) - - Protocol Address Management (11 tests) - - View Functions (20 tests) -- All edge cases and error scenarios covered -- Proper event emission verification -- Access control thoroughly tested - -**Completed:** All acceptance criteria met. Test suite exceeds >90% coverage requirement with comprehensive testing of all VaultFactory functionality. - ---- - -### Issue #13: Comprehensive Test Suite β€” UserVault - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `testing`, `vault`, `erc4626` - -**Priority:** HIGH - -**Description:** - -Write comprehensive test suite for UserVault contract covering ERC-4626 compliance, all functions, edge cases, and error scenarios. - -**Acceptance Criteria:** - -- [x] Create `test/UserVault.test.js` -- [x] Test ERC-4626 functions: - - [x] `deposit()` - First deposit, subsequent deposits - - [x] `withdraw()` - Withdraw assets - - [x] `mint()` - Mint shares - - [x] `redeem()` - Redeem shares - - [x] `convertToShares()` - Share calculations - - [x] `convertToAssets()` - Asset calculations - - [x] `totalAssets()` - Asset tracking - - [x] Preview functions - - [x] Max functions -- [x] Test share calculations: - - [x] First deposit (1:1 ratio) - - [x] Proportional deposits - - [x] With yield generation - - [x] Edge cases (zero assets, zero shares) -- [x] Test pause/unpause: - - [x] Pause functionality - - [x] Cannot operate when paused - - [x] Unpause functionality -- [x] Test access control: - - [x] Owner-only functions - - [x] Non-owner cannot call restricted functions -- [x] Test protocol allocations: - - [x] Set allocations - - [x] Validation - - [x] Event emission -- [x] Test ERC-20 share token functionality -- [x] Test edge cases and error scenarios -- [x] Test coverage > 90% - -**Implementation Notes:** - -- Consolidated all UserVault tests into `test/UserVault.test.ts`. -- Added coverage for Aave and Compound integrations. -- Verified all 109 tests pass. -- Satisfies ERC-4626 compliance and ForgeX specific logic. - ---- - -### Issue #14: Integration Tests - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `testing`, `integration` - -**Priority:** MEDIUM - -**Description:** - -Write integration tests covering the full workflow: user registration, vault creation, deposits, withdrawals, and protocol interactions. - -**Acceptance Criteria:** - -- [x] Create `test/integration.test.ts` -- [x] Full workflow tests: - - [x] Register user β†’ Create vault β†’ Deposit β†’ Withdraw - - [x] Multiple vault creation by same user - - [x] Multiple users creating vaults - - [x] Protocol allocation configuration - - [x] Share transfers between users -- [x] Protocol integration tests: - - [x] Deploy to Aave - - [x] Deploy to Compound - - [x] Withdraw from protocols -- [x] Edge case scenarios: - - [x] Large deposits/withdrawals - - [x] Concurrent operations - - [x] Error recovery -- [x] Gas usage measurements -- [x] Test with real ERC-20 tokens (mock tokens) - -**Implementation Notes:** - -- Implemented in `test/integration.test.ts` -- Covered three major "User Journeys" -- Fixed `totalAssets` bug discovered during integration testing - -**Completed:** Implemented in `test/integration.test.ts` with coverage for major user journeys and bug fixes. - ---- - -### Issue #18: Contract Documentation & NatSpec - -**Status:** βœ… COMPLETED - -**Labels:** `smart-contracts`, `documentation` - -**Priority:** MEDIUM - -**Description:** - -Add comprehensive NatSpec documentation to all contracts, functions, and events. Generate documentation from NatSpec. - -**Acceptance Criteria:** - -- [x] NatSpec documentation for all contracts, functions, events -- [x] Use `@notice`, `@dev`, `@param`, `@return` tags -- [ ] Generate documentation using solidity-docgen -- [x] Architecture documentation (relationships, flow diagrams) - -**Implementation Notes:** - -- Follow Solidity NatSpec standard -- Document edge cases and error conditions -- Keep documentation up to date with code - ---- - -## ❌ Pending Issues - -### Issue #15: Deployment Scripts - -## πŸ“ Issue Template - -When creating new issues, use this template: - -```markdown -### Issue #<number>: <Title> - -**Status:** ❌ PENDING - -**Labels:** `<label1>`, `<label2>` - -**Priority:** HIGH | MEDIUM | LOW - -**Description:** - -<Detailed description of the issue> - -**Acceptance Criteria:** - -- [ ] Criterion 1 -- [ ] Criterion 2 -- [ ] Criterion 3 - -**Implementation Notes:** - -- Technical details -- Code locations -- Dependencies -``` - ---- - -**Note:** When an issue is completed, move it to the "βœ… Completed Issues" section and mark status as `βœ… COMPLETED`. diff --git a/smartcontract/contracts/UserVault.sol b/smartcontract/contracts/UserVault.sol deleted file mode 100644 index e7965d3..0000000 --- a/smartcontract/contracts/UserVault.sol +++ /dev/null @@ -1,322 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; -import "@openzeppelin/contracts/utils/math/Math.sol"; -import "./interfaces/IERC4626.sol"; - -/** - * @title UserVault - * @dev ERC-4626 compliant tokenized vault for SmartX platform - * @notice This contract allows users to deposit assets and receive vault shares - * @dev Implements the ERC-4626 standard for tokenized vaults - */ -contract UserVault is ERC20, IERC4626, Ownable { - using SafeERC20 for IERC20; - using Math for uint256; - - /*////////////////////////////////////////////////////////////// - STATE VARIABLES - //////////////////////////////////////////////////////////////*/ - - /// @dev The underlying asset token - IERC20 private immutable _asset; - - /// @dev Reference to the VaultFactory contract - address private immutable _factory; - - /*////////////////////////////////////////////////////////////// - CONSTRUCTOR - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Constructor to initialize the vault - * @param asset_ The address of the underlying asset token - * @param owner_ The address of the vault owner - * @param factory_ The address of the VaultFactory contract - * @param name_ The name of the vault share token - * @param symbol_ The symbol of the vault share token - */ - constructor( - address asset_, - address owner_, - address factory_, - string memory name_, - string memory symbol_ - ) ERC20(name_, symbol_) Ownable(owner_) { - require(asset_ != address(0), "UserVault: asset is zero address"); - require(factory_ != address(0), "UserVault: factory is zero address"); - - _asset = IERC20(asset_); - _factory = factory_; - } - - /*////////////////////////////////////////////////////////////// - ASSET INFORMATION - //////////////////////////////////////////////////////////////*/ - - /** - * @inheritdoc IERC4626 - */ - function asset() external view override returns (address) { - return address(_asset); - } - - /** - * @inheritdoc IERC4626 - */ - function totalAssets() public view override returns (uint256) { - return _asset.balanceOf(address(this)); - } - - /** - * @dev Returns the factory address - * @return The address of the VaultFactory contract - */ - function factory() external view returns (address) { - return _factory; - } - - /*////////////////////////////////////////////////////////////// - DEPOSIT/WITHDRAWAL LOGIC - //////////////////////////////////////////////////////////////*/ - - /** - * @inheritdoc IERC4626 - */ - function deposit(uint256 assets, address receiver) - external - override - returns (uint256 shares) - { - require(assets > 0, "UserVault: cannot deposit 0"); - require(receiver != address(0), "UserVault: receiver is zero address"); - - // Calculate shares to mint - shares = previewDeposit(assets); - require(shares > 0, "UserVault: zero shares"); - - // Transfer assets from caller to vault - _asset.safeTransferFrom(msg.sender, address(this), assets); - - // Mint shares to receiver - _mint(receiver, shares); - - emit Deposit(msg.sender, receiver, assets, shares); - } - - /** - * @inheritdoc IERC4626 - */ - function mint(uint256 shares, address receiver) - external - override - returns (uint256 assets) - { - require(shares > 0, "UserVault: cannot mint 0"); - require(receiver != address(0), "UserVault: receiver is zero address"); - - // Calculate assets required - assets = previewMint(shares); - require(assets > 0, "UserVault: zero assets"); - - // Transfer assets from caller to vault - _asset.safeTransferFrom(msg.sender, address(this), assets); - - // Mint shares to receiver - _mint(receiver, shares); - - emit Deposit(msg.sender, receiver, assets, shares); - } - - /** - * @inheritdoc IERC4626 - */ - function withdraw( - uint256 assets, - address receiver, - address owner - ) external override returns (uint256 shares) { - require(assets > 0, "UserVault: cannot withdraw 0"); - require(receiver != address(0), "UserVault: receiver is zero address"); - require(owner != address(0), "UserVault: owner is zero address"); - - // Calculate shares to burn - shares = previewWithdraw(assets); - require(shares > 0, "UserVault: zero shares"); - - // Check allowance if caller is not owner - if (msg.sender != owner) { - uint256 allowed = allowance(owner, msg.sender); - require(allowed >= shares, "UserVault: insufficient allowance"); - _approve(owner, msg.sender, allowed - shares); - } - - // Burn shares from owner - _burn(owner, shares); - - // Transfer assets to receiver - _asset.safeTransfer(receiver, assets); - - emit Withdraw(msg.sender, receiver, owner, assets, shares); - } - - /** - * @inheritdoc IERC4626 - */ - function redeem( - uint256 shares, - address receiver, - address owner - ) external override returns (uint256 assets) { - require(shares > 0, "UserVault: cannot redeem 0"); - require(receiver != address(0), "UserVault: receiver is zero address"); - require(owner != address(0), "UserVault: owner is zero address"); - - // Calculate assets to withdraw - assets = previewRedeem(shares); - require(assets > 0, "UserVault: zero assets"); - - // Check allowance if caller is not owner - if (msg.sender != owner) { - uint256 allowed = allowance(owner, msg.sender); - require(allowed >= shares, "UserVault: insufficient allowance"); - _approve(owner, msg.sender, allowed - shares); - } - - // Burn shares from owner - _burn(owner, shares); - - // Transfer assets to receiver - _asset.safeTransfer(receiver, assets); - - emit Withdraw(msg.sender, receiver, owner, assets, shares); - } - - /*////////////////////////////////////////////////////////////// - ACCOUNTING LOGIC - //////////////////////////////////////////////////////////////*/ - - /** - * @inheritdoc IERC4626 - */ - function convertToShares(uint256 assets) public view override returns (uint256) { - return _convertToShares(assets, Math.Rounding.Floor); - } - - /** - * @inheritdoc IERC4626 - */ - function convertToAssets(uint256 shares) public view override returns (uint256) { - return _convertToAssets(shares, Math.Rounding.Floor); - } - - /** - * @inheritdoc IERC4626 - */ - function maxDeposit(address) external pure override returns (uint256) { - return type(uint256).max; - } - - /** - * @inheritdoc IERC4626 - */ - function maxMint(address) external pure override returns (uint256) { - return type(uint256).max; - } - - /** - * @inheritdoc IERC4626 - */ - function maxWithdraw(address owner) external view override returns (uint256) { - return _convertToAssets(balanceOf(owner), Math.Rounding.Floor); - } - - /** - * @inheritdoc IERC4626 - */ - function maxRedeem(address owner) external view override returns (uint256) { - return balanceOf(owner); - } - - /** - * @inheritdoc IERC4626 - */ - function previewDeposit(uint256 assets) public view override returns (uint256) { - return _convertToShares(assets, Math.Rounding.Floor); - } - - /** - * @inheritdoc IERC4626 - */ - function previewMint(uint256 shares) public view override returns (uint256) { - return _convertToAssets(shares, Math.Rounding.Ceil); - } - - /** - * @inheritdoc IERC4626 - */ - function previewWithdraw(uint256 assets) public view override returns (uint256) { - return _convertToShares(assets, Math.Rounding.Ceil); - } - - /** - * @inheritdoc IERC4626 - */ - function previewRedeem(uint256 shares) public view override returns (uint256) { - return _convertToAssets(shares, Math.Rounding.Floor); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Internal function to convert assets to shares - * @param assets The amount of assets to convert - * @param rounding The rounding direction - * @return shares The equivalent amount of shares - */ - function _convertToShares(uint256 assets, Math.Rounding rounding) - internal - view - returns (uint256 shares) - { - uint256 supply = totalSupply(); - - // First deposit: 1:1 ratio - if (supply == 0) { - shares = assets; - } else { - // Subsequent deposits: proportional to total assets - uint256 totalAssets_ = totalAssets(); - shares = assets.mulDiv(supply, totalAssets_, rounding); - } - } - - /** - * @dev Internal function to convert shares to assets - * @param shares The amount of shares to convert - * @param rounding The rounding direction - * @return assets The equivalent amount of assets - */ - function _convertToAssets(uint256 shares, Math.Rounding rounding) - internal - view - returns (uint256 assets) - { - uint256 supply = totalSupply(); - - // If no shares exist, return 0 - if (supply == 0) { - assets = 0; - } else { - // Calculate proportional assets - uint256 totalAssets_ = totalAssets(); - assets = shares.mulDiv(totalAssets_, supply, rounding); - } - } -} diff --git a/smartcontract/contracts/VaultFactory.sol b/smartcontract/contracts/VaultFactory.sol deleted file mode 100644 index 2f50452..0000000 --- a/smartcontract/contracts/VaultFactory.sol +++ /dev/null @@ -1,182 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import "@openzeppelin/contracts/access/Ownable.sol"; - -/** - * @title VaultFactory - * @dev Factory contract for creating and managing user vaults on SmartX platform - * @notice This contract handles user registration and vault deployment - */ -contract VaultFactory is Ownable { - /*////////////////////////////////////////////////////////////// - CUSTOM ERRORS - //////////////////////////////////////////////////////////////*/ - - /// @dev Thrown when user tries to register twice - error AlreadyRegistered(); - - /// @dev Thrown when querying data for unregistered user - error NotRegistered(); - - /// @dev Thrown when username exceeds maximum length - error UsernameTooLong(); - - /// @dev Thrown when bio exceeds maximum length - error BioTooLong(); - - /// @dev Thrown when username is empty - error EmptyUsername(); - - /*////////////////////////////////////////////////////////////// - STATE VARIABLES - //////////////////////////////////////////////////////////////*/ - - /// @dev Maximum allowed username length - uint256 public constant MAX_USERNAME_LENGTH = 20; - - /// @dev Maximum allowed bio length - uint256 public constant MAX_BIO_LENGTH = 30; - - /// @dev Mapping to track registered users - mapping(address => bool) private registeredUsers; - - /// @dev Mapping to store usernames - mapping(address => string) private userUsernames; - - /// @dev Mapping to store user bios - mapping(address => string) private userBios; - - /// @dev Mapping to store registration timestamps - mapping(address => uint256) private userRegistrationTimestamps; - - /*////////////////////////////////////////////////////////////// - EVENTS - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Emitted when a user registers - * @param user The address of the registered user - * @param username The username chosen by the user - * @param timestamp The block timestamp of registration - */ - event UserRegistered( - address indexed user, - string username, - uint256 timestamp - ); - - /*////////////////////////////////////////////////////////////// - CONSTRUCTOR - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Constructor to initialize the factory - * @param initialOwner The address of the initial owner - */ - constructor(address initialOwner) Ownable(initialOwner) {} - - /*////////////////////////////////////////////////////////////// - USER REGISTRATION - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Register a new user with username and bio - * @param username The desired username (max 20 characters) - * @param bio The user's bio (max 30 characters, can be empty) - * @notice Users can only register once - * @notice Username cannot be empty and must be within length limits - */ - function registerUser(string calldata username, string calldata bio) external { - // Check if user is already registered - if (registeredUsers[msg.sender]) revert AlreadyRegistered(); - - // Validate username - if (bytes(username).length == 0) revert EmptyUsername(); - if (bytes(username).length > MAX_USERNAME_LENGTH) revert UsernameTooLong(); - - // Validate bio (can be empty, but not too long) - if (bytes(bio).length > MAX_BIO_LENGTH) revert BioTooLong(); - - // Store user data - registeredUsers[msg.sender] = true; - userUsernames[msg.sender] = username; - userBios[msg.sender] = bio; - userRegistrationTimestamps[msg.sender] = block.timestamp; - - // Emit event - emit UserRegistered(msg.sender, username, block.timestamp); - } - - /*////////////////////////////////////////////////////////////// - VIEW FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Check if a user is registered - * @param user The address to check - * @return bool True if user is registered, false otherwise - */ - function isUserRegistered(address user) external view returns (bool) { - return registeredUsers[user]; - } - - /** - * @dev Get complete user information - * @param user The address of the user - * @return username The user's username - * @return bio The user's bio - * @return registrationTimestamp The timestamp when user registered - * @notice Reverts if user is not registered - */ - function getUserInfo(address user) - external - view - returns ( - string memory username, - string memory bio, - uint256 registrationTimestamp - ) - { - if (!registeredUsers[user]) revert NotRegistered(); - - return ( - userUsernames[user], - userBios[user], - userRegistrationTimestamps[user] - ); - } - - /** - * @dev Get username for a registered user - * @param user The address of the user - * @return The user's username - * @notice Reverts if user is not registered - */ - function getUsername(address user) external view returns (string memory) { - if (!registeredUsers[user]) revert NotRegistered(); - return userUsernames[user]; - } - - /** - * @dev Get bio for a registered user - * @param user The address of the user - * @return The user's bio - * @notice Reverts if user is not registered - */ - function getBio(address user) external view returns (string memory) { - if (!registeredUsers[user]) revert NotRegistered(); - return userBios[user]; - } - - /** - * @dev Get registration timestamp for a registered user - * @param user The address of the user - * @return The timestamp when user registered - * @notice Reverts if user is not registered - */ - function getRegistrationTimestamp(address user) external view returns (uint256) { - if (!registeredUsers[user]) revert NotRegistered(); - return userRegistrationTimestamps[user]; - } -} diff --git a/smartcontract/contracts/interfaces/IERC4626.sol b/smartcontract/contracts/interfaces/IERC4626.sol deleted file mode 100644 index 35fe80e..0000000 --- a/smartcontract/contracts/interfaces/IERC4626.sol +++ /dev/null @@ -1,187 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; - -/** - * @title IERC4626 - * @dev Interface for ERC-4626 Tokenized Vault Standard - * @notice This interface defines the standard functions and events for tokenized vaults - * @dev Reference: https://eips.ethereum.org/EIPS/eip-4626 - */ -interface IERC4626 is IERC20 { - /*////////////////////////////////////////////////////////////// - EVENTS - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Emitted when assets are deposited into the vault - * @param sender The address that called the deposit function - * @param owner The address that owns the shares - * @param assets The amount of assets deposited - * @param shares The amount of shares minted - */ - event Deposit( - address indexed sender, - address indexed owner, - uint256 assets, - uint256 shares - ); - - /** - * @dev Emitted when assets are withdrawn from the vault - * @param sender The address that called the withdraw function - * @param receiver The address that receives the assets - * @param owner The address that owns the shares - * @param assets The amount of assets withdrawn - * @param shares The amount of shares burned - */ - event Withdraw( - address indexed sender, - address indexed receiver, - address indexed owner, - uint256 assets, - uint256 shares - ); - - /*////////////////////////////////////////////////////////////// - ASSET - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Returns the address of the underlying asset used by the vault - * @return The address of the underlying asset token - */ - function asset() external view returns (address); - - /** - * @dev Returns the total amount of assets managed by the vault - * @return The total amount of assets in the vault - */ - function totalAssets() external view returns (uint256); - - /*////////////////////////////////////////////////////////////// - DEPOSIT/WITHDRAW - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Deposits assets into the vault and mints shares to the receiver - * @param assets The amount of assets to deposit - * @param receiver The address that will receive the shares - * @return shares The amount of shares minted - */ - function deposit(uint256 assets, address receiver) external returns (uint256 shares); - - /** - * @dev Mints shares to the receiver by depositing assets - * @param shares The amount of shares to mint - * @param receiver The address that will receive the shares - * @return assets The amount of assets deposited - */ - function mint(uint256 shares, address receiver) external returns (uint256 assets); - - /** - * @dev Withdraws assets from the vault by burning shares - * @param assets The amount of assets to withdraw - * @param receiver The address that will receive the assets - * @param owner The address that owns the shares - * @return shares The amount of shares burned - */ - function withdraw( - uint256 assets, - address receiver, - address owner - ) external returns (uint256 shares); - - /** - * @dev Redeems shares for assets - * @param shares The amount of shares to redeem - * @param receiver The address that will receive the assets - * @param owner The address that owns the shares - * @return assets The amount of assets withdrawn - */ - function redeem( - uint256 shares, - address receiver, - address owner - ) external returns (uint256 assets); - - /*////////////////////////////////////////////////////////////// - ACCOUNTING LOGIC - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Converts assets to shares - * @param assets The amount of assets to convert - * @return shares The equivalent amount of shares - */ - function convertToShares(uint256 assets) external view returns (uint256 shares); - - /** - * @dev Converts shares to assets - * @param shares The amount of shares to convert - * @return assets The equivalent amount of assets - */ - function convertToAssets(uint256 shares) external view returns (uint256 assets); - - /** - * @dev Returns the maximum amount of assets that can be deposited for a receiver - * @param receiver The address that will receive the shares - * @return The maximum amount of assets that can be deposited - */ - function maxDeposit(address receiver) external view returns (uint256); - - /** - * @dev Returns the maximum amount of shares that can be minted for a receiver - * @param receiver The address that will receive the shares - * @return The maximum amount of shares that can be minted - */ - function maxMint(address receiver) external view returns (uint256); - - /** - * @dev Returns the maximum amount of assets that can be withdrawn by an owner - * @param owner The address that owns the shares - * @return The maximum amount of assets that can be withdrawn - */ - function maxWithdraw(address owner) external view returns (uint256); - - /** - * @dev Returns the maximum amount of shares that can be redeemed by an owner - * @param owner The address that owns the shares - * @return The maximum amount of shares that can be redeemed - */ - function maxRedeem(address owner) external view returns (uint256); - - /*////////////////////////////////////////////////////////////// - DEPOSIT/WITHDRAW LOGIC - //////////////////////////////////////////////////////////////*/ - - /** - * @dev Preview the amount of shares that would be minted for a deposit - * @param assets The amount of assets to deposit - * @return shares The amount of shares that would be minted - */ - function previewDeposit(uint256 assets) external view returns (uint256 shares); - - /** - * @dev Preview the amount of assets required to mint shares - * @param shares The amount of shares to mint - * @return assets The amount of assets required - */ - function previewMint(uint256 shares) external view returns (uint256 assets); - - /** - * @dev Preview the amount of shares that would be burned for a withdrawal - * @param assets The amount of assets to withdraw - * @return shares The amount of shares that would be burned - */ - function previewWithdraw(uint256 assets) external view returns (uint256 shares); - - /** - * @dev Preview the amount of assets that would be received for redeeming shares - * @param shares The amount of shares to redeem - * @return assets The amount of assets that would be received - */ - function previewRedeem(uint256 shares) external view returns (uint256 assets); -} - diff --git a/smartcontract/contracts/mocks/MockERC20.sol b/smartcontract/contracts/mocks/MockERC20.sol deleted file mode 100644 index c214554..0000000 --- a/smartcontract/contracts/mocks/MockERC20.sol +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; - -/** - * @title MockERC20 - * @dev Mock ERC20 token for testing purposes - */ -contract MockERC20 is ERC20 { - uint8 private _decimals; - - constructor( - string memory name, - string memory symbol, - uint8 decimals_ - ) ERC20(name, symbol) { - _decimals = decimals_; - } - - function decimals() public view virtual override returns (uint8) { - return _decimals; - } - - /** - * @dev Mint tokens to an address (for testing) - */ - function mint(address to, uint256 amount) external { - _mint(to, amount); - } - - /** - * @dev Burn tokens from an address (for testing) - */ - function burn(address from, uint256 amount) external { - _burn(from, amount); - } -} - diff --git a/smartcontract/contracts/mocks/MockERC4626Vault.sol b/smartcontract/contracts/mocks/MockERC4626Vault.sol deleted file mode 100644 index f6a7ccc..0000000 --- a/smartcontract/contracts/mocks/MockERC4626Vault.sol +++ /dev/null @@ -1,145 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "../interfaces/IERC4626.sol"; - -/** - * @title MockERC4626Vault - * @dev Mock implementation of ERC-4626 for testing the interface - * @notice This is a simplified implementation for testing purposes only - */ -contract MockERC4626Vault is ERC20, IERC4626 { - using SafeERC20 for IERC20; - - IERC20 private immutable _asset; - IERC20Metadata private immutable _assetMetadata; - uint8 private immutable _decimals; - - constructor(address asset_) ERC20("Mock Vault Share", "MVS") { - _asset = IERC20(asset_); - _assetMetadata = IERC20Metadata(asset_); - _decimals = _assetMetadata.decimals(); - } - - function decimals() public view virtual override returns (uint8) { - return _decimals; - } - - /*////////////////////////////////////////////////////////////// - ASSET - //////////////////////////////////////////////////////////////*/ - - function asset() public view virtual override returns (address) { - return address(_assetMetadata); - } - - function totalAssets() public view virtual override returns (uint256) { - return _asset.balanceOf(address(this)); - } - - /*////////////////////////////////////////////////////////////// - DEPOSIT/WITHDRAW - //////////////////////////////////////////////////////////////*/ - - function deposit(uint256 assets, address receiver) public virtual override returns (uint256) { - uint256 shares = previewDeposit(assets); - _asset.safeTransferFrom(msg.sender, address(this), assets); - _mint(receiver, shares); - emit Deposit(msg.sender, receiver, assets, shares); - return shares; - } - - function mint(uint256 shares, address receiver) public virtual override returns (uint256) { - uint256 assets = previewMint(shares); - _asset.safeTransferFrom(msg.sender, address(this), assets); - _mint(receiver, shares); - emit Deposit(msg.sender, receiver, assets, shares); - return assets; - } - - function withdraw( - uint256 assets, - address receiver, - address owner - ) public virtual override returns (uint256) { - uint256 shares = previewWithdraw(assets); - if (msg.sender != owner) { - _spendAllowance(owner, msg.sender, shares); - } - _burn(owner, shares); - _asset.safeTransfer(receiver, assets); - emit Withdraw(msg.sender, receiver, owner, assets, shares); - return shares; - } - - function redeem( - uint256 shares, - address receiver, - address owner - ) public virtual override returns (uint256) { - if (msg.sender != owner) { - _spendAllowance(owner, msg.sender, shares); - } - uint256 assets = previewRedeem(shares); - _burn(owner, shares); - _asset.safeTransfer(receiver, assets); - emit Withdraw(msg.sender, receiver, owner, assets, shares); - return assets; - } - - /*////////////////////////////////////////////////////////////// - ACCOUNTING LOGIC - //////////////////////////////////////////////////////////////*/ - - function convertToShares(uint256 assets) public view virtual override returns (uint256) { - uint256 supply = totalSupply(); - return supply == 0 ? assets : (assets * supply) / totalAssets(); - } - - function convertToAssets(uint256 shares) public view virtual override returns (uint256) { - uint256 supply = totalSupply(); - return supply == 0 ? shares : (shares * totalAssets()) / supply; - } - - function maxDeposit(address) public view virtual override returns (uint256) { - return type(uint256).max; - } - - function maxMint(address) public view virtual override returns (uint256) { - return type(uint256).max; - } - - function maxWithdraw(address owner) public view virtual override returns (uint256) { - return convertToAssets(balanceOf(owner)); - } - - function maxRedeem(address owner) public view virtual override returns (uint256) { - return balanceOf(owner); - } - - /*////////////////////////////////////////////////////////////// - DEPOSIT/WITHDRAW LOGIC - //////////////////////////////////////////////////////////////*/ - - function previewDeposit(uint256 assets) public view virtual override returns (uint256) { - return convertToShares(assets); - } - - function previewMint(uint256 shares) public view virtual override returns (uint256) { - uint256 supply = totalSupply(); - return supply == 0 ? shares : (shares * totalAssets()) / supply; - } - - function previewWithdraw(uint256 assets) public view virtual override returns (uint256) { - uint256 supply = totalSupply(); - return supply == 0 ? assets : (assets * supply) / totalAssets(); - } - - function previewRedeem(uint256 shares) public view virtual override returns (uint256) { - return convertToAssets(shares); - } -} - diff --git a/smartcontract/hardhat.config.ts b/smartcontract/hardhat.config.ts deleted file mode 100644 index 6fabe25..0000000 --- a/smartcontract/hardhat.config.ts +++ /dev/null @@ -1,155 +0,0 @@ - -import * as dotenv from "dotenv"; -dotenv.config(); -import { HardhatUserConfig } from "hardhat/config"; -import "@nomicfoundation/hardhat-ethers"; -import "@nomicfoundation/hardhat-chai-matchers"; -import "@typechain/hardhat"; -import "hardhat-gas-reporter"; -import "solidity-coverage"; -import "@nomicfoundation/hardhat-verify"; - -// If not set, it uses ours Alchemy's default API key. -// You can get your own at https://dashboard.alchemyapi.io -const providerApiKey = process.env.ALCHEMY_API_KEY || "oKxs-03sij-U_N0iOlrSsZFr29-IqbuF"; -// If not set, it uses the hardhat account 0 private key. -// You can generate a random account with `yarn generate` or `yarn account:import` to import your existing PK -const deployerPrivateKey = - process.env.ACCOUNT_PRIVATE_KEY ?? "0x0000000000000000000000000000000000000000000000000000000000000000"; -// If not set, it uses our block explorers default API keys. -const etherscanApiKey = process.env.ETHERSCAN_V2_API_KEY || "DNXJA8RX2Q3VZ4URQIWP7Z68CJXQZSC6AW"; - -const config: HardhatUserConfig = { - solidity: { - compilers: [ - { - version: "0.8.20", - settings: { - optimizer: { - enabled: true, - // https://docs.soliditylang.org/en/latest/using-the-compiler.html#optimizer-options - runs: 200, - }, - }, - }, - ], - }, - // Primary deployment target: Base Mainnet - defaultNetwork: "base", - networks: { - // View the networks that are pre-configured. - // If the network you are looking for is not here you can add new network settings - hardhat: { - accounts: { - count: 20, - // Default balance is 10000 ETH per account, no need to specify - }, - forking: { - url: `https://eth-mainnet.alchemyapi.io/v2/${providerApiKey}`, - enabled: process.env.MAINNET_FORKING_ENABLED === "true", - }, - }, - mainnet: { - url: "https://mainnet.rpc.buidlguidl.com", - accounts: [deployerPrivateKey], - }, - sepolia: { - url: `https://eth-sepolia.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - arbitrum: { - url: `https://arb-mainnet.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - arbitrumSepolia: { - url: `https://arb-sepolia.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - optimism: { - url: `https://opt-mainnet.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - optimismSepolia: { - url: `https://opt-sepolia.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - polygon: { - url: `https://polygon-mainnet.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - polygonAmoy: { - url: `https://polygon-amoy.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - polygonZkEvm: { - url: `https://polygonzkevm-mainnet.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - polygonZkEvmCardona: { - url: `https://polygonzkevm-cardona.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - gnosis: { - url: "https://rpc.gnosischain.com", - accounts: [deployerPrivateKey], - }, - chiado: { - url: "https://rpc.chiadochain.net", - accounts: [deployerPrivateKey], - }, - base: { - url: "https://mainnet.base.org", - chainId: 8453, - accounts: [deployerPrivateKey], - }, - scrollSepolia: { - url: "https://sepolia-rpc.scroll.io", - accounts: [deployerPrivateKey], - }, - scroll: { - url: "https://rpc.scroll.io", - accounts: [deployerPrivateKey], - }, - celo: { - url: "https://forno.celo.org", - accounts: [deployerPrivateKey], - }, - celoAlfajores: { - url: "https://alfajores-forno.celo-testnet.org", - accounts: [deployerPrivateKey], - }, - }, - // Configuration for harhdat-verify plugin - etherscan: { - apiKey: { - mainnet: etherscanApiKey, - sepolia: etherscanApiKey, - base: etherscanApiKey, - celo: process.env.CELOSCAN_API_KEY || etherscanApiKey, // Celo uses Celoscan - celoAlfajores: process.env.CELOSCAN_API_KEY || etherscanApiKey, - }, - customChains: [ - { - network: "celo", - chainId: 42220, - urls: { - apiURL: "https://api.celoscan.io/api", - browserURL: "https://celoscan.io", - }, - }, - { - network: "celoAlfajores", - chainId: 44787, - urls: { - apiURL: "https://api-alfajores.celoscan.io/api", - browserURL: "https://alfajores.celoscan.io", - }, - }, - ], - }, - sourcify: { - enabled: false, - }, -}; - -export default config; \ No newline at end of file diff --git a/smartcontract/ignition/modules/.gitkeep b/smartcontract/ignition/modules/.gitkeep deleted file mode 100644 index bc6b02f..0000000 --- a/smartcontract/ignition/modules/.gitkeep +++ /dev/null @@ -1,3 +0,0 @@ -# Ignition Modules - -Hardhat Ignition modules for declarative contract deployment will be placed here. diff --git a/smartcontract/package-lock.json b/smartcontract/package-lock.json deleted file mode 100644 index 6a93dfb..0000000 --- a/smartcontract/package-lock.json +++ /dev/null @@ -1,9953 +0,0 @@ -{ - "name": "smartx-smartcontracts", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "smartx-smartcontracts", - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@chainlink/contracts": "^1.5.0", - "@openzeppelin/contracts": "^5.0.0", - "dotenv": "^16.3.1" - }, - "devDependencies": { - "@nomicfoundation/hardhat-toolbox": "^4.0.0", - "@nomicfoundation/hardhat-verify": "^2.0.0", - "@typechain/ethers-v6": "^0.5.0", - "@typechain/hardhat": "^9.0.0", - "chai": "^4.3.10", - "eslint": "^8.57.0", - "hardhat": "^2.19.0", - "prettier": "^3.1.1", - "prettier-plugin-solidity": "^1.3.1", - "typechain": "^8.3.2" - } - }, - "node_modules/@adraffy/ens-normalize": { - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@arbitrum/nitro-contracts": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@arbitrum/nitro-contracts/-/nitro-contracts-3.0.0.tgz", - "integrity": "sha512-7VzNW9TxvrX9iONDDsi7AZlEUPa6z+cjBkB4Mxlnog9VQZAapRC3CdRXyUzHnBYmUhRzyNJdyxkWPw59QGcLmA==", - "hasInstallScript": true, - "license": "BUSL-1.1", - "dependencies": { - "@offchainlabs/upgrade-executor": "1.1.0-beta.0", - "@openzeppelin/contracts": "4.7.3", - "@openzeppelin/contracts-upgradeable": "4.7.3", - "patch-package": "^6.4.7", - "solady": "0.0.182" - } - }, - "node_modules/@arbitrum/nitro-contracts/node_modules/@openzeppelin/contracts": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", - "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==", - "license": "MIT" - }, - "node_modules/@arbitrum/nitro-contracts/node_modules/@openzeppelin/contracts-upgradeable": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz", - "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==", - "license": "MIT" - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@chainlink/contracts": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.5.0.tgz", - "integrity": "sha512-1fGJwjvivqAxvVOTqZUEXGR54CATtg0vjcXgSIk4Cfoad2nUhSG/qaWHXjLg1CkNTeOoteoxGQcpP/HiA5HsUA==", - "license": "BUSL-1.1", - "dependencies": { - "@arbitrum/nitro-contracts": "3.0.0", - "@changesets/cli": "^2.29.6", - "@changesets/get-github-info": "^0.6.0", - "@eslint/eslintrc": "^3.3.1", - "@eth-optimism/contracts": "0.6.0", - "@openzeppelin/contracts-4.7.3": "npm:@openzeppelin/contracts@4.7.3", - "@openzeppelin/contracts-4.8.3": "npm:@openzeppelin/contracts@4.8.3", - "@openzeppelin/contracts-4.9.6": "npm:@openzeppelin/contracts@4.9.6", - "@openzeppelin/contracts-5.0.2": "npm:@openzeppelin/contracts@5.0.2", - "@openzeppelin/contracts-5.1.0": "npm:@openzeppelin/contracts@5.1.0", - "@openzeppelin/contracts-upgradeable": "4.9.6", - "@scroll-tech/contracts": "2.0.0", - "@zksync/contracts": "github:matter-labs/era-contracts#446d391d34bdb48255d5f8fef8a8248925fc98b9", - "semver": "^7.7.2" - }, - "engines": { - "node": ">=22", - "pnpm": ">=10" - } - }, - "node_modules/@chainlink/contracts/node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", - "license": "MIT", - "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" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@chainlink/contracts/node_modules/@eth-optimism/contracts": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz", - "integrity": "sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==", - "license": "MIT", - "dependencies": { - "@eth-optimism/core-utils": "0.12.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0" - }, - "peerDependencies": { - "ethers": "^5" - } - }, - "node_modules/@chainlink/contracts/node_modules/eslint-visitor-keys": { - "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==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@chainlink/contracts/node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@chainlink/contracts/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/@chainlink/contracts/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@chainlink/contracts/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@changesets/apply-release-plan": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.14.tgz", - "integrity": "sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==", - "license": "MIT", - "dependencies": { - "@changesets/config": "^3.1.2", - "@changesets/get-version-range-type": "^0.4.0", - "@changesets/git": "^3.0.4", - "@changesets/should-skip-package": "^0.1.2", - "@changesets/types": "^6.1.0", - "@manypkg/get-packages": "^1.1.3", - "detect-indent": "^6.0.0", - "fs-extra": "^7.0.1", - "lodash.startcase": "^4.4.0", - "outdent": "^0.5.0", - "prettier": "^2.7.1", - "resolve-from": "^5.0.0", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@changesets/assemble-release-plan": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz", - "integrity": "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==", - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.3", - "@changesets/should-skip-package": "^0.1.2", - "@changesets/types": "^6.1.0", - "@manypkg/get-packages": "^1.1.3", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/assemble-release-plan/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@changesets/changelog-git": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.1.tgz", - "integrity": "sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==", - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.1.0" - } - }, - "node_modules/@changesets/cli": { - "version": "2.29.8", - "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.29.8.tgz", - "integrity": "sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==", - "license": "MIT", - "dependencies": { - "@changesets/apply-release-plan": "^7.0.14", - "@changesets/assemble-release-plan": "^6.0.9", - "@changesets/changelog-git": "^0.2.1", - "@changesets/config": "^3.1.2", - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.3", - "@changesets/get-release-plan": "^4.0.14", - "@changesets/git": "^3.0.4", - "@changesets/logger": "^0.1.1", - "@changesets/pre": "^2.0.2", - "@changesets/read": "^0.6.6", - "@changesets/should-skip-package": "^0.1.2", - "@changesets/types": "^6.1.0", - "@changesets/write": "^0.4.0", - "@inquirer/external-editor": "^1.0.2", - "@manypkg/get-packages": "^1.1.3", - "ansi-colors": "^4.1.3", - "ci-info": "^3.7.0", - "enquirer": "^2.4.1", - "fs-extra": "^7.0.1", - "mri": "^1.2.0", - "p-limit": "^2.2.0", - "package-manager-detector": "^0.2.0", - "picocolors": "^1.1.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.3", - "spawndamnit": "^3.0.1", - "term-size": "^2.1.0" - }, - "bin": { - "changeset": "bin.js" - } - }, - "node_modules/@changesets/cli/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@changesets/cli/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/cli/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@changesets/cli/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@changesets/cli/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@changesets/cli/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@changesets/config": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.1.2.tgz", - "integrity": "sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==", - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.3", - "@changesets/logger": "^0.1.1", - "@changesets/types": "^6.1.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1", - "micromatch": "^4.0.8" - } - }, - "node_modules/@changesets/config/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/config/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/config/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@changesets/errors": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", - "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", - "license": "MIT", - "dependencies": { - "extendable-error": "^0.1.5" - } - }, - "node_modules/@changesets/get-dependents-graph": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.3.tgz", - "integrity": "sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==", - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.1.0", - "@manypkg/get-packages": "^1.1.3", - "picocolors": "^1.1.0", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/get-dependents-graph/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@changesets/get-github-info": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.6.0.tgz", - "integrity": "sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==", - "license": "MIT", - "dependencies": { - "dataloader": "^1.4.0", - "node-fetch": "^2.5.0" - } - }, - "node_modules/@changesets/get-release-plan": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.14.tgz", - "integrity": "sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==", - "license": "MIT", - "dependencies": { - "@changesets/assemble-release-plan": "^6.0.9", - "@changesets/config": "^3.1.2", - "@changesets/pre": "^2.0.2", - "@changesets/read": "^0.6.6", - "@changesets/types": "^6.1.0", - "@manypkg/get-packages": "^1.1.3" - } - }, - "node_modules/@changesets/get-version-range-type": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", - "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==", - "license": "MIT" - }, - "node_modules/@changesets/git": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.4.tgz", - "integrity": "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==", - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@manypkg/get-packages": "^1.1.3", - "is-subdir": "^1.1.1", - "micromatch": "^4.0.8", - "spawndamnit": "^3.0.1" - } - }, - "node_modules/@changesets/logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.1.tgz", - "integrity": "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==", - "license": "MIT", - "dependencies": { - "picocolors": "^1.1.0" - } - }, - "node_modules/@changesets/parse": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.2.tgz", - "integrity": "sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==", - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.1.0", - "js-yaml": "^4.1.1" - } - }, - "node_modules/@changesets/pre": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.2.tgz", - "integrity": "sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==", - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/types": "^6.1.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1" - } - }, - "node_modules/@changesets/pre/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/pre/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/pre/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@changesets/read": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.6.tgz", - "integrity": "sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==", - "license": "MIT", - "dependencies": { - "@changesets/git": "^3.0.4", - "@changesets/logger": "^0.1.1", - "@changesets/parse": "^0.4.2", - "@changesets/types": "^6.1.0", - "fs-extra": "^7.0.1", - "p-filter": "^2.1.0", - "picocolors": "^1.1.0" - } - }, - "node_modules/@changesets/read/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/read/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/read/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@changesets/should-skip-package": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.2.tgz", - "integrity": "sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==", - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.1.0", - "@manypkg/get-packages": "^1.1.3" - } - }, - "node_modules/@changesets/types": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.1.0.tgz", - "integrity": "sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==", - "license": "MIT" - }, - "node_modules/@changesets/write": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.4.0.tgz", - "integrity": "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==", - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.1.0", - "fs-extra": "^7.0.1", - "human-id": "^4.1.1", - "prettier": "^2.7.1" - } - }, - "node_modules/@changesets/write/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@changesets/write/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@changesets/write/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/@changesets/write/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eth-optimism/core-utils": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz", - "integrity": "sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==", - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/providers": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bufio": "^1.0.7", - "chai": "^4.3.4" - } - }, - "node_modules/@ethereumjs/rlp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", - "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", - "dev": true, - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp.cjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/util": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz", - "integrity": "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^5.0.2", - "ethereum-cryptography": "^2.2.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/util/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/@ethersproject/abi": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", - "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", - "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", - "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", - "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", - "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", - "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/properties": "^5.8.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", - "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", - "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", - "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", - "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", - "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", - "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", - "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "license": "MIT", - "peer": true - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", - "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", - "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" - }, - "node_modules/@ethersproject/networks": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", - "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", - "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/sha2": "^5.8.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", - "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", - "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@ethersproject/random": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", - "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", - "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", - "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "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==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", - "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", - "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", - "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", - "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", - "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/web": { - "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==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "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" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", - "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "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==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", - "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@manypkg/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@types/node": "^12.7.1", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0" - } - }, - "node_modules/@manypkg/find-root/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "license": "MIT" - }, - "node_modules/@manypkg/find-root/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@manypkg/find-root/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@manypkg/find-root/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@manypkg/get-packages": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", - "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@changesets/types": "^4.0.1", - "@manypkg/find-root": "^1.1.0", - "fs-extra": "^8.1.0", - "globby": "^11.0.0", - "read-yaml-file": "^1.1.0" - } - }, - "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", - "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", - "license": "MIT" - }, - "node_modules/@manypkg/get-packages/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@manypkg/get-packages/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@manypkg/get-packages/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@manypkg/get-packages/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nomicfoundation/edr": { - "version": "0.12.0-next.16", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.16.tgz", - "integrity": "sha512-bBL/nHmQwL1WCveALwg01VhJcpVVklJyunG1d/bhJbHgbjzAn6kohVJc7A6gFZegw+Rx38vdxpBkeCDjAEprzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.16", - "@nomicfoundation/edr-darwin-x64": "0.12.0-next.16", - "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.16", - "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.16", - "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.16", - "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.16", - "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.16" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.12.0-next.16", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.16.tgz", - "integrity": "sha512-no/8BPVBzVxDGGbDba0zsAxQmVNIq6SLjKzzhCxVKt4tatArXa6+24mr4jXJEmhVBvTNpQsNBO+MMpuEDVaTzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.12.0-next.16", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.16.tgz", - "integrity": "sha512-tf36YbcC6po3XYRbi+v0gjwzqg1MvyRqVUujNMXPHgjNWATXNRNOLyjwt2qDn+RD15qtzk70SHVnz9n9mPWzwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.12.0-next.16", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.16.tgz", - "integrity": "sha512-Kr6t9icKSaKtPVbb0TjUcbn3XHqXOGIn+KjKKSSpm6542OkL0HyOi06amh6/8CNke9Gf6Lwion8UJ0aGQhnFwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.12.0-next.16", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.16.tgz", - "integrity": "sha512-HaStgfxctSg5PYF+6ooDICL1O59KrgM4XEUsIqoRrjrQax9HnMBXcB8eAj+0O52FWiO9FlchBni2dzh4RjQR2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.12.0-next.16", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.16.tgz", - "integrity": "sha512-8JPTxEZkwOPTgnN4uTWut9ze9R8rp7+T4IfmsKK9i+lDtdbJIxkrFY275YHG2BEYLd7Y5jTa/I4nC74ZpTAvpA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.12.0-next.16", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.16.tgz", - "integrity": "sha512-KugTrq3iHukbG64DuCYg8uPgiBtrrtX4oZSLba5sjocp0Ul6WWI1FeP1Qule+vClUrHSpJ+wR1G6SE7G0lyS/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.12.0-next.16", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.16.tgz", - "integrity": "sha512-Idy0ZjurxElfSmepUKXh6QdptLbW5vUNeIaydvqNogWoTbkJIM6miqZd9lXUy1TYxY7G4Rx5O50c52xc4pFwXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/hardhat-chai-matchers": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/chai-as-promised": "^7.1.3", - "chai-as-promised": "^7.1.1", - "deep-eql": "^4.0.1", - "ordinal": "^1.0.3" - }, - "peerDependencies": { - "@nomicfoundation/hardhat-ethers": "^3.1.0", - "chai": "^4.2.0", - "ethers": "^6.14.0", - "hardhat": "^2.26.0" - } - }, - "node_modules/@nomicfoundation/hardhat-ethers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.1.2.tgz", - "integrity": "sha512-7xEaz2X8p47qWIAqtV2z03MmusheHm8bvY2mDlxo9JiT2BgSx59GSdv5+mzwOvsuKDbTij7oqDnwFyYOlHREEQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^4.1.1", - "lodash.isequal": "^4.5.0" - }, - "peerDependencies": { - "ethers": "^6.14.0", - "hardhat": "^2.26.0" - } - }, - "node_modules/@nomicfoundation/hardhat-network-helpers": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.1.2.tgz", - "integrity": "sha512-p7HaUVDbLj7ikFivQVNhnfMHUBgiHYMwQWvGn9AriieuopGOELIrwj2KjyM2a6z70zai5YKO264Vwz+3UFJZPQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ethereumjs-util": "^7.1.4" - }, - "peerDependencies": { - "hardhat": "^2.26.0" - } - }, - "node_modules/@nomicfoundation/hardhat-toolbox": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", - "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", - "@nomicfoundation/hardhat-ethers": "^3.0.0", - "@nomicfoundation/hardhat-network-helpers": "^1.0.0", - "@nomicfoundation/hardhat-verify": "^2.0.0", - "@typechain/ethers-v6": "^0.5.0", - "@typechain/hardhat": "^9.0.0", - "@types/chai": "^4.2.0", - "@types/mocha": ">=9.1.0", - "@types/node": ">=16.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.3.0", - "typescript": ">=4.5.0" - } - }, - "node_modules/@nomicfoundation/hardhat-verify": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.1.3.tgz", - "integrity": "sha512-danbGjPp2WBhLkJdQy9/ARM3WQIK+7vwzE0urNem1qZJjh9f54Kf5f1xuQv8DvqewUAkuPxVt/7q4Grz5WjqSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^8.1.0", - "debug": "^4.1.1", - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.1.0", - "semver": "^6.3.0", - "table": "^6.8.0", - "undici": "^5.14.0" - }, - "peerDependencies": { - "hardhat": "^2.26.0" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer": { - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - }, - "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" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@offchainlabs/upgrade-executor": { - "version": "1.1.0-beta.0", - "resolved": "https://registry.npmjs.org/@offchainlabs/upgrade-executor/-/upgrade-executor-1.1.0-beta.0.tgz", - "integrity": "sha512-mpn6PHjH/KDDjNX0pXHEKdyv8m6DVGQiI2nGzQn0JbM1nOSHJpWx6fvfjtH7YxHJ6zBZTcsKkqGkFKDtCfoSLw==", - "license": "Apache 2.0", - "dependencies": { - "@openzeppelin/contracts": "4.7.3", - "@openzeppelin/contracts-upgradeable": "4.7.3" - } - }, - "node_modules/@offchainlabs/upgrade-executor/node_modules/@openzeppelin/contracts": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", - "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==", - "license": "MIT" - }, - "node_modules/@offchainlabs/upgrade-executor/node_modules/@openzeppelin/contracts-upgradeable": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz", - "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==", - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz", - "integrity": "sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==", - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-4.7.3": { - "name": "@openzeppelin/contracts", - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", - "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==", - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-4.8.3": { - "name": "@openzeppelin/contracts", - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.3.tgz", - "integrity": "sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg==", - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-4.9.6": { - "name": "@openzeppelin/contracts", - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.6.tgz", - "integrity": "sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==", - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-5.0.2": { - "name": "@openzeppelin/contracts", - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", - "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==", - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-5.1.0": { - "name": "@openzeppelin/contracts", - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.1.0.tgz", - "integrity": "sha512-p1ULhl7BXzjjbha5aqst+QMLY+4/LCWADXOCsmLHRM77AqiPjnd9vvUN9sosUfhL9JGKpZ0TjEGxgvnizmWGSA==", - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.6.tgz", - "integrity": "sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==", - "license": "MIT" - }, - "node_modules/@scroll-tech/contracts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@scroll-tech/contracts/-/contracts-2.0.0.tgz", - "integrity": "sha512-O8sVaA/bVKH/mp+bBfUjZ/vYr5mdBExCpKRLre4r9TbXTtiaY9Uo5xU8dcG3weLxyK0BZqDTP2aCNp4Q0f7SeA==", - "license": "MIT" - }, - "node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", - "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.4.0", - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", - "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@sentry/core": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, - "license": "BSD-3-Clause", - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/hub/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/minimal": { - "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==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, - "license": "BSD-3-Clause", - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/node/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/tracing/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@solidity-parser/parser": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", - "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@typechain/ethers-v6": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", - "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - }, - "peerDependencies": { - "ethers": "6.x", - "typechain": "^8.3.2", - "typescript": ">=4.7.0" - } - }, - "node_modules/@typechain/hardhat": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", - "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fs-extra": "^9.1.0" - }, - "peerDependencies": { - "@typechain/ethers-v6": "^0.5.1", - "ethers": "^6.1.0", - "hardhat": "^2.9.9", - "typechain": "^8.3.2" - } - }, - "node_modules/@types/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/chai-as-promised": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/concat-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", - "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "devOptional": true, - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/secp256k1": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.7.tgz", - "integrity": "sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "license": "BSD-2-Clause" - }, - "node_modules/@zksync/contracts": { - "name": "era-contracts", - "version": "0.1.0", - "resolved": "git+ssh://git@github.com/matter-labs/era-contracts.git#446d391d34bdb48255d5f8fef8a8248925fc98b9", - "integrity": "sha512-KhgPVqd/MgV/ICUEsQf1uyL321GNPqsyHSAPMCaa9vW94fbuQK6RwMWoyQOPlZP17cQD8tzLNCSXqz73652kow==", - "workspaces": { - "packages": [ - "l1-contracts", - "l2-contracts", - "system-contracts", - "gas-bound-caller" - ], - "nohoist": [ - "**/@openzeppelin/**" - ] - } - }, - "node_modules/abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.3.0" - } - }, - "node_modules/aes-js": { - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true, - "license": "BSD-3-Clause OR MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "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==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "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==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/antlr4ts": { - "version": "0.5.0-alpha.4", - "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", - "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/available-typed-arrays": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base-x": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", - "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "license": "MIT" - }, - "node_modules/better-path-resolve": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", - "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", - "license": "MIT", - "dependencies": { - "is-windows": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/bn.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", - "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", - "license": "MIT" - }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "license": "MIT" - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/bufio": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.2.3.tgz", - "integrity": "sha512-5Tt66bRzYUSlVZatc0E92uDenreJ+DpTBmSAUwL4VSxJn3e6cUyYwx+PoqML0GRZatgA/VX8ybhxItF8InZgqA==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "license": "Apache-2.0", - "peer": true - }, - "node_modules/cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "dev": true, - "license": "MIT", - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=12.19" - } - }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "license": "MIT", - "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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", - "dev": true, - "license": "WTFPL", - "peer": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "license": "MIT" - }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "license": "MIT" - }, - "node_modules/cipher-base": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", - "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "colors": "^1.1.2" - } - }, - "node_modules/cli-table3/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-table3/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-exists": { - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/command-line-usage/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/command-line-usage/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/command-line-usage/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/command-line-usage/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/command-line-usage/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "license": "MIT", - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/concat-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/dataloader": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", - "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==", - "license": "BSD-3-Clause" - }, - "node_modules/death": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", - "dev": true, - "peer": true - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/difflib": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", - "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", - "dev": true, - "peer": true, - "dependencies": { - "heap": ">= 0.2.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "license": "MIT", - "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" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=0.12.0" - }, - "optionalDependencies": { - "source-map": "~0.2.0" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "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" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eth-gas-reporter": { - "version": "0.2.27", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", - "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "peerDependencies": { - "@codechecks/client": "^0.1.0" - }, - "peerDependenciesMeta": { - "@codechecks/client": { - "optional": true - } - } - }, - "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/eth-gas-reporter/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "node_modules/eth-gas-reporter/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/ethereum-bloom-filters": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/hashes": "^1.4.0" - } - }, - "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "license": "MPL-2.0", - "peer": true, - "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" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ethers": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz", - "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/ethers/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/extendable-error": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", - "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", - "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" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-replace": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true, - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "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", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ghost-testrpc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", - "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" - }, - "bin": { - "testrpc-sc": "index.js" - } - }, - "node_modules/ghost-testrpc/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ghost-testrpc/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ghost-testrpc/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/ghost-testrpc/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/ghost-testrpc/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ghost-testrpc/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ghost-testrpc/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/globby/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "peer": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "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==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hardhat": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.27.1.tgz", - "integrity": "sha512-0+AWlXgXd0fbPUsAJwp9x6kgYwNxFdZtHVE40bVqPO1WIpCZeWldvubxZl2yOGSzbufa6d9s0n+gNj7JSlTYCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethereumjs/util": "^9.1.0", - "@ethersproject/abi": "^5.1.2", - "@nomicfoundation/edr": "0.12.0-next.16", - "@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" - }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/hardhat-gas-reporter": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.25", - "sha1": "^1.1.1" - }, - "peerDependencies": { - "hardhat": "^2.0.2" - } - }, - "node_modules/hardhat/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT" - }, - "node_modules/hardhat/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/hardhat/node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/hardhat/node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/hardhat/node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "node_modules/hardhat/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/hardhat/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/hardhat/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/hardhat/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", - "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/hash-base/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - } - }, - "node_modules/hash-base/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/hash-base/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/hash-base/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/http-basic": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "^10.0.3" - } - }, - "node_modules/http-response-object/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/https-proxy-agent": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-id": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.1.3.tgz", - "integrity": "sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==", - "license": "MIT", - "bin": { - "human-id": "dist/cli.js" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/io-ts": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "fp-ts": "^1.0.0" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "license": "MIT", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-subdir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", - "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", - "license": "MIT", - "dependencies": { - "better-path-resolve": "1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stream-stringify": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", - "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=7.10.1" - } - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonschema": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", - "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/keccak": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", - "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micro-eth-signer": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz", - "integrity": "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.8.1", - "@noble/hashes": "~1.7.1", - "micro-packed": "~0.7.2" - } - }, - "node_modules/micro-eth-signer/node_modules/@noble/curves": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", - "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.2" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/micro-eth-signer/node_modules/@noble/hashes": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", - "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/micro-ftch": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", - "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/micro-packed": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz", - "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "obliterator": "^2.0.0" - } - }, - "node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "license": "MIT", - "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" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/mocha/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "license": "MIT" - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-fetch": { - "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==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "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==", - "dev": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.19" - } - }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obliterator": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", - "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==", - "dev": true, - "license": "MIT" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ordinal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", - "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/outdent": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", - "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==", - "license": "MIT" - }, - "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "license": "MIT", - "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-filter/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-manager-detector": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", - "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", - "license": "MIT", - "dependencies": { - "quansync": "^0.2.7" - } - }, - "node_modules/parent-module": { - "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==", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-cache-control": { - "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==", - "dev": true, - "peer": true - }, - "node_modules/patch-package": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", - "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", - "license": "MIT", - "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "cross-spawn": "^6.0.5", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^9.0.0", - "is-ci": "^2.0.0", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "rimraf": "^2.6.3", - "semver": "^5.6.0", - "slash": "^2.0.0", - "tmp": "^0.0.33", - "yaml": "^1.10.2" - }, - "bin": { - "patch-package": "index.js" - }, - "engines": { - "node": ">=10", - "npm": ">5" - } - }, - "node_modules/patch-package/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/patch-package/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/patch-package/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/patch-package/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/patch-package/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/patch-package/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/patch-package/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/patch-package/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/pbkdf2": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-solidity": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.4.3.tgz", - "integrity": "sha512-Mrr/iiR9f9IaeGRMZY2ApumXcn/C5Gs3S7B7hWB3gigBFML06C0yEyW86oLp0eqiA0qg+46FaChgLPJCj/pIlg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@solidity-parser/parser": "^0.20.1", - "semver": "^7.7.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "prettier": ">=2.3.0" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/parser": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz", - "integrity": "sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==", - "dev": true, - "license": "MIT" - }, - "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/quansync": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", - "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ], - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-yaml-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", - "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.6.1", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-yaml-file/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/read-yaml-file/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-yaml-file/node_modules/js-yaml": { - "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==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "peer": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/req-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", - "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "req-from": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/req-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", - "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/req-from/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/require-directory": { - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", - "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "hash-base": "^3.1.2", - "inherits": "^2.0.4" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, - "license": "MPL-2.0", - "peer": true, - "dependencies": { - "bn.js": "^5.2.0" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sc-istanbul": { - "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==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "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" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "node_modules/sc-istanbul/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/sc-istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sc-istanbul/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sc-istanbul/node_modules/js-yaml": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/sc-istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/sc-istanbul/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/sc-istanbul/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "license": "MIT", - "peer": true - }, - "node_modules/secp256k1": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", - "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "dependencies": { - "elliptic": "^6.5.7", - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/secp256k1/node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-function-length": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, - "node_modules/sha.js": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", - "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", - "dev": true, - "license": "(MIT AND BSD-3-Clause)", - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.0" - }, - "bin": { - "sha.js": "bin.js" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "peer": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/solady": { - "version": "0.0.182", - "resolved": "https://registry.npmjs.org/solady/-/solady-0.0.182.tgz", - "integrity": "sha512-FW6xo1akJoYpkXMzu58/56FcNU3HYYNamEbnFO3iSibXk0nSHo0DV2Gu/zI3FPg3So5CCX6IYli1TT1IWATnvg==", - "license": "MIT" - }, - "node_modules/solc": { - "version": "0.8.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz", - "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==", - "dev": true, - "license": "MIT", - "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" - }, - "bin": { - "solcjs": "solc.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/solc/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/solidity-coverage": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.16.tgz", - "integrity": "sha512-qKqgm8TPpcnCK0HCDLJrjbOA2tQNEJY4dHX/LSSQ9iwYFS973MwjtgYn2Iv3vfCEQJTj5xtm4cuUMzlJsJSMbg==", - "dev": true, - "license": "ISC", - "peer": true, - "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" - }, - "bin": { - "solidity-coverage": "plugins/bin.js" - }, - "peerDependencies": { - "hardhat": "^2.11.0" - } - }, - "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz", - "integrity": "sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/solidity-coverage/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/solidity-coverage/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/solidity-coverage/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/solidity-coverage/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/solidity-coverage/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/solidity-coverage/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/solidity-coverage/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/solidity-coverage/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "peer": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/solidity-coverage/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/solidity-coverage/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/source-map-support": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spawndamnit": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-3.0.1.tgz", - "integrity": "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==", - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "cross-spawn": "^7.0.5", - "signal-exit": "^4.0.1" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/stacktrace-parser": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", - "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string_decoder": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", - "dev": true, - "license": "WTFPL OR MIT" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/strip-json-comments": { - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sync-request": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/sync-rpc": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", - "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "get-port": "^3.1.0" - } - }, - "node_modules/table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "license": "BSD-3-Clause", - "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" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/then-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", - "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/then-request/node_modules/@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/then-request/node_modules/form-data": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-buffer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", - "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/to-regex-range": { - "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==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/ts-command-line-args": { - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "chalk": "^4.1.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.0", - "string-format": "^2.0.0" - }, - "bin": { - "write-markdown": "dist/write-markdown.js" - } - }, - "node_modules/ts-essentials": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", - "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "typescript": ">=3.7.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "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" - }, - "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 - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true, - "license": "0BSD", - "peer": true - }, - "node_modules/tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true, - "license": "MIT" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "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==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typechain": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", - "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", - "dev": true, - "license": "MIT", - "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" - }, - "bin": { - "typechain": "dist/cli/cli.js" - }, - "peerDependencies": { - "typescript": ">=4.3.0" - } - }, - "node_modules/typechain/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/typechain/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typechain/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/typechain/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/typechain/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/typechain/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/uglify-js": { - "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==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/undici": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", - "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "devOptional": true, - "license": "MIT", - "peer": true - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/web3-utils": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", - "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", - "dev": true, - "license": "LGPL-3.0", - "peer": true, - "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" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-utils/node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "dev": true, - "license": "MPL-2.0", - "peer": true, - "bin": { - "rlp": "bin/rlp" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/web3-utils/node_modules/@ethereumjs/util": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", - "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", - "dev": true, - "license": "MPL-2.0", - "peer": true, - "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/web3-utils/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dev": true, - "license": "MIT", - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/smartcontract/package.json b/smartcontract/package.json deleted file mode 100644 index 4e77596..0000000 --- a/smartcontract/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "smartx-smartcontracts", - "version": "0.1.0", - "description": "Smart contracts for SmartX - ERC-4626 vault platform on Base Mainnet", - "main": "index.js", - "scripts": { - "compile": "hardhat compile", - "test": "hardhat test", - "test:coverage": "hardhat coverage", - "deploy:base": "hardhat run scripts/deploy.js --network base", - "verify": "hardhat verify --network base", - "lint": "eslint .", - "format": "prettier --write \"**/*.{js,ts,sol}\"" - }, - "keywords": [ - "defi", - "vault", - "erc4626", - "base", - "solidity", - "hardhat" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "@nomicfoundation/hardhat-toolbox": "^4.0.0", - "@nomicfoundation/hardhat-verify": "^2.0.0", - "@typechain/ethers-v6": "^0.5.0", - "@typechain/hardhat": "^9.0.0", - "chai": "^4.3.10", - "eslint": "^8.57.0", - "hardhat": "^2.19.0", - "prettier": "^3.1.1", - "prettier-plugin-solidity": "^1.3.1", - "typechain": "^8.3.2" - }, - "dependencies": { - "@chainlink/contracts": "^1.5.0", - "@openzeppelin/contracts": "^5.0.0", - "dotenv": "^16.3.1" - } -} diff --git a/smartcontract/test/IERC4626.test.ts b/smartcontract/test/IERC4626.test.ts deleted file mode 100644 index 07f2fa5..0000000 --- a/smartcontract/test/IERC4626.test.ts +++ /dev/null @@ -1,328 +0,0 @@ -import { expect } from "chai"; -import { ethers } from "hardhat"; -import type { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers"; -import type { MockERC20 } from "../typechain-types/contracts/mocks/MockERC20"; -import type { MockERC4626Vault } from "../typechain-types/contracts/mocks/MockERC4626Vault"; - -describe("IERC4626 Interface", function () { - let mockAsset: MockERC20; - let mockVault: MockERC4626Vault; - let owner: HardhatEthersSigner; - let user1: HardhatEthersSigner; - let user2: HardhatEthersSigner; - - // Deploy a simple ERC20 mock for testing - beforeEach(async function () { - [owner, user1, user2] = await ethers.getSigners(); - - // Deploy a mock ERC20 token to use as asset - const MockERC20 = await ethers.getContractFactory("MockERC20"); - mockAsset = await MockERC20.deploy("Mock Token", "MOCK", 18); - await mockAsset.waitForDeployment(); - - // Deploy a mock vault that implements IERC4626 - const MockVault = await ethers.getContractFactory("MockERC4626Vault"); - mockVault = await MockVault.deploy(await mockAsset.getAddress()); - await mockVault.waitForDeployment(); - }); - - describe("Interface Definition", function () { - it("Should have asset() function", async function () { - const assetAddress = await mockVault.asset(); - expect(assetAddress).to.equal(await mockAsset.getAddress()); - }); - - it("Should have totalAssets() function", async function () { - const totalAssets = await mockVault.totalAssets(); - expect(totalAssets).to.be.a("bigint"); - }); - - it("Should have convertToShares() function", async function () { - const assets = ethers.parseEther("100"); - const shares = await mockVault.convertToShares(assets); - expect(shares).to.be.a("bigint"); - }); - - it("Should have convertToAssets() function", async function () { - const shares = ethers.parseEther("100"); - const assets = await mockVault.convertToAssets(shares); - expect(assets).to.be.a("bigint"); - }); - - it("Should have maxDeposit() function", async function () { - const maxDeposit = await mockVault.maxDeposit(user1.address); - expect(maxDeposit).to.be.a("bigint"); - }); - - it("Should have maxMint() function", async function () { - const maxMint = await mockVault.maxMint(user1.address); - expect(maxMint).to.be.a("bigint"); - }); - - it("Should have maxWithdraw() function", async function () { - const maxWithdraw = await mockVault.maxWithdraw(user1.address); - expect(maxWithdraw).to.be.a("bigint"); - }); - - it("Should have maxRedeem() function", async function () { - const maxRedeem = await mockVault.maxRedeem(user1.address); - expect(maxRedeem).to.be.a("bigint"); - }); - - it("Should have previewDeposit() function", async function () { - const assets = ethers.parseEther("100"); - const shares = await mockVault.previewDeposit(assets); - expect(shares).to.be.a("bigint"); - }); - - it("Should have previewMint() function", async function () { - const shares = ethers.parseEther("100"); - const assets = await mockVault.previewMint(shares); - expect(assets).to.be.a("bigint"); - }); - - it("Should have previewWithdraw() function", async function () { - const assets = ethers.parseEther("100"); - const shares = await mockVault.previewWithdraw(assets); - expect(shares).to.be.a("bigint"); - }); - - it("Should have previewRedeem() function", async function () { - const shares = ethers.parseEther("100"); - const assets = await mockVault.previewRedeem(shares); - expect(assets).to.be.a("bigint"); - }); - - it("Should have deposit() function", async function () { - const assets = ethers.parseEther("100"); - await mockAsset.mint(owner.address, assets); - await mockAsset.approve(await mockVault.getAddress(), assets); - - await expect(mockVault.deposit(assets, owner.address)) - .to.emit(mockVault, "Deposit") - .withArgs(owner.address, owner.address, assets, ethers.parseEther("100")); - }); - - it("Should have mint() function", async function () { - const shares = ethers.parseEther("100"); - const assets = await mockVault.previewMint(shares); - await mockAsset.mint(owner.address, assets); - await mockAsset.approve(await mockVault.getAddress(), assets); - - await expect(mockVault.mint(shares, owner.address)) - .to.emit(mockVault, "Deposit") - .withArgs(owner.address, owner.address, assets, shares); - }); - - it("Should have withdraw() function", async function () { - // First deposit - const depositAmount = ethers.parseEther("100"); - await mockAsset.mint(owner.address, depositAmount); - await mockAsset.approve(await mockVault.getAddress(), depositAmount); - await mockVault.deposit(depositAmount, owner.address); - - // Then withdraw - const withdrawAmount = ethers.parseEther("50"); - await expect(mockVault.withdraw(withdrawAmount, owner.address, owner.address)) - .to.emit(mockVault, "Withdraw") - .withArgs(owner.address, owner.address, owner.address, withdrawAmount, ethers.parseEther("50")); - }); - - it("Should have redeem() function", async function () { - // First deposit - const depositAmount = ethers.parseEther("100"); - await mockAsset.mint(owner.address, depositAmount); - await mockAsset.approve(await mockVault.getAddress(), depositAmount); - await mockVault.deposit(depositAmount, owner.address); - - // Get shares balance - const shares = await mockVault.balanceOf(owner.address); - const redeemShares = shares / 2n; - const expectedAssets = await mockVault.previewRedeem(redeemShares); - - await expect(mockVault.redeem(redeemShares, owner.address, owner.address)) - .to.emit(mockVault, "Withdraw") - .withArgs(owner.address, owner.address, owner.address, expectedAssets, redeemShares); - }); - }); - - describe("ERC-20 Functions (from IERC20)", function () { - it("Should have balanceOf() function", async function () { - const balance = await mockVault.balanceOf(owner.address); - expect(balance).to.be.a("bigint"); - }); - - it("Should have totalSupply() function", async function () { - const totalSupply = await mockVault.totalSupply(); - expect(totalSupply).to.be.a("bigint"); - }); - - it("Should have transfer() function", async function () { - // First deposit to get shares - const depositAmount = ethers.parseEther("100"); - await mockAsset.mint(owner.address, depositAmount); - await mockAsset.approve(await mockVault.getAddress(), depositAmount); - await mockVault.deposit(depositAmount, owner.address); - - const shares = await mockVault.balanceOf(owner.address); - const transferAmount = shares / 2n; - - await expect(mockVault.transfer(user1.address, transferAmount)) - .to.emit(mockVault, "Transfer") - .withArgs(owner.address, user1.address, transferAmount); - }); - - it("Should have approve() function", async function () { - const shares = ethers.parseEther("100"); - await expect(mockVault.approve(user1.address, shares)) - .to.emit(mockVault, "Approval") - .withArgs(owner.address, user1.address, shares); - }); - - it("Should have allowance() function", async function () { - const shares = ethers.parseEther("100"); - await mockVault.approve(user1.address, shares); - const allowance = await mockVault.allowance(owner.address, user1.address); - expect(allowance).to.equal(shares); - }); - }); - - describe("Events", function () { - it("Should emit Deposit event with correct parameters", async function () { - const assets = ethers.parseEther("100"); - await mockAsset.mint(owner.address, assets); - await mockAsset.approve(await mockVault.getAddress(), assets); - - const tx = await mockVault.deposit(assets, owner.address); - const receipt = await tx.wait(); - - const depositEvent = receipt?.logs.find( - log => { - try { - const parsed = mockVault.interface.parseLog(log); - return parsed && parsed.name === "Deposit"; - } catch { - return false; - } - } - ); - - expect(depositEvent).to.not.be.undefined; - if (depositEvent) { - const parsed = mockVault.interface.parseLog(depositEvent); - expect(parsed?.args.sender).to.equal(owner.address); - expect(parsed?.args.owner).to.equal(owner.address); - expect(parsed?.args.assets).to.equal(assets); - } - }); - - it("Should emit Withdraw event with correct parameters", async function () { - // First deposit - const depositAmount = ethers.parseEther("100"); - await mockAsset.mint(owner.address, depositAmount); - await mockAsset.approve(await mockVault.getAddress(), depositAmount); - await mockVault.deposit(depositAmount, owner.address); - - // Then withdraw - const withdrawAmount = ethers.parseEther("50"); - const tx = await mockVault.withdraw(withdrawAmount, owner.address, owner.address); - const receipt = await tx.wait(); - - const withdrawEvent = receipt?.logs.find( - log => { - try { - const parsed = mockVault.interface.parseLog(log); - return parsed && parsed.name === "Withdraw"; - } catch { - return false; - } - } - ); - - expect(withdrawEvent).to.not.be.undefined; - if (withdrawEvent) { - const parsed = mockVault.interface.parseLog(withdrawEvent); - expect(parsed?.args.sender).to.equal(owner.address); - expect(parsed?.args.receiver).to.equal(owner.address); - expect(parsed?.args.owner).to.equal(owner.address); - expect(parsed?.args.assets).to.equal(withdrawAmount); - } - }); - }); - - describe("ERC-4626 Standard Compliance", function () { - it("Should return correct asset address", async function () { - const assetAddress = await mockVault.asset(); - expect(assetAddress).to.equal(await mockAsset.getAddress()); - }); - - it("Should maintain 1:1 ratio on first deposit", async function () { - const assets = ethers.parseEther("100"); - await mockAsset.mint(owner.address, assets); - await mockAsset.approve(await mockVault.getAddress(), assets); - - const sharesBefore = await mockVault.totalSupply(); - await mockVault.deposit(assets, owner.address); - const sharesAfter = await mockVault.totalSupply(); - const sharesMinted = sharesAfter - sharesBefore; - - // First deposit should be 1:1 - expect(sharesMinted).to.equal(assets); - }); - - it("Should convert shares to assets correctly", async function () { - const assets = ethers.parseEther("100"); - await mockAsset.mint(owner.address, assets); - await mockAsset.approve(await mockVault.getAddress(), assets); - await mockVault.deposit(assets, owner.address); - - const shares = await mockVault.balanceOf(owner.address); - const convertedAssets = await mockVault.convertToAssets(shares); - - // Should be approximately equal (allowing for rounding) - expect(convertedAssets).to.be.closeTo(assets, ethers.parseEther("0.01")); - }); - - it("Should convert assets to shares correctly", async function () { - const assets = ethers.parseEther("100"); - await mockAsset.mint(owner.address, assets); - await mockAsset.approve(await mockVault.getAddress(), assets); - await mockVault.deposit(assets, owner.address); - - const shares = await mockVault.convertToShares(assets); - const balance = await mockVault.balanceOf(owner.address); - - // Should be approximately equal (allowing for rounding) - expect(shares).to.be.closeTo(balance, ethers.parseEther("0.01")); - }); - - it("Should preview deposit correctly", async function () { - const assets = ethers.parseEther("100"); - const previewShares = await mockVault.previewDeposit(assets); - - await mockAsset.mint(owner.address, assets); - await mockAsset.approve(await mockVault.getAddress(), assets); - const sharesBefore = await mockVault.totalSupply(); - await mockVault.deposit(assets, owner.address); - const sharesAfter = await mockVault.totalSupply(); - const actualShares = sharesAfter - sharesBefore; - - expect(previewShares).to.equal(actualShares); - }); - - it("Should preview mint correctly", async function () { - const shares = ethers.parseEther("100"); - const previewAssets = await mockVault.previewMint(shares); - - await mockAsset.mint(owner.address, previewAssets); - await mockAsset.approve(await mockVault.getAddress(), previewAssets); - const assetsBefore = await mockAsset.balanceOf(await mockVault.getAddress()); - await mockVault.mint(shares, owner.address); - const assetsAfter = await mockAsset.balanceOf(await mockVault.getAddress()); - const actualAssets = assetsAfter - assetsBefore; - - expect(previewAssets).to.equal(actualAssets); - }); - }); -}); - diff --git a/smartcontract/test/UserVault.test.ts b/smartcontract/test/UserVault.test.ts deleted file mode 100644 index 6bca63c..0000000 --- a/smartcontract/test/UserVault.test.ts +++ /dev/null @@ -1,421 +0,0 @@ -import { expect } from "chai"; -import { ethers } from "hardhat"; -import { UserVault, MockERC20 } from "../typechain-types"; -import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; - -describe("UserVault", function () { - let vault: UserVault; - let asset: MockERC20; - let owner: SignerWithAddress; - let user1: SignerWithAddress; - let user2: SignerWithAddress; - let factory: SignerWithAddress; - - const INITIAL_MINT = ethers.parseEther("10000"); - const VAULT_NAME = "SmartX Vault Token"; - const VAULT_SYMBOL = "svToken"; - - beforeEach(async function () { - [owner, user1, user2, factory] = await ethers.getSigners(); - - // Deploy mock ERC20 token - const MockERC20Factory = await ethers.getContractFactory("MockERC20"); - asset = await MockERC20Factory.deploy("Mock USDC", "USDC", 6); - await asset.waitForDeployment(); - - // Mint tokens to users - await asset.mint(user1.address, INITIAL_MINT); - await asset.mint(user2.address, INITIAL_MINT); - - // Deploy UserVault - const UserVaultFactory = await ethers.getContractFactory("UserVault"); - vault = await UserVaultFactory.deploy( - await asset.getAddress(), - owner.address, - factory.address, - VAULT_NAME, - VAULT_SYMBOL - ); - await vault.waitForDeployment(); - }); - - describe("Deployment", function () { - it("Should set the correct asset", async function () { - expect(await vault.asset()).to.equal(await asset.getAddress()); - }); - - it("Should set the correct owner", async function () { - expect(await vault.owner()).to.equal(owner.address); - }); - - it("Should set the correct factory", async function () { - expect(await vault.factory()).to.equal(factory.address); - }); - - it("Should set the correct name and symbol", async function () { - expect(await vault.name()).to.equal(VAULT_NAME); - expect(await vault.symbol()).to.equal(VAULT_SYMBOL); - }); - - it("Should have zero total assets initially", async function () { - expect(await vault.totalAssets()).to.equal(0); - }); - - it("Should have zero total supply initially", async function () { - expect(await vault.totalSupply()).to.equal(0); - }); - - it("Should revert if asset is zero address", async function () { - const UserVaultFactory = await ethers.getContractFactory("UserVault"); - await expect( - UserVaultFactory.deploy( - ethers.ZeroAddress, - owner.address, - factory.address, - VAULT_NAME, - VAULT_SYMBOL - ) - ).to.be.revertedWith("UserVault: asset is zero address"); - }); - - it("Should revert if factory is zero address", async function () { - const UserVaultFactory = await ethers.getContractFactory("UserVault"); - await expect( - UserVaultFactory.deploy( - await asset.getAddress(), - owner.address, - ethers.ZeroAddress, - VAULT_NAME, - VAULT_SYMBOL - ) - ).to.be.revertedWith("UserVault: factory is zero address"); - }); - }); - - describe("Deposit", function () { - const depositAmount = ethers.parseEther("1000"); - - it("Should allow first deposit with 1:1 ratio", async function () { - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - - await expect(vault.connect(user1).deposit(depositAmount, user1.address)) - .to.emit(vault, "Deposit") - .withArgs(user1.address, user1.address, depositAmount, depositAmount); - - expect(await vault.balanceOf(user1.address)).to.equal(depositAmount); - expect(await vault.totalAssets()).to.equal(depositAmount); - expect(await vault.totalSupply()).to.equal(depositAmount); - }); - - it("Should allow subsequent deposits with proportional shares", async function () { - // First deposit - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user1.address); - - // Second deposit - await asset.connect(user2).approve(await vault.getAddress(), depositAmount); - await vault.connect(user2).deposit(depositAmount, user2.address); - - expect(await vault.balanceOf(user2.address)).to.equal(depositAmount); - expect(await vault.totalAssets()).to.equal(depositAmount * 2n); - expect(await vault.totalSupply()).to.equal(depositAmount * 2n); - }); - - it("Should allow deposit to different receiver", async function () { - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user2.address); - - expect(await vault.balanceOf(user1.address)).to.equal(0); - expect(await vault.balanceOf(user2.address)).to.equal(depositAmount); - }); - - it("Should revert on zero deposit", async function () { - await expect( - vault.connect(user1).deposit(0, user1.address) - ).to.be.revertedWith("UserVault: cannot deposit 0"); - }); - - it("Should revert if receiver is zero address", async function () { - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await expect( - vault.connect(user1).deposit(depositAmount, ethers.ZeroAddress) - ).to.be.revertedWith("UserVault: receiver is zero address"); - }); - - it("Should handle deposits with yield (increased asset value)", async function () { - // First deposit - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user1.address); - - // Simulate yield by minting more assets to vault - const yieldAmount = ethers.parseEther("100"); - await asset.mint(await vault.getAddress(), yieldAmount); - - // Second deposit should get fewer shares due to increased asset value - await asset.connect(user2).approve(await vault.getAddress(), depositAmount); - await vault.connect(user2).deposit(depositAmount, user2.address); - - const user2Shares = await vault.balanceOf(user2.address); - expect(user2Shares).to.be.lt(depositAmount); // Less than 1:1 ratio - }); - }); - - describe("Mint", function () { - const mintShares = ethers.parseEther("1000"); - - it("Should allow minting shares", async function () { - const assetsNeeded = await vault.previewMint(mintShares); - await asset.connect(user1).approve(await vault.getAddress(), assetsNeeded); - - await expect(vault.connect(user1).mint(mintShares, user1.address)) - .to.emit(vault, "Deposit") - .withArgs(user1.address, user1.address, assetsNeeded, mintShares); - - expect(await vault.balanceOf(user1.address)).to.equal(mintShares); - }); - - it("Should revert on zero mint", async function () { - await expect( - vault.connect(user1).mint(0, user1.address) - ).to.be.revertedWith("UserVault: cannot mint 0"); - }); - - it("Should revert if receiver is zero address", async function () { - await expect( - vault.connect(user1).mint(mintShares, ethers.ZeroAddress) - ).to.be.revertedWith("UserVault: receiver is zero address"); - }); - }); - - describe("Withdraw", function () { - const depositAmount = ethers.parseEther("1000"); - const withdrawAmount = ethers.parseEther("500"); - - beforeEach(async function () { - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user1.address); - }); - - it("Should allow withdrawal", async function () { - const sharesBefore = await vault.balanceOf(user1.address); - const assetsBefore = await asset.balanceOf(user1.address); - - await expect(vault.connect(user1).withdraw(withdrawAmount, user1.address, user1.address)) - .to.emit(vault, "Withdraw"); - - expect(await vault.balanceOf(user1.address)).to.be.lt(sharesBefore); - expect(await asset.balanceOf(user1.address)).to.equal(assetsBefore + withdrawAmount); - }); - - it("Should allow withdrawal to different receiver", async function () { - await vault.connect(user1).withdraw(withdrawAmount, user2.address, user1.address); - - expect(await asset.balanceOf(user2.address)).to.equal(INITIAL_MINT + withdrawAmount); - }); - - it("Should allow withdrawal with allowance", async function () { - await vault.connect(user1).approve(user2.address, depositAmount); - await vault.connect(user2).withdraw(withdrawAmount, user2.address, user1.address); - - expect(await asset.balanceOf(user2.address)).to.equal(INITIAL_MINT + withdrawAmount); - }); - - it("Should revert on zero withdrawal", async function () { - await expect( - vault.connect(user1).withdraw(0, user1.address, user1.address) - ).to.be.revertedWith("UserVault: cannot withdraw 0"); - }); - - it("Should revert if receiver is zero address", async function () { - await expect( - vault.connect(user1).withdraw(withdrawAmount, ethers.ZeroAddress, user1.address) - ).to.be.revertedWith("UserVault: receiver is zero address"); - }); - - it("Should revert if owner is zero address", async function () { - await expect( - vault.connect(user1).withdraw(withdrawAmount, user1.address, ethers.ZeroAddress) - ).to.be.revertedWith("UserVault: owner is zero address"); - }); - - it("Should revert on insufficient allowance", async function () { - await expect( - vault.connect(user2).withdraw(withdrawAmount, user2.address, user1.address) - ).to.be.revertedWith("UserVault: insufficient allowance"); - }); - }); - - describe("Redeem", function () { - const depositAmount = ethers.parseEther("1000"); - const redeemShares = ethers.parseEther("500"); - - beforeEach(async function () { - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user1.address); - }); - - it("Should allow redeeming shares", async function () { - const assetsBefore = await asset.balanceOf(user1.address); - const assetsReceived = await vault.previewRedeem(redeemShares); - - await expect(vault.connect(user1).redeem(redeemShares, user1.address, user1.address)) - .to.emit(vault, "Withdraw"); - - expect(await vault.balanceOf(user1.address)).to.equal(depositAmount - redeemShares); - expect(await asset.balanceOf(user1.address)).to.equal(assetsBefore + assetsReceived); - }); - - it("Should allow redeeming to different receiver", async function () { - await vault.connect(user1).redeem(redeemShares, user2.address, user1.address); - - expect(await vault.balanceOf(user1.address)).to.equal(depositAmount - redeemShares); - }); - - it("Should allow redeeming with allowance", async function () { - await vault.connect(user1).approve(user2.address, redeemShares); - await vault.connect(user2).redeem(redeemShares, user2.address, user1.address); - - expect(await vault.balanceOf(user1.address)).to.equal(depositAmount - redeemShares); - }); - - it("Should revert on zero redeem", async function () { - await expect( - vault.connect(user1).redeem(0, user1.address, user1.address) - ).to.be.revertedWith("UserVault: cannot redeem 0"); - }); - - it("Should revert on insufficient allowance", async function () { - await expect( - vault.connect(user2).redeem(redeemShares, user2.address, user1.address) - ).to.be.revertedWith("UserVault: insufficient allowance"); - }); - }); - - describe("Conversion Functions", function () { - const depositAmount = ethers.parseEther("1000"); - - beforeEach(async function () { - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user1.address); - }); - - it("Should convert assets to shares correctly", async function () { - const shares = await vault.convertToShares(depositAmount); - expect(shares).to.equal(depositAmount); // 1:1 ratio when no yield - }); - - it("Should convert shares to assets correctly", async function () { - const assets = await vault.convertToAssets(depositAmount); - expect(assets).to.equal(depositAmount); // 1:1 ratio when no yield - }); - - it("Should handle conversions with yield", async function () { - // Add yield - const yieldAmount = ethers.parseEther("100"); - await asset.mint(await vault.getAddress(), yieldAmount); - - const shares = await vault.convertToShares(depositAmount); - expect(shares).to.be.lt(depositAmount); // Less shares due to increased value - - const assets = await vault.convertToAssets(depositAmount); - expect(assets).to.be.gt(depositAmount); // More assets per share - }); - }); - - describe("Preview Functions", function () { - const depositAmount = ethers.parseEther("1000"); - - beforeEach(async function () { - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user1.address); - }); - - it("Should preview deposit correctly", async function () { - const shares = await vault.previewDeposit(depositAmount); - expect(shares).to.equal(depositAmount); - }); - - it("Should preview mint correctly", async function () { - const assets = await vault.previewMint(depositAmount); - expect(assets).to.equal(depositAmount); - }); - - it("Should preview withdraw correctly", async function () { - const shares = await vault.previewWithdraw(depositAmount); - expect(shares).to.equal(depositAmount); - }); - - it("Should preview redeem correctly", async function () { - const assets = await vault.previewRedeem(depositAmount); - expect(assets).to.equal(depositAmount); - }); - }); - - describe("Max Functions", function () { - const depositAmount = ethers.parseEther("1000"); - - beforeEach(async function () { - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user1.address); - }); - - it("Should return max deposit", async function () { - expect(await vault.maxDeposit(user1.address)).to.equal(ethers.MaxUint256); - }); - - it("Should return max mint", async function () { - expect(await vault.maxMint(user1.address)).to.equal(ethers.MaxUint256); - }); - - it("Should return max withdraw", async function () { - const maxWithdraw = await vault.maxWithdraw(user1.address); - expect(maxWithdraw).to.equal(depositAmount); - }); - - it("Should return max redeem", async function () { - const maxRedeem = await vault.maxRedeem(user1.address); - expect(maxRedeem).to.equal(depositAmount); - }); - }); - - describe("Edge Cases", function () { - it("Should handle multiple users depositing and withdrawing", async function () { - const amount1 = ethers.parseEther("1000"); - const amount2 = ethers.parseEther("2000"); - - // User1 deposits - await asset.connect(user1).approve(await vault.getAddress(), amount1); - await vault.connect(user1).deposit(amount1, user1.address); - - // User2 deposits - await asset.connect(user2).approve(await vault.getAddress(), amount2); - await vault.connect(user2).deposit(amount2, user2.address); - - expect(await vault.totalAssets()).to.equal(amount1 + amount2); - - // User1 withdraws - await vault.connect(user1).redeem(amount1, user1.address, user1.address); - expect(await vault.balanceOf(user1.address)).to.equal(0); - - // User2 still has shares - expect(await vault.balanceOf(user2.address)).to.equal(amount2); - }); - - it("Should handle share transfers", async function () { - const depositAmount = ethers.parseEther("1000"); - - await asset.connect(user1).approve(await vault.getAddress(), depositAmount); - await vault.connect(user1).deposit(depositAmount, user1.address); - - // Transfer shares - await vault.connect(user1).transfer(user2.address, depositAmount / 2n); - - expect(await vault.balanceOf(user1.address)).to.equal(depositAmount / 2n); - expect(await vault.balanceOf(user2.address)).to.equal(depositAmount / 2n); - - // User2 can redeem transferred shares - await vault.connect(user2).redeem(depositAmount / 2n, user2.address, user2.address); - expect(await vault.balanceOf(user2.address)).to.equal(0); - }); - }); -}); diff --git a/smartcontract/test/VaultFactory.test.ts b/smartcontract/test/VaultFactory.test.ts deleted file mode 100644 index 34567a6..0000000 --- a/smartcontract/test/VaultFactory.test.ts +++ /dev/null @@ -1,333 +0,0 @@ -import { expect } from "chai"; -import { ethers } from "hardhat"; -import { VaultFactory } from "../typechain-types"; -import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { time } from "@nomicfoundation/hardhat-network-helpers"; - -describe("VaultFactory - User Registration", function () { - let factory: VaultFactory; - let owner: SignerWithAddress; - let user1: SignerWithAddress; - let user2: SignerWithAddress; - let user3: SignerWithAddress; - - beforeEach(async function () { - [owner, user1, user2, user3] = await ethers.getSigners(); - - // Deploy VaultFactory - const VaultFactoryFactory = await ethers.getContractFactory("VaultFactory"); - factory = await VaultFactoryFactory.deploy(owner.address); - await factory.waitForDeployment(); - }); - - describe("Deployment", function () { - it("Should set the correct owner", async function () { - expect(await factory.owner()).to.equal(owner.address); - }); - - it("Should set correct constants", async function () { - expect(await factory.MAX_USERNAME_LENGTH()).to.equal(20); - expect(await factory.MAX_BIO_LENGTH()).to.equal(30); - }); - }); - - describe("User Registration", function () { - const validUsername = "Alice"; - const validBio = "DeFi enthusiast"; - - it("Should allow user to register with valid username and bio", async function () { - await expect(factory.connect(user1).registerUser(validUsername, validBio)) - .to.emit(factory, "UserRegistered") - .withArgs(user1.address, validUsername, await time.latest() + 1); - - expect(await factory.isUserRegistered(user1.address)).to.be.true; - }); - - it("Should store username correctly", async function () { - await factory.connect(user1).registerUser(validUsername, validBio); - expect(await factory.getUsername(user1.address)).to.equal(validUsername); - }); - - it("Should store bio correctly", async function () { - await factory.connect(user1).registerUser(validUsername, validBio); - expect(await factory.getBio(user1.address)).to.equal(validBio); - }); - - it("Should store registration timestamp", async function () { - const tx = await factory.connect(user1).registerUser(validUsername, validBio); - const receipt = await tx.wait(); - const block = await ethers.provider.getBlock(receipt!.blockNumber); - - expect(await factory.getRegistrationTimestamp(user1.address)).to.equal(block!.timestamp); - }); - - it("Should return complete user info", async function () { - await factory.connect(user1).registerUser(validUsername, validBio); - const [username, bio, timestamp] = await factory.getUserInfo(user1.address); - - expect(username).to.equal(validUsername); - expect(bio).to.equal(validBio); - expect(timestamp).to.be.gt(0); - }); - - it("Should allow registration with empty bio", async function () { - await expect(factory.connect(user1).registerUser(validUsername, "")) - .to.emit(factory, "UserRegistered"); - - expect(await factory.getBio(user1.address)).to.equal(""); - }); - - it("Should allow multiple users to register", async function () { - await factory.connect(user1).registerUser("Alice", "Bio1"); - await factory.connect(user2).registerUser("Bob", "Bio2"); - await factory.connect(user3).registerUser("Charlie", "Bio3"); - - expect(await factory.isUserRegistered(user1.address)).to.be.true; - expect(await factory.isUserRegistered(user2.address)).to.be.true; - expect(await factory.isUserRegistered(user3.address)).to.be.true; - - expect(await factory.getUsername(user1.address)).to.equal("Alice"); - expect(await factory.getUsername(user2.address)).to.equal("Bob"); - expect(await factory.getUsername(user3.address)).to.equal("Charlie"); - }); - }); - - describe("Username Validation", function () { - it("Should revert on empty username", async function () { - await expect( - factory.connect(user1).registerUser("", "Valid bio") - ).to.be.revertedWithCustomError(factory, "EmptyUsername"); - }); - - it("Should accept username with exactly 20 characters", async function () { - const username20 = "12345678901234567890"; // Exactly 20 chars - await expect(factory.connect(user1).registerUser(username20, "Bio")) - .to.emit(factory, "UserRegistered"); - }); - - it("Should revert on username with 21 characters", async function () { - const username21 = "123456789012345678901"; // 21 chars - await expect( - factory.connect(user1).registerUser(username21, "Bio") - ).to.be.revertedWithCustomError(factory, "UsernameTooLong"); - }); - - it("Should accept username with 1 character", async function () { - await expect(factory.connect(user1).registerUser("A", "Bio")) - .to.emit(factory, "UserRegistered"); - }); - - it("Should handle special characters in username", async function () { - await expect(factory.connect(user1).registerUser("Alice_123", "Bio")) - .to.emit(factory, "UserRegistered"); - }); - - it("Should handle unicode characters in username", async function () { - await expect(factory.connect(user1).registerUser("AliceπŸš€", "Bio")) - .to.emit(factory, "UserRegistered"); - }); - }); - - describe("Bio Validation", function () { - it("Should accept bio with exactly 30 characters", async function () { - const bio30 = "123456789012345678901234567890"; // Exactly 30 chars - await expect(factory.connect(user1).registerUser("Alice", bio30)) - .to.emit(factory, "UserRegistered"); - }); - - it("Should revert on bio with 31 characters", async function () { - const bio31 = "1234567890123456789012345678901"; // 31 chars - await expect( - factory.connect(user1).registerUser("Alice", bio31) - ).to.be.revertedWithCustomError(factory, "BioTooLong"); - }); - - it("Should accept empty bio", async function () { - await expect(factory.connect(user1).registerUser("Alice", "")) - .to.emit(factory, "UserRegistered"); - }); - - it("Should handle special characters in bio", async function () { - await expect(factory.connect(user1).registerUser("Alice", "DeFi & NFT lover!")) - .to.emit(factory, "UserRegistered"); - }); - - it("Should handle unicode characters in bio", async function () { - await expect(factory.connect(user1).registerUser("Alice", "Crypto enthusiast πŸš€")) - .to.emit(factory, "UserRegistered"); - }); - }); - - describe("Duplicate Registration", function () { - const username = "Alice"; - const bio = "DeFi enthusiast"; - - it("Should prevent duplicate registration", async function () { - await factory.connect(user1).registerUser(username, bio); - - await expect( - factory.connect(user1).registerUser("NewUsername", "NewBio") - ).to.be.revertedWithCustomError(factory, "AlreadyRegistered"); - }); - - it("Should not allow re-registration with same data", async function () { - await factory.connect(user1).registerUser(username, bio); - - await expect( - factory.connect(user1).registerUser(username, bio) - ).to.be.revertedWithCustomError(factory, "AlreadyRegistered"); - }); - - it("Should allow different users to use same username", async function () { - await factory.connect(user1).registerUser(username, "Bio1"); - await expect(factory.connect(user2).registerUser(username, "Bio2")) - .to.emit(factory, "UserRegistered"); - }); - }); - - describe("View Functions", function () { - const username = "Alice"; - const bio = "DeFi enthusiast"; - - beforeEach(async function () { - await factory.connect(user1).registerUser(username, bio); - }); - - describe("isUserRegistered", function () { - it("Should return true for registered user", async function () { - expect(await factory.isUserRegistered(user1.address)).to.be.true; - }); - - it("Should return false for unregistered user", async function () { - expect(await factory.isUserRegistered(user2.address)).to.be.false; - }); - }); - - describe("getUserInfo", function () { - it("Should return correct user info", async function () { - const [returnedUsername, returnedBio, timestamp] = await factory.getUserInfo(user1.address); - - expect(returnedUsername).to.equal(username); - expect(returnedBio).to.equal(bio); - expect(timestamp).to.be.gt(0); - }); - - it("Should revert for unregistered user", async function () { - await expect( - factory.getUserInfo(user2.address) - ).to.be.revertedWithCustomError(factory, "NotRegistered"); - }); - }); - - describe("getUsername", function () { - it("Should return correct username", async function () { - expect(await factory.getUsername(user1.address)).to.equal(username); - }); - - it("Should revert for unregistered user", async function () { - await expect( - factory.getUsername(user2.address) - ).to.be.revertedWithCustomError(factory, "NotRegistered"); - }); - }); - - describe("getBio", function () { - it("Should return correct bio", async function () { - expect(await factory.getBio(user1.address)).to.equal(bio); - }); - - it("Should revert for unregistered user", async function () { - await expect( - factory.getBio(user2.address) - ).to.be.revertedWithCustomError(factory, "NotRegistered"); - }); - }); - - describe("getRegistrationTimestamp", function () { - it("Should return valid timestamp", async function () { - const timestamp = await factory.getRegistrationTimestamp(user1.address); - expect(timestamp).to.be.gt(0); - }); - - it("Should revert for unregistered user", async function () { - await expect( - factory.getRegistrationTimestamp(user2.address) - ).to.be.revertedWithCustomError(factory, "NotRegistered"); - }); - }); - }); - - describe("Events", function () { - it("Should emit UserRegistered event with correct parameters", async function () { - const username = "Alice"; - const bio = "DeFi enthusiast"; - - const tx = await factory.connect(user1).registerUser(username, bio); - const receipt = await tx.wait(); - const block = await ethers.provider.getBlock(receipt!.blockNumber); - - await expect(tx) - .to.emit(factory, "UserRegistered") - .withArgs(user1.address, username, block!.timestamp); - }); - - it("Should emit event for each registration", async function () { - await expect(factory.connect(user1).registerUser("Alice", "Bio1")) - .to.emit(factory, "UserRegistered"); - - await expect(factory.connect(user2).registerUser("Bob", "Bio2")) - .to.emit(factory, "UserRegistered"); - }); - }); - - describe("Edge Cases", function () { - it("Should handle very long valid username (20 chars)", async function () { - const longUsername = "a".repeat(20); - await expect(factory.connect(user1).registerUser(longUsername, "Bio")) - .to.emit(factory, "UserRegistered"); - }); - - it("Should handle very long valid bio (30 chars)", async function () { - const longBio = "b".repeat(30); - await expect(factory.connect(user1).registerUser("Alice", longBio)) - .to.emit(factory, "UserRegistered"); - }); - - it("Should handle registration with whitespace in username", async function () { - await expect(factory.connect(user1).registerUser("Alice Smith", "Bio")) - .to.emit(factory, "UserRegistered"); - }); - - it("Should handle registration with whitespace in bio", async function () { - await expect(factory.connect(user1).registerUser("Alice", "DeFi enthusiast")) - .to.emit(factory, "UserRegistered"); - }); - - it("Should handle multiple registrations in same block", async function () { - // This tests that timestamps are correctly set even for same-block registrations - await factory.connect(user1).registerUser("Alice", "Bio1"); - await factory.connect(user2).registerUser("Bob", "Bio2"); - - const timestamp1 = await factory.getRegistrationTimestamp(user1.address); - const timestamp2 = await factory.getRegistrationTimestamp(user2.address); - - expect(timestamp1).to.be.gt(0); - expect(timestamp2).to.be.gt(0); - }); - }); - - describe("Gas Optimization", function () { - it("Should use custom errors for gas efficiency", async function () { - // Custom errors are more gas efficient than require strings - // This test verifies they are being used - await factory.connect(user1).registerUser("Alice", "Bio"); - - try { - await factory.connect(user1).registerUser("Bob", "Bio2"); - expect.fail("Should have reverted"); - } catch (error: any) { - expect(error.message).to.include("AlreadyRegistered"); - } - }); - }); -}); diff --git a/smartcontract/tsconfig.json b/smartcontract/tsconfig.json deleted file mode 100644 index fd68c60..0000000 --- a/smartcontract/tsconfig.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "module": "commonjs", - "lib": ["ES2020"], - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "./dist", - "rootDir": "./", - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "strictFunctionTypes": true, - "strictBindCallApply": true, - "strictPropertyInitialization": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "baseUrl": ".", - "paths": { - "@/*": ["./*"] - }, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true - }, - "include": [ - "./scripts/**/*", - "./test/**/*", - "./hardhat.config.ts" - ], - "exclude": [ - "node_modules", - "artifacts", - "cache", - "typechain-types" - ] -} diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..78d5636 --- /dev/null +++ b/vercel.json @@ -0,0 +1,7 @@ +{ + "version": 2, + "installCommand": "npm install --legacy-peer-deps", + "buildCommand": "npm run build", + "outputDirectory": "frontend/.next", + "framework": "nextjs" +}